Revision: 201011
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 15:05:20 +0300
changeset 25 98b66e4fb0be
parent 24 84a16765cd86
child 26 04d4a7bbc3e0
child 29 26b6f0522fd8
Revision: 201011 Kit: 201015
appinstall.pro
appinstall_info/appinstall_metadata/appinstall_metadata.mrp
appinstall_plat/appmngr2runtimeapi/src/appmngr2infobase.cpp
appinstall_plat/appmngr2runtimeapi/src/appmngr2infoiterator.cpp
appinstall_plat/appmngr2runtimeapi/src/appmngr2packageinfo.cpp
appinstall_plat/group/bld.inf
appinstall_plat/sifui_api/bwins/sifuiu.def
appinstall_plat/sifui_api/eabi/sifuiu.def
appinstall_plat/sifui_api/group/bld.inf
appinstall_plat/sifui_api/group/sifui.mmp
appinstall_plat/sifui_api/inc/sifui.h
appinstall_plat/sifui_api/inc/sifuidefs.h
appinstall_plat/sifui_api/src/sifui.cpp
appinstall_plat/sifui_api/tsrc/bwins/sifuitestu.def
appinstall_plat/sifui_api/tsrc/conf/sifuitestscripter.cfg
appinstall_plat/sifui_api/tsrc/eabi/sifuitestu.def
appinstall_plat/sifui_api/tsrc/group/bld.inf
appinstall_plat/sifui_api/tsrc/group/sifuitest.mmp
appinstall_plat/sifui_api/tsrc/group/sifuitest.pkg
appinstall_plat/sifui_api/tsrc/group/sifuitest_nrm.mmp
appinstall_plat/sifui_api/tsrc/inc/sifuidummydetailsprovider.h
appinstall_plat/sifui_api/tsrc/inc/sifuitest.h
appinstall_plat/sifui_api/tsrc/init/sifuitestscripter.ini
appinstall_plat/sifui_api/tsrc/src/sifuidummydetailsprovider.cpp
appinstall_plat/sifui_api/tsrc/src/sifuitest.cpp
appinstall_plat/sifui_api/tsrc/src/sifuitestcases.cpp
appinstaller/AppinstUi/Daemon/Inc/DialogWrapper.h
appinstaller/AppinstUi/Daemon/Inc/SilentLauncher.h
appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h
appinstaller/AppinstUi/Daemon/Inc/silentuninstaller.h
appinstaller/AppinstUi/Daemon/Src/DialogWrapper.cpp
appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp
appinstaller/AppinstUi/Daemon/Src/daemon.cpp
appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp
appinstaller/AppinstUi/Daemon/Src/daemoninstaller.cpp
appinstaller/AppinstUi/Daemon/Src/drivewatcher.cpp
appinstaller/AppinstUi/Daemon/Src/installationFailedAppsCache.cpp
appinstaller/AppinstUi/Daemon/Src/previouslyInstalledAppsCache.cpp
appinstaller/AppinstUi/Daemon/Src/programstatus.cpp
appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp
appinstaller/AppinstUi/Daemon/Src/versionRevisor.cpp
appinstaller/AppinstUi/Plugin/CommonUI/Src/CUIDialogs.cpp
appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUIHandler.cpp
appinstaller/AppinstUi/appinstui.pro
appinstaller/AppinstUi/group/bld.inf
appinstaller/AppinstUi/group/daemon.mmp
appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidevicedialogplugin.h
appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialog.h
appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialogcontentwidget.h
appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialogdefinitions.h
appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialogtitlewidget.h
appinstaller/AppinstUi/sifuidevicedialogplugin/loc/sifuidevicedialogplugin.ts
appinstaller/AppinstUi/sifuidevicedialogplugin/loc/sifuidevicedialogplugin.xls
appinstaller/AppinstUi/sifuidevicedialogplugin/resources/qgn_indi_midp_trusted.svg
appinstaller/AppinstUi/sifuidevicedialogplugin/resources/qgn_menu_am_sis.svg
appinstaller/AppinstUi/sifuidevicedialogplugin/rom/sifuidevicedialogplugin.iby
appinstaller/AppinstUi/sifuidevicedialogplugin/rom/sifuidevicedialogplugin_resources.iby
appinstaller/AppinstUi/sifuidevicedialogplugin/sifuidevicedialogplugin.pro
appinstaller/AppinstUi/sifuidevicedialogplugin/sifuidevicedialogplugin.qrc
appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidevicedialogplugin.cpp
appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialog.cpp
appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogcontentwidget.cpp
appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogtitlewidget.cpp
appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/tsrc.pro
appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/ut_sifuidevicedialog/ut_sifuidevicedialog.cpp
appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/ut_sifuidevicedialog/ut_sifuidevicedialog.h
appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/ut_sifuidevicedialog/ut_sifuidevicedialog.pro
appinstaller/AppinstUi/sifuiinstallindicatorplugin/inc/sifuiinstallindicator.h
appinstaller/AppinstUi/sifuiinstallindicatorplugin/inc/sifuiinstallindicatorparams.h
appinstaller/AppinstUi/sifuiinstallindicatorplugin/inc/sifuiinstallindicatorplugin.h
appinstaller/AppinstUi/sifuiinstallindicatorplugin/rom/sifuiinstallindicatorplugin.iby
appinstaller/AppinstUi/sifuiinstallindicatorplugin/sifuiinstallindicatorplugin.pro
appinstaller/AppinstUi/sifuiinstallindicatorplugin/sifuiinstallindicatorplugin.qcrml
appinstaller/AppinstUi/sifuiinstallindicatorplugin/src/sifuiinstallindicator.cpp
appinstaller/AppinstUi/sifuiinstallindicatorplugin/src/sifuiinstallindicatorplugin.cpp
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_compile_tests.bat
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_instrument_code.bat
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_remove_instrumentation.bat
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_run_tests.bat
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/mt_sifuiinstallindicator.cpp
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/mt_sifuiinstallindicator.h
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/mt_sifuiinstallindicator.pro
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/run_module_tests.bat
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindiapp.cpp
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindiapp.h
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindiapp.pro
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindimain.cpp
appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/tsrc.pro
appinstaller/AppinstUi/sisxsifplugin/data/20022FC1.rss
appinstaller/AppinstUi/sisxsifplugin/data/sisxsifuidata.rss
appinstaller/AppinstUi/sisxsifplugin/group/bld.inf
appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifcleanuputils.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsiflangname.rh
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugin.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugin.pan
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginactiveimpl.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifuilangname.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifuiselectioncache.h
appinstaller/AppinstUi/sisxsifplugin/loc/sisxsifui.loc
appinstaller/AppinstUi/sisxsifplugin/loc/sisxsifui.xls
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugin.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginmain.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifuilangname.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifuiselectioncache.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner.h
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.h
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/main.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.iby
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.pkg
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.pro
appinstaller/appinstaller.pro
appinstaller/group/bld.inf
iaupdate/IAD/bgcindicatorplugin/bgcindicatorplugin.pro
iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h
iaupdate/IAD/bgcindicatorplugin/inc/bgcindicatorplugin.h
iaupdate/IAD/bgcindicatorplugin/moc_bgcindicatorplugin.cpp
iaupdate/IAD/bgcindicatorplugin/qmakepluginstubs/bgcindicatorplugin.qtplugin
iaupdate/IAD/bgcindicatorplugin/resources/message.svg
iaupdate/IAD/bgcindicatorplugin/rom/bgcindicatorplugin.iby
iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp
iaupdate/IAD/bgcindicatorplugin/src/bgcindicatorplugin.cpp
iaupdate/IAD/engine/bwins/iaupdateengineu.def
iaupdate/IAD/engine/controller/inc/iaupdatebasenodeimpl.h
iaupdate/IAD/engine/controller/inc/iaupdatectrlconsts.h
iaupdate/IAD/engine/controller/inc/iaupdatenodecontainer.h
iaupdate/IAD/engine/controller/inc/iaupdateprotocolconsts.h
iaupdate/IAD/engine/controller/src/iaupdatebasenodeimpl.cpp
iaupdate/IAD/engine/controller/src/iaupdatenodecontainer.cpp
iaupdate/IAD/engine/controller/src/iaupdatenodeimpl.cpp
iaupdate/IAD/engine/controller/src/iaupdateutils.cpp
iaupdate/IAD/engine/eabi/iaupdateengineu.def
iaupdate/IAD/engine/group/bld.inf
iaupdate/IAD/engine/group/iaupdateengine.mmp
iaupdate/IAD/engine/group/iaupdateengineconfig_testing.xml
iaupdate/IAD/engine/inc/iaupdatebasenode.h
iaupdate/IAD/engine/inc/iaupdatenode.h
iaupdate/IAD/engine/inc/iaupdateutils.h
iaupdate/IAD/ui/group/iaupdate.mmp
iaupdate/IAD/ui/group/iaupdate.rss
iaupdate/IAD/ui/inc/iaupdatenodeid.h
iaupdate/IAD/ui/inc/iaupdateuicontroller.h
iaupdate/IAD/ui/src/iaupdatedetailsdialog.cpp
iaupdate/IAD/ui/src/iaupdatefwdetailsdialog.cpp
iaupdate/IAD/ui/src/iaupdatemaincontainer.cpp
iaupdate/IAD/ui/src/iaupdatemainview.cpp
iaupdate/IAD/ui/src/iaupdatenodefilter.cpp
iaupdate/IAD/ui/src/iaupdatenodeid.cpp
iaupdate/IAD/ui/src/iaupdateuicontroller.cpp
iaupdate/iaupdate.pro
iaupdate/rom/iaupdate_stub.SIS
iaupdate/rom/iaupdate_stub.pkg
iaupdateapi_stub/group/bld.inf
installationservices/refsoftwareappmgr/group/security_referenceapplicationmanager.mrp
installationservices/refswinstallationplugin/group/security_sifrefplugin.mrp
installationservices/refswinstallationplugin/source/1028634f.rss
installationservices/refswinstallationplugin/source/sifrefinstallertask.cpp
installationservices/refswinstallationplugin/test/scripts/tsifrefinstaller.ini
installationservices/swcomponentregistry/bwins/scrclientu.def
installationservices/swcomponentregistry/eabi/scrclientu.def
installationservices/swcomponentregistry/group/bld.inf
installationservices/swcomponentregistry/group/scrclient.mmp
installationservices/swcomponentregistry/group/scrserver.mmp
installationservices/swcomponentregistry/group/security_softwarecomponentregistry.mrp
installationservices/swcomponentregistry/inc/appregentries.h
installationservices/swcomponentregistry/inc/appreginfo.h
installationservices/swcomponentregistry/inc/scr.h
installationservices/swcomponentregistry/inc/scr.iby
installationservices/swcomponentregistry/inc/scrcommon.h
installationservices/swcomponentregistry/inc/screntries.h
installationservices/swcomponentregistry/inc/tscr.iby
installationservices/swcomponentregistry/inc_private/scr_internal.h
installationservices/swcomponentregistry/inc_private/scrclient.inl
installationservices/swcomponentregistry/inc_private/scrrepository.h
installationservices/swcomponentregistry/inc_private/scrrequestimpl.h
installationservices/swcomponentregistry/inc_private/scrserver.h
installationservices/swcomponentregistry/inc_private/scrsubsession.h
installationservices/swcomponentregistry/scrhelper/source/scrhelperserver.cpp
installationservices/swcomponentregistry/source/client/appregentries.cpp
installationservices/swcomponentregistry/source/client/appreginfo.cpp
installationservices/swcomponentregistry/source/client/scrclient.cpp
installationservices/swcomponentregistry/source/client/scrclientsubsessions.cpp
installationservices/swcomponentregistry/source/server/scrrepository.cpp
installationservices/swcomponentregistry/source/server/scrrequestimpl.cpp
installationservices/swcomponentregistry/source/server/scrserver.cpp
installationservices/swcomponentregistry/source/server/scrsession.cpp
installationservices/swcomponentregistry/source/server/scrsubsession.cpp
installationservices/swcomponentregistry/test/group/tscr.mmp
installationservices/swcomponentregistry/test/group/tscrapparc.mmp
installationservices/swcomponentregistry/test/testdb/create_db.xml
installationservices/swcomponentregistry/test/testdb/modifydb.sql
installationservices/swcomponentregistry/test/testdb/scr.db
installationservices/swcomponentregistry/test/testdb/scrdbschema.sql
installationservices/swcomponentregistry/test/testdb/update_db.dtd
installationservices/swcomponentregistry/test/testdb/update_db_production.xml
installationservices/swcomponentregistry/test/testdb/update_db_test.xml
installationservices/swcomponentregistry/test/tscr/inc/appreginfosteps.h
installationservices/swcomponentregistry/test/tscr/inc/componentquerysteps.h
installationservices/swcomponentregistry/test/tscr/inc/subsessionsteps.h
installationservices/swcomponentregistry/test/tscr/inc/tscrdefs.h
installationservices/swcomponentregistry/test/tscr/inc/tscrstep.h
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-differentbuildnumber.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-multiapp.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-newermajordbversion.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-newerminordbversion.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-noentriesinversiontable.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-noversiontable.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-oldermajordbversion.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr-olderminordbversion.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr_large.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr_medium.db
installationservices/swcomponentregistry/test/tscr/scripts/data/scr_small.db
installationservices/swcomponentregistry/test/tscr/scripts/tscr.ini
installationservices/swcomponentregistry/test/tscr/scripts/tscr.script
installationservices/swcomponentregistry/test/tscr/scripts/tscr_api.script
installationservices/swcomponentregistry/test/tscr/scripts/tscr_appreginfo.ini
installationservices/swcomponentregistry/test/tscr/scripts/tscr_appreginfo.script
installationservices/swcomponentregistry/test/tscr/scripts/tscr_oom.script
installationservices/swcomponentregistry/test/tscr/scripts/tscrapparc.script
installationservices/swcomponentregistry/test/tscr/source/appreginfosteps.cpp
installationservices/swcomponentregistry/test/tscr/source/componentmanagementsteps.cpp
installationservices/swcomponentregistry/test/tscr/source/componentquerysteps.cpp
installationservices/swcomponentregistry/test/tscr/source/installloghistorysteps.cpp
installationservices/swcomponentregistry/test/tscr/source/subsessionsteps.cpp
installationservices/swcomponentregistry/test/tscr/source/transactionmanagementsteps.cpp
installationservices/swcomponentregistry/test/tscr/source/tscrserver.cpp
installationservices/swcomponentregistry/test/tscr/source/tscrstep.cpp
installationservices/swcomponentregistry/test/tscrapparc/inc/appreginfoapparcsteps.h
installationservices/swcomponentregistry/test/tscrapparc/inc/tscrapparcserver.h
installationservices/swcomponentregistry/test/tscrapparc/source/appreginfoapparcsteps.cpp
installationservices/swcomponentregistry/test/tscrapparc/source/tscrapparcserver.cpp
installationservices/swi/bwins/SecurityManager_v2U.DEF
installationservices/swi/bwins/apprscparseru.def
installationservices/swi/bwins/planU.DEF
installationservices/swi/bwins/plan_legacyu.def
installationservices/swi/bwins/sislauncherclientU.DEF
installationservices/swi/bwins/sisregistryclient_v2U.def
installationservices/swi/bwins/swiutilsu.def
installationservices/swi/bwins/uissclientU.DEF
installationservices/swi/eabi/SecurityManager_v2U.DEF
installationservices/swi/eabi/apprscparseru.def
installationservices/swi/eabi/planU.DEF
installationservices/swi/eabi/plan_legacyu.def
installationservices/swi/eabi/sislauncherclientU.DEF
installationservices/swi/eabi/sisregistryclient_v2U.def
installationservices/swi/eabi/swiutilsu.def
installationservices/swi/eabi/uissclientU.DEF
installationservices/swi/group/apprscparser.mmp
installationservices/swi/group/bld.inf
installationservices/swi/group/installserver.mmp
installationservices/swi/group/plan.mmp
installationservices/swi/group/security_swi.mrp
installationservices/swi/group/sislauncherclient.mmp
installationservices/swi/group/sislauncherserver.mmh
installationservices/swi/group/sisregistryclient.mmp
installationservices/swi/group/swiutils.mmp
installationservices/swi/inc/scrhelperutil.h
installationservices/swi/inc/secutils.h
installationservices/swi/inc/sislauncherclient.h
installationservices/swi/inc/sisregistrywritablesession.h
installationservices/swi/inc/swi.iby
installationservices/swi/inc/swi/ipcutil.h
installationservices/swi/inc/swi/nativecomponentinfo.h
installationservices/swi/inc/swi/siscontroller.h
installationservices/swi/inc/swi/sisregistrysession.h
installationservices/swi/inc/swicenrep.h
installationservices/swi/inc/switextshell.iby
installationservices/swi/inc/tswi.iby
installationservices/swi/inc/tswitextshell.iby
installationservices/swi/source/apprscparser/apprscparser.cpp
installationservices/swi/source/apprscparser/apprscparser.h
installationservices/swi/source/certstoretobin/AppGen.pm
installationservices/swi/source/certstoretobin/Swicertstoretobin.pl
installationservices/swi/source/certstoretobin/Util.pm
installationservices/swi/source/plan/plan.cpp
installationservices/swi/source/plan/plan.h
installationservices/swi/source/securitymanager/secutils.cpp
installationservices/swi/source/sisfile/siscontroller.cpp
installationservices/swi/source/sishelper/uissclienthandler.cpp
installationservices/swi/source/sishelper/uissclienthandler.h
installationservices/swi/source/sislauncher/client/sislauncherclient.cpp
installationservices/swi/source/sislauncher/common/sislauncherclientserver.h
installationservices/swi/source/sislauncher/server/sislauncherserver.cpp
installationservices/swi/source/sislauncher/server/sislauncherserver.h
installationservices/swi/source/sislauncher/server/sislaunchersession.cpp
installationservices/swi/source/sislauncher/server/sislaunchersession.h
installationservices/swi/source/sisregistry/client/sisregistrysession.cpp
installationservices/swi/source/sisregistry/client/sisregistrywritablesession.cpp
installationservices/swi/source/sisregistry/common/sisregistryclientserver.h
installationservices/swi/source/sisregistry/server/scrhelperutil.cpp
installationservices/swi/source/sisregistry/server/sisregistryserverconst.h
installationservices/swi/source/sisregistry/server/sisregistryserversession.cpp
installationservices/swi/source/sisregistry/server/sisregistryserversession.h
installationservices/swi/source/sisregistry/server/sisrevocationmanager.cpp
installationservices/swi/source/swis/server/appregextractor.cpp
installationservices/swi/source/swis/server/appregextractor.h
installationservices/swi/source/swis/server/installationplanner.cpp
installationservices/swi/source/swis/server/installationprocessor.cpp
installationservices/swi/source/swis/server/installationprocessor.h
installationservices/swi/source/swis/server/installmachine.cpp
installationservices/swi/source/swis/server/installserver.cpp
installationservices/swi/source/swis/server/installserver.h
installationservices/swi/source/swis/server/planner.cpp
installationservices/swi/source/swis/server/planner.h
installationservices/swi/source/swis/server/processor.cpp
installationservices/swi/source/swis/server/processor.h
installationservices/swi/source/swis/server/restoremachine.cpp
installationservices/swi/source/swis/server/restoremachine.h
installationservices/swi/source/swis/server/uninstallationprocessor.cpp
installationservices/swi/source/swis/server/uninstallationprocessor.h
installationservices/swi/source/swis/server/uninstallmachine.cpp
installationservices/swi/source/swis/server/uninstallmachine.h
installationservices/swi/source/swiutils/swiutils.cpp
installationservices/swi/source/swiutils/swiutils.h
installationservices/swi/source/uiss/client/nativecomponentinfo.cpp
installationservices/swi/source/upsswiobsplugin/source/10283725.rss
installationservices/swi/test/swicaptests/swicaptests.mmp
installationservices/swi/test/tautosigning/tautosigning.ini
installationservices/swi/test/tautosigning/tautosigning.script
installationservices/swi/test/tbackuprestore/scripts/ini
installationservices/swi/test/tbackuprestore/scripts/ini_armv5
installationservices/swi/test/tbackuprestore/scripts/tbackuprestore.script
installationservices/swi/test/tbackuprestore/scripts/tbackuprestore_armv5.script
installationservices/swi/test/testexes/bld.inf
installationservices/swi/test/testexes/interpretsis_testcase/01/01-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase/01/icon24.bmp
installationservices/swi/test/testexes/interpretsis_testcase/03/03-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase/03/icon24.bmp
installationservices/swi/test/testexes/interpretsis_testcase/04/04-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase/04/icon24.bmp
installationservices/swi/test/testexes/interpretsis_testcase/24/24-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase/24/icon24.bmp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase.h
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase.hrh
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_01.mmp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_01.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_01_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_02.mmp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_02.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_02_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_03.mmp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_03.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_03_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_04.mmp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_04.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_04_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_application.cpp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_appui.cpp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_appview.cpp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_document.cpp
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_dup_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_main.cpp
installationservices/swi/test/testexes/interpretsis_testcase_05/01/01-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_05/03/03-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_05/interpretsis_testcase_05.mmp
installationservices/swi/test/testexes/interpretsis_testcase_05/interpretsis_testcase_05.rss
installationservices/swi/test/testexes/interpretsis_testcase_05/interpretsis_testcase_05_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase_06/01/01-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_06/03/03-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_06/interpretsis_testcase_06.mmp
installationservices/swi/test/testexes/interpretsis_testcase_06/interpretsis_testcase_06.rss
installationservices/swi/test/testexes/interpretsis_testcase_06/interpretsis_testcase_06_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase_07/01/01-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_07/03/03-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_07/interpretsis_testcase_07.mmp
installationservices/swi/test/testexes/interpretsis_testcase_07/interpretsis_testcase_07.rss
installationservices/swi/test/testexes/interpretsis_testcase_07/interpretsis_testcase_07_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase_08/01/01-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_08/03/03-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_08/interpretsis_testcase_08.mmp
installationservices/swi/test/testexes/interpretsis_testcase_08/interpretsis_testcase_08.rss
installationservices/swi/test/testexes/interpretsis_testcase_08/interpretsis_testcase_08_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase_09/01/01-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_09/03/03-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_09/interpretsis_testcase_09.mmp
installationservices/swi/test/testexes/interpretsis_testcase_09/interpretsis_testcase_09.rss
installationservices/swi/test/testexes/interpretsis_testcase_09/interpretsis_testcase_09_reg.rss
installationservices/swi/test/testexes/interpretsis_testcase_10/01/01-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_10/03/03-strings.rls
installationservices/swi/test/testexes/interpretsis_testcase_10/interpretsis_testcase_10.mmp
installationservices/swi/test/testexes/interpretsis_testcase_10/interpretsis_testcase_10.rss
installationservices/swi/test/testexes/interpretsis_testcase_10/interpretsis_testcase_10_reg.rss
installationservices/swi/test/testexes/packages/swiappregintegration01.pkg
installationservices/swi/test/testexes/packages/swiappregintegration03_opaque.pkg
installationservices/swi/test/testexes/packages/swiappregintegration04_noappfile.pkg
installationservices/swi/test/testexes/packages/swiappregintegration04_noappuid.pkg
installationservices/swi/test/testexes/packages/swiappregintegration04_wronguid2.pkg
installationservices/swi/test/testexes/packages/swiappregintegration_base01.pkg
installationservices/swi/test/testexes/packages/swiappregintegration_base01_pu.pkg
installationservices/swi/test/testexes/packages/swiappregintegration_base01_sp.pkg
installationservices/swi/test/testexes/packages/swiappregintegration_base02.pkg
installationservices/swi/test/testexes/packages/swiappregintegration_base02_ru.pkg
installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase.pkg
installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_05.pkg
installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_06.pkg
installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_07.pkg
installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_08.pkg
installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_09.pkg
installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_10.pkg
installationservices/swi/test/testexes/prepareexes.pl
installationservices/swi/test/testexes/tswiappregintegration/base01/01-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/base01/02-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/base01/03-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/base01/04-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/base01/rsc-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/base01/swiappregintegration_base01_loc.rss
installationservices/swi/test/testexes/tswiappregintegration/base01/swiappregintegration_base01_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/bld.inf
installationservices/swi/test/testexes/tswiappregintegration/case01/01-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case01/03-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case01/24-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case01/rsc-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case01/swiappregintegration01_loc.rss
installationservices/swi/test/testexes/tswiappregintegration/case01/swiappregintegration01_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/case02/01-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case02/rsc-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case02/swiappregintegration02_loc.rss
installationservices/swi/test/testexes/tswiappregintegration/case02/swiappregintegration02_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/case03/01-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case03/24-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case03/rsc-strings.rls
installationservices/swi/test/testexes/tswiappregintegration/case03/swiappregintegration03_loc.rss
installationservices/swi/test/testexes/tswiappregintegration/case03/swiappregintegration03_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_loc.rss
installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_noappfile_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_noappuid_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_wronguid2_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/fotaupdateapp1_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/fotaupdateapp2_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/fotaupdatestubapp1_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/fotaupdatestubapp2_reg.rss
installationservices/swi/test/testexes/tswiappregintegration/icon3m.bmp
installationservices/swi/test/testexes/tswiappregintegration/swiappregintegration.cpp
installationservices/swi/test/testexes/tswiappregintegration/swiappregintegration.h
installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration01.mmp
installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration02.mmp
installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration03.mmp
installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration04.mmp
installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration_base01.mmp
installationservices/swi/test/trevocation/makeAllInteg.bat
installationservices/swi/test/trevocation/pkgInteg/armv5/signingtest.pkg
installationservices/swi/test/trevocation/pkgInteg/winscw/signingtest.pkg
installationservices/swi/test/trevocation/scripts/tRevocation.ini
installationservices/swi/test/trevocation/scripts/trevocationocsp_emulator.script
installationservices/swi/test/trevocation/scripts/trevocationocsp_emulator_post.bat
installationservices/swi/test/trevocation/scripts/trevocationocsp_emulator_pre.bat
installationservices/swi/test/trevocation/signFiles.bat
installationservices/swi/test/trevocation/sisInteg/armv5/allsignedrev.sis
installationservices/swi/test/trevocation/sisInteg/armv5/allsignedval.sis
installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedrev.sis
installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedval.sis
installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedverisignrev.sis
installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedverisignval.sis
installationservices/swi/test/trevocation/sisInteg/armv5/expresssignedrev.sis
installationservices/swi/test/trevocation/sisInteg/armv5/expresssignedval.sis
installationservices/swi/test/trevocation/sisInteg/armv5/selfsignedrev.sis
installationservices/swi/test/trevocation/sisInteg/armv5/selfsignedval.sis
installationservices/swi/test/trevocation/sisInteg/winscw/allsignedrev.sis
installationservices/swi/test/trevocation/sisInteg/winscw/allsignedval.sis
installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedrev.sis
installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedval.sis
installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedverisignrev.sis
installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedverisignval.sis
installationservices/swi/test/trevocation/sisInteg/winscw/expresssignedrev.sis
installationservices/swi/test/trevocation/sisInteg/winscw/expresssignedval.sis
installationservices/swi/test/trevocation/sisInteg/winscw/selfsignedrev.sis
installationservices/swi/test/trevocation/sisInteg/winscw/selfsignedval.sis
installationservices/swi/test/trevocation/swicertstore.dat
installationservices/swi/test/tsisfile/data/dependentonsample.pkg
installationservices/swi/test/tsisfile/data/embedselfsign.pkg
installationservices/swi/test/tsisfile/data/embedspsainsp.pkg
installationservices/swi/test/tsisfile/data/filebapu.pkg
installationservices/swi/test/tsisfile/data/files/2-2selfsigneddata.pkg
installationservices/swi/test/tsisfile/data/filesp4.pkg
installationservices/swi/test/tsisfile/data/makeall.bat
installationservices/swi/test/tsisfile/data/signedsis/Howto generate certificate chains.txt
installationservices/swi/test/tsisfile/data/signedsis/SymbianTestRootCADiffSerial/How to create root certficate.txt
installationservices/swi/test/tsisfile/data/signedsis/sucert/How to create root certficate.txt
installationservices/swi/test/tsisfile/data/signedsis/symbiantestallcapabilitiesca/How to create root certficate.txt
installationservices/swi/test/tsisfile/data/uembed18uid.pkg
installationservices/swi/test/tsisfile/data/umultilevelembed.pkg
installationservices/swi/test/tsishelper/tsishelperserver.mmp
installationservices/swi/test/tsisregistrytest/Scripts/removeregistrytestdata.script
installationservices/swi/test/tsisregistrytest/sessionstep.cpp
installationservices/swi/test/tsisregistrytest/sessionstep.h
installationservices/swi/test/tsisregistrytest/tsisregistrytest.cpp
installationservices/swi/test/tsisregistrytest/tsisregistrytest.mmp
installationservices/swi/test/tsisregistrytest/tsisregistryteststep.h
installationservices/swi/test/tsisregistrytest_legacy/Scripts/tsisregistrytest.script
installationservices/swi/test/tsisregistrytest_legacy/sessionstep.cpp
installationservices/swi/test/tsisregistrytest_legacy/sessionstep.h
installationservices/swi/test/tsisregistrytest_legacy/tsisregistrytest.cpp
installationservices/swi/test/tsisregistrytest_legacy/tsisregistrytest.mmp
installationservices/swi/test/tsisregistrytest_legacy/tsisregistryteststep.h
installationservices/swi/test/tswiobserver/refswiobsplugin/group/refswiobsplugin.mmp
installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate1_post.bat
installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate1_pre.bat
installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate2_post.bat
installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate2_pre.bat
installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_post.bat
installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_pre.bat
installationservices/swi/test/tuiscriptadaptors/scripts/fotaupdatestubapp1.sis
installationservices/swi/test/tuiscriptadaptors/scripts/fotaupdatestubapp2.sis
installationservices/swi/test/tuiscriptadaptors/scripts/swiappregintegration_base01_stub.sis
installationservices/swi/test/tuiscriptadaptors/scripts/testdevicelanguages.ini
installationservices/swi/test/tuiscriptadaptors/scripts/testdevicelanguages.script
installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate.ini
installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate1.script
installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate2.script
installationservices/swi/test/tuiscriptadaptors/scripts/tswiappregintegration.ini
installationservices/swi/test/tuiscriptadaptors/scripts/tswiappregintegration.script
installationservices/swi/test/tuiscriptadaptors/scripts/tswiappregintegration_stub.script
installationservices/swi/test/tuiscriptadaptors/scripts/tuiscriptadaptors_winscw.script
installationservices/swi/test/tuiscriptadaptors/tswisserver.cpp
installationservices/swi/test/tuiscriptadaptors/tswisstep.cpp
installationservices/swi/test/tuiscriptadaptors/tswisstep.h
installationservices/swi/test/tuiscriptadaptors/tuiscriptadaptors.mmh
installationservices/swiconfig/conf/appinstallconfig.confml
installationservices/swiconfig/conf/appinstallconfig_2002cff6.crml
installationservices/swiconfig/group/bld.inf
installationservices/swiconfig/group/install_config.mrp
installationservices/swiconfig/swi/2002cff6.txt
installationservices/swiconfig/swi/swiconfig.iby
installationservices/swiconfig/usif/scr/10285bc0.txt
installationservices/swiconfig/usif/scr/scr.db
installationservices/swiconfig/usif/scr/update_db_production.xml
installationservices/swidevicetools/group/security_switools_device.mrp
installationservices/swinstallationfw/bwins/siftransportu.def
installationservices/swinstallationfw/bwins/sifu.def
installationservices/swinstallationfw/bwins/sifutilsu.def
installationservices/swinstallationfw/common/inc/usifcommon.h
installationservices/swinstallationfw/common/inc/usiferror.h
installationservices/swinstallationfw/eabi/siftransportu.def
installationservices/swinstallationfw/eabi/sifu.def
installationservices/swinstallationfw/eabi/sifutilsu.def
installationservices/swinstallationfw/group/bld.inf
installationservices/swinstallationfw/group/security_softwareinstallframework.mrp
installationservices/swinstallationfw/group/sifutils.mmp
installationservices/swinstallationfw/inc/sif.iby
installationservices/swinstallationfw/inc/sifcommon.h
installationservices/swinstallationfw/inc/sifutils.h
installationservices/swinstallationfw/inc/tsif.iby
installationservices/swinstallationfw/source/sifcommon.cpp
installationservices/swinstallationfw/source/sifutils.cpp
installationservices/swinstallationfw/test/plugins/nonnativeplugin/source/testnonnativeplugin.cpp
installationservices/swinstallationfw/test/scripts/tsif.ini
installationservices/swinstallationfw/test/scripts/tsif.script
installationservices/swinstallationfw/test/securitytests/eabi/usifsecuritytestsu.def
installationservices/swinstallationfw/test/securitytests/group/usifsecuritytests.mmp
installationservices/swinstallationfw/test/securitytests/inc/scrapparccomponentspecific.h
installationservices/swinstallationfw/test/securitytests/scripts/usifsecuritytests.ini
installationservices/swinstallationfw/test/securitytests/scripts/usifsecuritytests.script
installationservices/swinstallationfw/test/securitytests/source/scrapparccomponentspecific.cpp
installationservices/swinstallationfw/test/securitytests/source/scrcomponentspecific.cpp
installationservices/swinstallationfw/test/securitytests/source/scrnonrestricted.cpp
installationservices/swinstallationfw/test/securitytests/source/usifsecuritytests.cpp
installationservices/swinstallationfw/test/tusif/group/createleesisfiles.pl
installationservices/swinstallationfw/test/tusif/group/createsisfiles.bat
installationservices/swinstallationfw/test/tusif/group/sifgetcompapparcinfotest.mmp
installationservices/swinstallationfw/test/tusif/group/sifgetcompapparcinfotestmultilang.mmp
installationservices/swinstallationfw/test/tusif/group/sifgetcompinfotest1.mmp
installationservices/swinstallationfw/test/tusif/scripts/data/corrupt_reg.rsc
installationservices/swinstallationfw/test/tusif/scripts/data/embeddedinnerwithupgrade.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/embeddedinnerwithupgradeouterasbasewithdrivedialog.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotest.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotest_corruptrsc.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotest_nolocale.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestembedded_innerwithdifficon.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultiapp.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultiapp_oneappwithnonapparcrsc.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultifiles.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultifiles_largeandsmallextn.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultilang.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestnonapparcpath.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestnonapparcrsc.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompinfotest1.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifintegrationtestbasewithdrivedialog.pkg
installationservices/swinstallationfw/test/tusif/scripts/data/sifintegrationtestupgradewithdrivedialog.pkg
installationservices/swinstallationfw/test/tusif/scripts/tsif_appuidgen.ini
installationservices/swinstallationfw/test/tusif/scripts/tsif_appuidgen.script
installationservices/swinstallationfw/test/tusif/scripts/tsifintegration.ini
installationservices/swinstallationfw/test/tusif/scripts/tsifintegration.script
installationservices/swinstallationfw/test/tusif/source/01/01-strings.rls
installationservices/swinstallationfw/test/tusif/source/03/03-strings.rls
installationservices/swinstallationfw/test/tusif/source/04/04-strings.rls
installationservices/swinstallationfw/test/tusif/source/24/24-strings.rls
installationservices/swinstallationfw/test/tusif/source/icon3m.bmp
installationservices/swinstallationfw/test/tusif/source/rsc/rsc-strings.rls
installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotest_loc.rss
installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotest_reg.rss
installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotestmultilang_loc.rss
installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotestmultilang_reg.rss
installationservices/swinstallationfw/test/tusif/source/sifgetcompinfotest1_loc.rss
installationservices/swinstallationfw/test/tusif/source/sifgetcompinfotest1_reg.rss
installationservices/swinstallationfw/test/tusif/source/tsifcommonunitteststep.cpp
installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.cpp
installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.h
installationservices/swinstallationfw/test/tusif/source/tsifsuitedefs.h
installationservices/switestfw/group/install_testframework.mrp
installationservices/switestfw/test/autotesting/runswiromtests_9.6.bat
installationservices/switestfw/test/autotesting/test_spec_apr_9.5.txt
installationservices/swtransactionservices/group/security_softwaretransactionservices.mrp
layers.sysdef.xml
ncdengine/engine/inc/catalogsconstants.h
ncdengine/engine/transport/inc/catalogshttpdownload.h
ncdengine/engine/transport/src/catalogshttpdownload.cpp
ncdengine/inc/catalogsconstants.h
ncdengine/inc/ncdnodecontentinfo.h
ncdengine/provider/client/inc/ncdnodecontentinfoproxy.h
ncdengine/provider/client/src/ncdnodecontentinfoproxy.cpp
ncdengine/provider/client/src/ncdsilentinstalloperationproxy.cpp
ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h
ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h
ncdengine/provider/deviceinteraction/inc/ncdwidgetregistrydata.h
ncdengine/provider/deviceinteraction/src/ncddeviceserviceimpl.cpp
ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp
ncdengine/provider/server/inc/ncdinstallinfo.h
ncdengine/provider/server/inc/ncdnodecontentinfoimpl.h
ncdengine/provider/server/inc/ncdproviderutils.h
ncdengine/provider/server/src/ncdinstalloperationimpl.cpp
ncdengine/provider/server/src/ncdnodecontentinfoimpl.cpp
ncdengine/provider/server/src/ncdnodeinstallimpl.cpp
ncdengine/provider/server/src/ncdnodemetadataimpl.cpp
ncdengine/provider/server/src/ncdproviderutils.cpp
secureswitools/makekeys/group/security_makekeys.mrp
secureswitools/makekeys/src/MAKEKEYS.CPP
secureswitools/makekeys/src/openssllicense.h
secureswitools/swianalysistoolkit/group/security_switools.mrp
secureswitools/swianalysistoolkit/source/common/symbiantypes.h
secureswitools/swisistools/group/bld.inf
secureswitools/swisistools/group/interpretsis.mmp
secureswitools/swisistools/group/interpretsislib.mmp
secureswitools/swisistools/group/security_sistools.mrp
secureswitools/swisistools/source/dbmanager/dblayer.cpp
secureswitools/swisistools/source/dbmanager/dblayer.h
secureswitools/swisistools/source/dumpsis/options.cpp
secureswitools/swisistools/source/interpretsis/commandparser.cpp
secureswitools/swisistools/source/interpretsis/main.cpp
secureswitools/swisistools/source/interpretsis/openssllicense.h
secureswitools/swisistools/source/interpretsislib/dbconstants.cpp
secureswitools/swisistools/source/interpretsislib/dbconstants.h
secureswitools/swisistools/source/interpretsislib/dbhelper.cpp
secureswitools/swisistools/source/interpretsislib/dbhelper.h
secureswitools/swisistools/source/interpretsislib/errors.h
secureswitools/swisistools/source/interpretsislib/filedescription.cpp
secureswitools/swisistools/source/interpretsislib/filedescription.h
secureswitools/swisistools/source/interpretsislib/installer.cpp
secureswitools/swisistools/source/interpretsislib/installer.h
secureswitools/swisistools/source/interpretsislib/interpretsis.cpp
secureswitools/swisistools/source/interpretsislib/interpretsis.h
secureswitools/swisistools/source/interpretsislib/parameterlist.cpp
secureswitools/swisistools/source/interpretsislib/parameterlist.h
secureswitools/swisistools/source/interpretsislib/sisregistry.cpp
secureswitools/swisistools/source/interpretsislib/sisregistry.h
secureswitools/swisistools/source/interpretsislib/sisregistryobject.cpp
secureswitools/swisistools/source/interpretsislib/xmlgenerator.cpp
secureswitools/swisistools/source/interpretsislib/xmlgenerator.h
secureswitools/swisistools/source/makesis/makesis.cpp
secureswitools/swisistools/source/makesis/makesis.h
secureswitools/swisistools/source/makesis/openssllicense.h
secureswitools/swisistools/source/makesislib/packageparser.cpp
secureswitools/swisistools/source/makesislib/packageparser.h
secureswitools/swisistools/source/rscparser/apaid.cpp
secureswitools/swisistools/source/rscparser/apaid.h
secureswitools/swisistools/source/rscparser/aplappinforeader.cpp
secureswitools/swisistools/source/rscparser/aplappinforeader.h
secureswitools/swisistools/source/rscparser/aplapplistitem.cpp
secureswitools/swisistools/source/rscparser/aplapplistitem.h
secureswitools/swisistools/source/rscparser/apmstd.cpp
secureswitools/swisistools/source/rscparser/apmstd.h
secureswitools/swisistools/source/rscparser/apsecutils.cpp
secureswitools/swisistools/source/rscparser/apsecutils.h
secureswitools/swisistools/source/rscparser/barsc2.cpp
secureswitools/swisistools/source/rscparser/barsc2.h
secureswitools/swisistools/source/rscparser/barscimpl.cpp
secureswitools/swisistools/source/rscparser/barscimpl.h
secureswitools/swisistools/source/rscparser/barsread2.cpp
secureswitools/swisistools/source/rscparser/barsread2.h
secureswitools/swisistools/source/rscparser/barsreadimpl.cpp
secureswitools/swisistools/source/rscparser/barsreadimpl.h
secureswitools/swisistools/source/rscparser/commontypes.cpp
secureswitools/swisistools/source/rscparser/commontypes.h
secureswitools/swisistools/source/rscparser/dirparse.cpp
secureswitools/swisistools/source/rscparser/dirparse.h
secureswitools/swisistools/source/rscparser/parse.cpp
secureswitools/swisistools/source/rscparser/parse.h
secureswitools/swisistools/source/rscparser/uidtype.cpp
secureswitools/swisistools/source/rscparser/uidtype.h
secureswitools/swisistools/source/scrtool/data/create_db.xml
secureswitools/swisistools/source/scrtool/data/preprovision.dtd
secureswitools/swisistools/source/scrtool/options.cpp
secureswitools/swisistools/source/signsis/openssllicense.h
secureswitools/swisistools/source/signsis/parameter.cpp
secureswitools/swisistools/source/sisxlibrary/utility_interface.h
secureswitools/swisistools/source/sisxlibrary/utility_linux.cpp
secureswitools/swisistools/source/sisxlibrary/utility_windows.cpp
secureswitools/swisistools/source/xmlparser/xmlparser.cpp
secureswitools/swisistools/source/xmlparser/xmlparser.h
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-preq1835-interpretsis-08_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-01_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-02_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-03_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-04_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-05_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-06_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-07_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-08_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/data/hello_sis.sis
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183501.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183503.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183504.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183524.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r01
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r03
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r04
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r24
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01_reg.rsc
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_02.r03
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_02_reg.rsc
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_stub.sis
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase01.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase03.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase04.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase24.mbm
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r01
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r03
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r04
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r24
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01_reg.rsc
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_02.r03
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_02_reg.rsc
secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_stub.sis
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp.cpp
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp.mmp
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp01.rls
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp02.rls
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp03.rls
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp2_loc.rss
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp2_reg.rss
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp_loc.rss
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp_reg.rss
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappnoappfile_reg.rss
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappnouid2_reg.rss
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappnouid3_reg.rss
secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappsc.rls
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-01.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-01_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-02.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-02_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-03.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-03_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-04.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-04_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-05.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-05_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-06.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-06_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-07.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-07_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-08.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-08_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-09.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-09_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-10.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-10_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-11.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-11_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-12.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-12_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-13.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-13_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-14.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-14_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-15.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-15_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-16.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-16_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-17.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-17_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-18.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-18_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-19.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-19_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-20.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-20_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-21.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-21_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-22.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-22_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-23.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-23_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-24.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-24_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-25.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-25_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-26.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-26_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-27.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-27_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-28.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-28_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-29.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-29_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-30.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-30_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-31.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-31_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-32.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-32_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-33.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-33_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-34.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-34_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-35.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-35_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-36.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-36_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-37.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-37_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-38.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-38_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-39.bat
secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-39_db.bat
secureswitools/swisistools/test/tinterpretsisinteg/parameters_file/preq1835-interpretsis-07.txt
secureswitools/swisistools/test/tinterpretsisinteg/parameters_file/testcase-interpretsis-07.txt
secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-01.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-02.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-03.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-04.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-05.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-06.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-08.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/ini.ini
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-01.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-02.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-03.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-05.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-06.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-07.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-08.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-09.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-10.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-11.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-12.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-13.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-14.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-15.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-16.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-17.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-18.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-19.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-20.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-21.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-22.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-23.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-24.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-25.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-26.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-27.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-28.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-29.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-30.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-31.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-32.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-33.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-34.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-35.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-36.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-37.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-38.script
secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-39.script
secureswitools/swisistools/test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini
secureswitools/swisistools/test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini
secureswitools/swisistools/test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_10.ini
secureswitools/swisistools/test/tinterpretsisinteg/testlistdb.xml
secureswitools/swisistools/test/tscrtool/data/create_db.xml
secureswitools/swisistools/test/tscrtool/data/preprovision.dtd
secureswitools/swisistools/test/tscrtool/data/preprovision_appregattribmissing.xml
secureswitools/swisistools/test/tscrtool/data/preprovision_appreginfo.xml
secureswitools/swisistools/test/tscrtool/data/preprovision_noappattrib.xml
secureswitools/swisistools/test/tscrtool/data/preprovision_nocaptioniconinfo.xml
secureswitools/swisistools/test/tscrtool/data/preprovision_nullappfile.xml
secureswitools/swisistools/test/tscrtool/data/preprovision_nullappuid.xml
secureswitools/swisistools/test/tscrtool/data/update_db.dtd
secureswitools/swisistools/test/tscrtool/data/update_db_end_tag_missing.xml
secureswitools/swisistools/test/tscrtool/data/update_db_test.xml
secureswitools/swisistools/test/tscrtool/data/update_db_unicode.xml
secureswitools/swisistools/test/tscrtool/tscrtool.ini
sysdef_1_4_0.dtd
sysdef_1_5_1.dtd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS += appinstaller/appinstaller.pro \
+           iaupdate/iaupdate.pro
+
--- a/appinstall_info/appinstall_metadata/appinstall_metadata.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstall_info/appinstall_metadata/appinstall_metadata.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component           appinstall_metadata
 source   \sf\mw\appinstall\appinstall_info\appinstall_metadata 
 source   \sf\mw\appinstall\package_definition.xml
--- a/appinstall_plat/appmngr2runtimeapi/src/appmngr2infobase.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstall_plat/appmngr2runtimeapi/src/appmngr2infobase.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -19,7 +19,7 @@
 #include "appmngr2infobase.h"           // CAppMngr2InfoBase
 #include "appmngr2runtime.h"            // CAppMngr2Runtime
 #include "appmngr2common.hrh"           // Default icon indexes
-#include <appmngr2.rsg>                 // Resource IDs
+//#include <appmngr2.rsg>                 // Resource IDs
 #include <AknUtils.h>                   // DisplayTextLanguageSpecificNumberConversion
 #include <StringLoader.h>               // StringLoader
 #include <barsread.h>                   // TResourceReader
@@ -165,17 +165,26 @@
     if( aSizeInBytes <= KMegaByte )
         {
         TInt kiloBytes = DivideAndReturnRoundedInt( aSizeInBytes, KKiloByte );
-        dispString = StringLoader::LoadLC( R_SWINS_UNIT_KILOBYTE, kiloBytes );
+        // Temporary fix until appmngr2pluginapi is removed
+        // dispString = StringLoader::LoadLC( R_SWINS_UNIT_KILOBYTE, kiloBytes );
+        _LIT( KKiloByte, "%N kB" );
+        dispString = KKiloByte().AllocLC();
         }
     else if( aSizeInBytes <= KGigaByte )
         {
         TInt megaBytes = DivideAndReturnRoundedInt( aSizeInBytes, KMegaByte );
-        dispString = StringLoader::LoadLC( R_SWINS_UNIT_MEGABYTE, megaBytes );
+        // Temporary fix until appmngr2pluginapi is removed
+        // dispString = StringLoader::LoadLC( R_SWINS_UNIT_MEGABYTE, megaBytes );
+        _LIT( KMegaByte, "%N MB" );
+        dispString = KMegaByte().AllocLC();
         }
     else // aSizeInBytes > KGigaByte
         {
         TInt gigaBytes = DivideAndReturnRoundedInt( aSizeInBytes, KGigaByte );
-        dispString = StringLoader::LoadLC( R_SWINS_UNIT_GIGABYTE, gigaBytes );
+        // Temporary fix until appmngr2pluginapi is removed
+        // dispString = StringLoader::LoadLC( R_SWINS_UNIT_GIGABYTE, gigaBytes );
+        _LIT( KGigaByte, "%N GB" );
+        dispString = KGigaByte().AllocLC();
         }
     
     TPtr ptr = dispString->Des();
--- a/appinstall_plat/appmngr2runtimeapi/src/appmngr2infoiterator.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstall_plat/appmngr2runtimeapi/src/appmngr2infoiterator.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -20,7 +20,6 @@
 #include "appmngr2infobase.h"           // CAppMngr2InfoBase
 #include <badesca.h>                    // CDesC8Array
 #include <StringLoader.h>               // StringLoader
-#include <appmngr2.rsg>                 // Resource IDs
 #include <SWInstCommonUI.rsg>           // Resource IDs
 
 const TInt KGranularity = 8;
--- a/appinstall_plat/appmngr2runtimeapi/src/appmngr2packageinfo.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstall_plat/appmngr2runtimeapi/src/appmngr2packageinfo.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -19,7 +19,7 @@
 #include "appmngr2packageinfo.h"
 #include <StringLoader.h>               // StringLoader
 #include <AknQueryDialog.h>             // CAknQueryDialog
-#include <appmngr2.rsg>                 // Resource IDs
+//#include <appmngr2.rsg>                 // Resource IDs
 
 
 // ======== MEMBER FUNCTIONS ========
@@ -56,12 +56,16 @@
 //
 EXPORT_C TBool CAppMngr2PackageInfo::ShowDeleteConfirmationQueryL()
     {
+    /* Temporary fix until appmngr2pluginapi is removed
+
     HBufC* deleteQuery = StringLoader::LoadLC( R_AM_DELETEQUERY, Name() );
-    
+
     CAknQueryDialog* dlg = CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
     TBool okToDelete = dlg->ExecuteLD( R_APPMNGR2_YES_NO_CONFIRMATION_QUERY, *deleteQuery );
     CleanupStack::PopAndDestroy( deleteQuery );
 
     return okToDelete;
+    */
+    return ETrue;
     }
 
--- a/appinstall_plat/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstall_plat/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -26,3 +26,5 @@
 #include "../sw_installer_cr_keys/group/bld.inf"
 #include "../sw_installer_ps_keys/group/bld.inf"
 #include "../appmngr2runtimeapi/group/bld.inf"
+#include "../sifui_api/group/bld.inf"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/bwins/sifuiu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,11 @@
+EXPORTS
+	?ShowConfirmationL@CSifUi@@QAEHABVCAppInfo@Swi@@HPBVCApaMaskedBitmap@@ABV?$RPointerArray@VCCertificateInfo@Swi@@@@@Z @ 1 NONAME ; int CSifUi::ShowConfirmationL(class Swi::CAppInfo const &, int, class CApaMaskedBitmap const *, class RPointerArray<class Swi::CCertificateInfo> const &)
+	?Mode@CSifUi@@QAE?AW4TMode@1@XZ @ 2 NONAME ; enum CSifUi::TMode CSifUi::Mode(void)
+	?ShowCompleteL@CSifUi@@QAEXXZ @ 3 NONAME ; void CSifUi::ShowCompleteL(void)
+	?IncreaseProgressBarValueL@CSifUi@@QAEXH@Z @ 4 NONAME ; void CSifUi::IncreaseProgressBarValueL(int)
+	?ShowFailedL@CSifUi@@QAEXH@Z @ 5 NONAME ; void CSifUi::ShowFailedL(int)
+	?SetMode@CSifUi@@QAEXW4TMode@1@@Z @ 6 NONAME ; void CSifUi::SetMode(enum CSifUi::TMode)
+	?ShowProgressL@CSifUi@@QAEXABVCAppInfo@Swi@@HH@Z @ 7 NONAME ; void CSifUi::ShowProgressL(class Swi::CAppInfo const &, int, int)
+	?NewLC@CSifUi@@SAPAV1@XZ @ 8 NONAME ; class CSifUi * CSifUi::NewLC(void)
+	?NewL@CSifUi@@SAPAV1@XZ @ 9 NONAME ; class CSifUi * CSifUi::NewL(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/eabi/sifuiu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,13 @@
+EXPORTS
+	_ZN6CSifUi11ShowFailedLEi @ 1 NONAME
+	_ZN6CSifUi13ShowCompleteLEv @ 2 NONAME
+	_ZN6CSifUi13ShowProgressLERKN3Swi8CAppInfoEii @ 3 NONAME
+	_ZN6CSifUi17ShowConfirmationLERKN3Swi8CAppInfoEiPK16CApaMaskedBitmapRK13RPointerArrayINS0_16CCertificateInfoEE @ 4 NONAME
+	_ZN6CSifUi25IncreaseProgressBarValueLEi @ 5 NONAME
+	_ZN6CSifUi4ModeEv @ 6 NONAME
+	_ZN6CSifUi4NewLEv @ 7 NONAME
+	_ZN6CSifUi5NewLCEv @ 8 NONAME
+	_ZN6CSifUi7SetModeENS_5TModeE @ 9 NONAME
+	_ZTI6CSifUi @ 10 NONAME
+	_ZTV6CSifUi @ 11 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Build information file for Client-side DLL for SIF-plugin UI
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../inc/sifui.h          MW_LAYER_PLATFORM_EXPORT_PATH( sifui.h )
+
+PRJ_MMPFILES
+sifui.mmp
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/group/sifui.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Project specification for SifUiCli. This component
+*               provides UI interface for SIF plugins.
+*
+*/
+
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+TARGET          sifui.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x20022FC2
+
+CAPABILITY      CAP_GENERAL_DLL DRM
+VENDORID        VID_DEFAULT
+
+SOURCEPATH      ../src
+SOURCE          sifui.cpp
+
+USERINCLUDE     ../inc
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib		// User
+LIBRARY         HbCore.lib		// CHbDeviceDialog
+LIBRARY         apgrfx.lib		// CApaMaskedBitmap
+LIBRARY         fbscli.lib		// CFbsBitmap
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/inc/sifui.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,185 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  CSifUi API can be used to implement UI dialogs for
+*               SIF (Software Install Framework) plugins.
+*/
+
+
+#ifndef C_SIFUI_H
+#define C_SIFUI_H
+
+#include <e32base.h>                            // CActive
+#include <hb/hbcore/hbsymbiandevicedialog.h>    // MHbDeviceDialogObserver
+
+
+
+/******************************************************************
+ *                                                                *
+ *   WARNING - WORK-IN-PROGRESS - THIS API CHANGES ALL THE TIME   *
+ *                                                                *
+ ******************************************************************/
+
+
+
+class MSifUiCertificateDetailsProvider;
+class MSifUiDrmDetailsProvider;
+class CHbDeviceDialog;
+class CHbSymbianVariantMap;
+class CActiveSchedulerWait;
+class CApaMaskedBitmap;
+
+namespace Swi {
+    class CAppInfo;
+    class CCertificateInfo;
+}
+
+/**
+ * CSifUi provides UI dialogs for SW installation. UI dialogs are
+ * global and they can be used in a non-UI code (like in SIF plugins).
+ * SW install device dialog plugin implements the UI dialogs.
+ *
+ * @lib SifUi.lib
+ * @since 10.1
+ */
+class CSifUi : public CActive, public MHbDeviceDialogObserver
+    {
+    public:     // constructor and destructor
+        /**
+         * Creates new CSifUi object and pushes it into cleanup stack.
+         * @returns CSifUi* -- new CSifUi object
+         */
+        IMPORT_C static CSifUi* NewLC();
+
+        /**
+         * Creates new CSifUi object.
+         * @returns CSifUi* -- new CSifUi object
+         */
+        IMPORT_C static CSifUi* NewL();
+
+        /**
+         * Destructor.
+         */
+        CSifUi::~CSifUi();
+
+    public:     // new functions
+        /**
+         * Defines installation or uninstallation mode.
+         */
+        enum TMode {
+            EUnspecified = 0,
+            EInstalling = 1,
+            EUninstalling = 2
+        };
+
+        /**
+         * Defines installing or uninstalling mode. Selected mode defines
+         * the dialog titles and buttons.
+         * @param aMode - installing or uninstalling mode
+         */
+        IMPORT_C void SetMode( TMode aMode );
+
+        /**
+         * Returns the currently selected mode.
+         * @return TMode - installing or uninstalling mode
+         */
+        IMPORT_C TMode Mode();
+
+        /**
+         * Displays main installation/uninstallation confirmation query and waits
+         * for user response. Returns ETrue if user accepted the query. Confirmation
+         * dialog is left on the screen. Subsequent ShowProgressL() call replaces it's
+         * content with main progress note, and ShowFailedL() or ShowCompleteL() calls
+         * replace it's content with the error or complete dialogs.
+         * @param aAppInfo - application information (name, version, and vendor)
+         * @param aAppSize - application size in bytes (not displayed if zero)
+         * @param aAppIcon - application icon, default icon is displayed if NULL
+         * @param aCertificates - certificate details
+         * @return TBools - ETrue if user accepted the query, EFalse otherwise
+         */
+        IMPORT_C TBool ShowConfirmationL( const Swi::CAppInfo& aAppInfo,
+                TInt aAppSize, const CApaMaskedBitmap* aAppIcon,
+                const RPointerArray<Swi::CCertificateInfo>& aCertificates );
+
+        /**
+         * Displays main installation/uninstallation progress note. If progress note
+         * or main confirmation query is already displayed, then updates the dialog
+         * content. Use IncreaseProgressBarValueL() to increase the progress bar value.
+         * Dialog remains still on the screen after progress bar shows full 100% value.
+         * Use ShowFailedL() or ShowCompleteL() to replace the dialog content with the
+         * final error or complete note.
+         * @param aAppInfo - application information (name, version, and vendor)
+         * @param aAppSize - application size in bytes (not displayed if zero)
+         * @param aProgressBarFinalValue - final value of the progress bar
+         */
+        IMPORT_C void ShowProgressL( const Swi::CAppInfo& aAppInfo,
+                TInt aAppSize, TInt aProgressBarFinalValue );
+
+        /**
+         * Updates the progress bar value displayed in progress note. Initially progress bar
+         * shows 0%. Each aIncrement increases the value displayed in progress bar. When all
+         * increments reach the final value defined in ShowProgressNoteL() method, then the
+         * progress bar shows full 100%.
+         * @param aIncrement - progress bar value increment
+         */
+        IMPORT_C void IncreaseProgressBarValueL( TInt aIncrement );
+
+        /**
+         * Displays main installation/uninstallation complete note. Installation complete
+         * note contains button to launch application libaray.
+         */
+        IMPORT_C void ShowCompleteL();
+
+        /**
+         * Displays main installation/uninstallation error note. Installation error note
+         * contains button to see detailed error message.
+         * @param aErrorCode - error code
+         */
+        IMPORT_C void ShowFailedL( TInt aErrorCode );
+
+    protected:  // from CActive
+        void DoCancel();
+        void RunL();
+
+    private:    // from MHbDeviceDialogObserver
+        void DataReceived( CHbSymbianVariantMap& aData );
+        void DeviceDialogClosed( TInt aCompletionCode );
+
+    private:    // new functions
+        CSifUi();
+        void ConstructL();
+        void ClearParamsL();
+        void ChangeNoteTypeL( TInt aType );
+        void AddParamL( const TDesC& aKey, TInt aValue );
+        void AddParamL( const TDesC& aKey, const TDesC& aValue );
+        void AddParamsAppInfoAndSizeL( const Swi::CAppInfo& aAppInfo, TInt aAppSize );
+        void AddParamsIconL( const CApaMaskedBitmap* aIcon );
+        void AddParamsCertificatesL( const RPointerArray<Swi::CCertificateInfo>& aCertificates );
+        void DisplayDeviceDialogL();
+        TInt WaitForResponse();
+        void ResponseReceived( TInt aCompletionCode );
+
+    private:    // data
+        TMode iMode;
+        CHbDeviceDialog* iDeviceDialog;
+        CHbSymbianVariantMap* iVariantMap;
+        CActiveSchedulerWait* iWait;
+        TBool iIsDisplayingDialog;
+        TInt iCompletionCode;
+        TInt iReturnValue;
+        CApaMaskedBitmap* iBitmap;
+    };
+
+
+#endif  // C_SIFUI_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/inc/sifuidefs.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Variant map key names for CSifUi API and SW install
+*               notification dialog plugin.
+*/
+
+#ifndef SIFUIDEFS_H
+#define SIFUIDEFS_H
+
+// SifUi plugin literal and variant map key names defined as _LIT macros.
+// Note that _LIT macros defined in this file must match to the definitions
+// in sifuidevicedialogdefinitions.h file. This header is used in Symbian
+// code since Symbian code requires 16-bit descriptors, and definitions in
+// Qt side (in sifuidevicedialogdefinitions.h) are 8-bit wide.
+
+_LIT( KSifUiDeviceDialog, "com.nokia.sifui/1.0" );
+
+enum TSifUiDeviceDialogType
+    {
+    ESifUiConfirmationQuery = 1,
+    ESifUiProgressNote = 2,
+    ESifUiCompleteNote = 3,
+    ESifUiErrorNote = 4
+    };
+
+// Variant map keys for dialog type and title (common to all dialog types)
+_LIT( KSifUiDialogType, "type" );                   // enum TSifUiDeviceDialogType
+_LIT( KSifUiDialogMode, "mode" );                   // enum TSifUiDeviceDialogMode
+
+// Variant map keys for device dialog return values
+_LIT( KSifUiQueryAccepted, "accept" );              // boolean
+_LIT( KSifUiSelectedMemoryIndex, "memi" );          // integer
+
+// Variant map keys for "confirmation query" dialog parameters
+_LIT( KSifUiApplicationName, "app" );               // descriptor
+_LIT( KSifUiApplicationIconHandle, "icon" );        // integer, bitmap handle
+_LIT( KSifUiApplicationIconMaskHandle, "mask" );    // integer, bitmap handle
+_LIT( KSifUiApplicationVersion, "ver" );            // descriptor
+_LIT( KSifUiApplicationSize, "size" );              // integer
+_LIT( KSifUiApplicationDetails, "details" );        // descriptor array
+_LIT( KSifUiMemorySelection, "mem" );               // boolean
+_LIT( KSifUiCertificates, "cert" );                 // boolean ???
+
+// Variant map keys for "progress note" dialog parameters
+_LIT( KSifUiProgressNoteText, "txt" );              // string
+_LIT( KSifUiProgressNoteFinalValue, "fin" );        // integer
+_LIT( KSifUiProgressNoteValue, "val" );             // integer
+
+// Variant map keys for "error" dialog parameters
+_LIT( KSifUiErrorCode, "err" );                     // integer
+
+#endif  // SIFUIDEFS_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/src/sifui.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,393 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of RSifUiCli class.
+*
+*/
+
+#include "sifui.h"                              // CSifUi
+#include "sifuidefs.h"                          // SIF UI device dialog parameters
+#include <hb/hbcore/hbsymbiandevicedialog.h>    // CHbDeviceDialog
+#include <hb/hbcore/hbsymbianvariant.h>         // CHbSymbianVariantMap
+#include <swi/msisuihandlers.h>                 // Swi::CAppInfo
+#include <apgicnfl.h>                           // CApaMaskedBitmap
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSifUi::NewLC()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSifUi* CSifUi::NewLC()
+    {
+    CSifUi* self = new( ELeave ) CSifUi();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::NewL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSifUi* CSifUi::NewL()
+    {
+    CSifUi* self = CSifUi::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::~CSifUi()
+// ---------------------------------------------------------------------------
+//
+CSifUi::~CSifUi()
+    {
+    Cancel();
+    delete iWait;
+    delete iDeviceDialog;
+    delete iVariantMap;
+    delete iBitmap;
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::SetMode()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CSifUi::SetMode( TMode aMode )
+    {
+    iMode = aMode;
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::Mode()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSifUi::TMode CSifUi::Mode()
+    {
+    return iMode;
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ShowConfirmationL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CSifUi::ShowConfirmationL( const Swi::CAppInfo& aAppInfo,
+        TInt aAppSize, const CApaMaskedBitmap* aAppIcon,
+        const RPointerArray<Swi::CCertificateInfo>& aCertificates )
+    {
+    ChangeNoteTypeL( ESifUiConfirmationQuery );
+
+    AddParamsAppInfoAndSizeL( aAppInfo, aAppSize );
+    if( aAppIcon )
+        {
+        AddParamsIconL( aAppIcon );
+        }
+    if( aCertificates.Count() )
+        {
+        AddParamsCertificatesL( aCertificates );
+        }
+
+    // TODO: send drive list for drive selection, get selected drive
+    AddParamL( KSifUiMemorySelection, ETrue );
+
+    DisplayDeviceDialogL();
+    User::LeaveIfError( WaitForResponse() );
+    return( iReturnValue == KErrNone );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ShowProgressL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CSifUi::ShowProgressL( const Swi::CAppInfo& aAppInfo,
+        TInt aAppSize, TInt aProgressBarFinalValue )
+    {
+    ChangeNoteTypeL( ESifUiProgressNote );
+
+    AddParamsAppInfoAndSizeL( aAppInfo, aAppSize );
+    AddParamL( KSifUiProgressNoteFinalValue, aProgressBarFinalValue );
+
+    DisplayDeviceDialogL();
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::IncreaseProgressBarValueL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CSifUi::IncreaseProgressBarValueL( TInt aNewValue )
+    {
+    ChangeNoteTypeL( ESifUiProgressNote );
+
+    AddParamL( KSifUiProgressNoteValue, aNewValue );
+
+    DisplayDeviceDialogL();
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ShowCompleteL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CSifUi::ShowCompleteL()
+    {
+    ChangeNoteTypeL( ESifUiCompleteNote );
+    DisplayDeviceDialogL();
+    User::LeaveIfError( WaitForResponse() );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ShowFailedL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CSifUi::ShowFailedL( TInt aErrorCode )
+    {
+    ChangeNoteTypeL( ESifUiErrorNote );
+
+    AddParamL( KSifUiErrorCode, aErrorCode );
+
+    DisplayDeviceDialogL();
+    User::LeaveIfError( WaitForResponse() );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::DoCancel()
+    {
+    if( iWait && iWait->IsStarted() && iWait->CanStopNow() )
+        {
+        iCompletionCode = KErrCancel;
+        iWait->AsyncStop();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::RunL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::RunL()
+    {
+    if( iWait )
+        {
+        iWait->AsyncStop();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::DataReceived()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::DataReceived( CHbSymbianVariantMap& aData )
+    {
+    const CHbSymbianVariant* acceptedVariant = aData.Get( KSifUiQueryAccepted );
+    if( acceptedVariant )
+        {
+        TBool* acceptedValue = acceptedVariant->Value<TBool>();
+        if( acceptedValue && *acceptedValue )
+            {
+            iReturnValue = KErrNone;
+            }
+        else
+            {
+            iReturnValue = KErrCancel;
+            }
+        ResponseReceived( KErrNone );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::DeviceDialogClosed()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::DeviceDialogClosed( TInt aCompletionCode )
+    {
+    iIsDisplayingDialog = EFalse;
+    ResponseReceived( aCompletionCode );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::CSifUi()
+// ---------------------------------------------------------------------------
+//
+CSifUi::CSifUi() : CActive( CActive::EPriorityStandard )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::ConstructL()
+    {
+    iWait = new( ELeave ) CActiveSchedulerWait;
+    // iDeviceDialog is allocated later, first call of DisplayDeviceDialogL()
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ClearParamsL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::ClearParamsL()
+    {
+    if( iVariantMap )
+        {
+        delete iVariantMap;
+        iVariantMap = NULL;
+        }
+    iVariantMap = CHbSymbianVariantMap::NewL();
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ChangeNoteTypeL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::ChangeNoteTypeL( TInt aType )
+    {
+    ClearParamsL();
+    AddParamL( KSifUiDialogType, aType );
+    AddParamL( KSifUiDialogMode, iMode );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::AddParamL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::AddParamL( const TDesC& aKey, TInt aValue )
+    {
+    CHbSymbianVariant* variant = NULL;
+    variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EInt );
+    iVariantMap->Add( aKey, variant );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::AddParamL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::AddParamL( const TDesC& aKey, const TDesC& aValue )
+    {
+    CHbSymbianVariant* variant = NULL;
+    variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EDes );
+    iVariantMap->Add( aKey, variant );
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::AddParamsAppInfoAndSizeL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::AddParamsAppInfoAndSizeL( const Swi::CAppInfo& aAppInfo, TInt aAppSize )
+    {
+    AddParamL( KSifUiApplicationName, aAppInfo.AppName() );
+    const TVersion& version( aAppInfo.AppVersion() );
+    if( version.iBuild || version.iMajor || version.iMinor )
+        {
+        AddParamL( KSifUiApplicationVersion, version.Name() );
+        }
+    if( aAppInfo.AppVendor().Length() )
+        {
+        AddParamL( KSifUiApplicationDetails, aAppInfo.AppVendor() );
+        }
+    if( aAppSize > 0 )
+        {
+        AddParamL( KSifUiApplicationSize, aAppSize );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::AddParamsIconL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::AddParamsIconL( const CApaMaskedBitmap* aIcon )
+    {
+    if( aIcon )
+        {
+        if( iBitmap )
+            {
+            delete iBitmap;
+            iBitmap = NULL;
+            }
+        iBitmap = CApaMaskedBitmap::NewL( aIcon );
+
+        CHbSymbianVariant* variant = NULL;
+        TInt bitmapHandle = iBitmap->Handle();
+        variant = CHbSymbianVariant::NewL( &bitmapHandle, CHbSymbianVariant::EInt );
+        iVariantMap->Add( KSifUiApplicationIconHandle, variant );
+        TInt bitmapMaskHandle = iBitmap->Mask()->Handle();
+        variant = CHbSymbianVariant::NewL( &bitmapMaskHandle, CHbSymbianVariant::EInt );
+        iVariantMap->Add( KSifUiApplicationIconMaskHandle, variant );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::AddParamsCertificatesL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::AddParamsCertificatesL( const RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/ )
+    {
+    // TODO: implement
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::DisplayDeviceDialogL()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::DisplayDeviceDialogL()
+    {
+    if( iDeviceDialog && iIsDisplayingDialog )
+        {
+        iDeviceDialog->Update( *iVariantMap );
+        }
+    else
+        {
+        if( !iDeviceDialog )
+            {
+            iDeviceDialog = CHbDeviceDialog::NewL();
+            }
+        iDeviceDialog->Show( KSifUiDeviceDialog, *iVariantMap, this );
+        iIsDisplayingDialog = ETrue;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::WaitForResponse()
+// ---------------------------------------------------------------------------
+//
+TInt CSifUi::WaitForResponse()
+    {
+    iCompletionCode = KErrInUse;
+    iReturnValue = KErrUnknown;
+    if( !IsActive() && iWait && !iWait->IsStarted() )
+        {
+        iStatus = KRequestPending;
+        SetActive();
+        iWait->Start();
+        }
+    return iCompletionCode;
+    }
+
+// ---------------------------------------------------------------------------
+// CSifUi::ResponseReceived()
+// ---------------------------------------------------------------------------
+//
+void CSifUi::ResponseReceived( TInt aCompletionCode )
+    {
+    if( IsActive() )
+        {
+        iCompletionCode = aCompletionCode;
+        TRequestStatus* status( &iStatus );
+        User::RequestComplete( status, KErrNone );
+        }
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/bwins/sifuitestu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+	?LibEntryL@@YAPAVCTestModuleBase@@XZ @ 1 NONAME ; class CTestModuleBase * LibEntryL(void)
+	?SetRequirements@@YAHAAPAVCTestModuleParam@@AAK@Z @ 2 NONAME ; int SetRequirements(class CTestModuleParam * &, unsigned long &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/conf/sifuitestscripter.cfg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  SifUi STIF TestScripter configuration file
+#
+
+[Test]
+title Startup and Shutdown
+[Endtest]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/eabi/sifuitestu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+	_Z9LibEntryLv @ 1 NONAME
+	_Z15SetRequirementsRP16CTestModuleParamRm @ 2 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+*
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../init/sifuitestscripter.ini   /epoc32/winscw/c/testframework/sifuitestscripter.ini
+
+PRJ_TESTMMPFILES
+sifuitest.mmp
+
+PRJ_MMPFILES
+sifuitest_nrm.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/group/sifuitest.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: MMP file for RSifUi STIF test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          sifuitest.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E7
+
+VENDORID        VID_DEFAULT
+CAPABILITY      ALL -TCB
+
+USERINCLUDE     ../inc 
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+SOURCE          sifuitest.cpp
+SOURCE          sifuitestcases.cpp
+
+LIBRARY         euser.lib                           // Base
+LIBRARY         efsrv.lib                           // File server
+LIBRARY         ws32.lib                            // Window server
+LIBRARY         bafl.lib                            // CDesC16ArrayFlat
+LIBRARY         stiftestinterface.lib               // STIF Framework
+LIBRARY         stiftestengine.lib                  // STIF Framework
+LIBRARY         sifui.lib                           // CSifUi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/group/sifuitest.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,39 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+; 
+; Description:
+;
+; 	Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x101FB3E7),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0 and 5.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+[0x1028315F], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Install files
+"\epoc32\release\armv5\udeb\sifuitest.dll" - "c:\sys\bin\sifuitest.dll"
+"..\init\sifuitestscripter.ini" - "c:\TestFramework\sifuitestscripter.ini"
+"..\conf\sifuitestscripter.cfg" - "c:\TestFramework\sifuitestscripter.cfg"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/group/sifuitest_nrm.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: MMP file for RSifUi STIF test module.
+*
+*/
+
+// Same MMP file is used for both "BUILD" and "TEST BUILD" ABLD commands
+#include "sifuitest.mmp"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/inc/sifuidummydetailsprovider.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Dummy implementation for details provider interface.
+*
+*/
+
+#ifndef C_DUMMYDETAILSPROVIDER_H
+#define C_DUMMYDETAILSPROVIDER_H
+
+#include <e32base.h>            // CBase
+#include <sifuidetailsif.h>     // MSifUiDetailsIf, MSifUiListIterator, MSifUiDetailsIterator
+
+
+class CDummyDetailsProvider : public CBase, public MSifUiDetailsIf,
+        public MSifUiListIterator, public MSifUiDetailsIterator
+    {
+public:
+    CDummyDetailsProvider( RFs& aFs );
+    ~CDummyDetailsProvider();
+
+public:
+    // from MSifUiDetailsIterator
+    void SetToFirstFieldL();
+    TBool HasNextField();
+    void GetNextFieldL( TDes& aFieldName, TDes& aFieldValue );
+
+    // from MSifUiListIterator
+    void SetToFirstItemL();
+    TBool HasNextItem();
+    void GetNextItemL( TDes& aItemName );
+    MSifUiDetailsIterator* DetailsIterator( const TDesC& aItemName );
+
+    // from MSifUiDetailsIf
+    MSifUiDetailsIterator* AppDetailsIterator();
+    MSifUiListIterator* CertificatesListL();
+    MSifUiListIterator* DrmFilesListL();
+    void GetDriveListL( RArray<TDriveUnit>& aDriveList );
+    void GetFolderListL( const TDesC& aParent, CDesCArray& aFolderList );
+    TBool HasFolderSubfolders( const TDesC& aParent, const TDesC& aFolder );
+
+private:    // data
+    RFs& iFs;
+    TInt iCurrentField;
+    TInt iCurrentItem;
+    };
+
+#endif // C_DUMMYDETAILSPROVIDER_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/inc/sifuitest.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: STIF hardcoded module declaration
+*
+*/
+
+#ifndef SIFUITEST_H
+#define SIFUITEST_H
+
+#include <StifTestModule.h>             // CTestModuleBase
+#include <StifLogger.h>                 // CStifLogger
+#include <w32std.h>                     // TKeyEvent
+
+
+// Definitions defined in STIF test module template
+#define TEST_MODULE_VERSION_MAJOR 0
+#define TEST_MODULE_VERSION_MINOR 0
+#define TEST_MODULE_VERSION_BUILD 0
+
+_LIT( KSifUiTestLogPath, "\\logs\\testframework\\SifUiTest\\" );
+_LIT( KSifUiTestLogFile, "SifUiTest.txt" );
+_LIT( KSifUiTestLogFileWithTitle, "SifUiTest_[%S].txt" );
+
+#define GETPTR &
+#define ENTRY(str,func) {_S(str), GETPTR func,0,0,0}
+#define FUNCENTRY(func) {_S(#func), GETPTR func,0,0,0}
+#define OOM_ENTRY(str,func,a,b,c) {_S(str), GETPTR func,a,b,c}
+#define OOM_FUNCENTRY(func,a,b,c) {_S(#func), GETPTR func,a,b,c}
+
+class CSifUiTest;
+class CSifUi;
+
+// Pointer to test function (that does the actual testing) type definition
+typedef TInt (CSifUiTest::* TestFunction)(TTestResult&);
+
+// Structure containing test case name and pointer to test function
+class TCaseInfo
+    {
+    public:
+        TPtrC           iCaseName;
+        TestFunction    iMethod;
+        TBool           iIsOOMTest;
+        TInt            iFirstMemoryAllocation;
+        TInt            iLastMemoryAllocation;
+
+    TCaseInfo( const TDesC& aDes ) : iCaseName( aDes )
+        {
+        };
+    };
+
+
+
+/**
+ *  SifUiTest class.
+ *
+ */
+NONSHARABLE_CLASS(CSifUiTest) : public CTestModuleBase
+    {
+    public:     // constructors and destructor
+        static CSifUiTest* NewL();
+        ~CSifUiTest();
+
+    public:     // from CTestModuleBase
+        /**
+        * InitL is used to initialize the test module.
+        * @param aIniFile Initialization file for the test module (optional)
+        * @param aFirstTime Flag is true when InitL is executed for first
+        *   created instance of CSifUiTest.
+        * @return Symbian OS error code
+        */
+        TInt InitL( TFileName& aIniFile, TBool aFirstTime );
+
+        /**
+        * GetTestCasesL is used to inquiry test cases.
+        * @param aTestCaseFile Test case file (optional)
+        * @param aTestCases  Array of TestCases returned to test framework
+        * @return Symbian OS error code
+        */
+        TInt GetTestCasesL( const TFileName& aTestCaseFile,
+                            RPointerArray<TTestCaseInfo>& aTestCases );
+
+        /**
+        * RunTestCaseL is used to run an individual test case.
+        * @param aCaseNumber Test case number
+        * @param aTestCaseFile Test case file (optional)
+        * @param aResult Test case result returned to test framework (PASS/FAIL)
+        * @return Symbian OS error code (test case execution error, which is
+        *   not reported in aResult parameter as test case failure).
+        */
+        TInt RunTestCaseL( const TInt aCaseNumber,
+                           const TFileName& aTestCaseFile,
+                           TTestResult& aResult );
+
+        /**
+         * Method used to log version of test module
+         */
+        void SendTestModuleVersion();
+
+    private:
+        CSifUiTest();
+        void ConstructL();
+
+        /**
+        * Function returning test case name and pointer to test case function.
+        * @param aCaseNumber test case number
+        * @return TCaseInfo
+        */
+        const TCaseInfo Case ( const TInt aCaseNumber ) const;
+
+        /**
+         * Helper function that returns aErrorCode as string.
+         * @param aErrorCode - Symbian OS error code
+         * @return name of the error code
+         */
+        TPtrC ErrorCodeString( TInt aErrorCode ) const;
+
+        /**
+         * Helper function that sets aReturnCode result to aResult.
+         * @param aResult - test case result to be set
+         * @param aReturnCode - Symbian OS error code
+         */
+        void SetResult( TTestResult& aResult, const TInt aReturnCode ) const;
+
+        /**
+         * Helper function that sends key event after given time delay.
+         * Note that this function returns immediately, but it still sends
+         * the key event after given delay.
+         * @param aDelay - time to wait in microseconds
+         * @param aKey - key event to send
+         */
+        void AsyncWaitAndSendKeyEventL( TTimeIntervalMicroSeconds32 aDelay,
+                const TKeyEvent& aKeyEvent ) const;
+
+        /**
+         * Helper function to create new CSifUi object in iSifUi member.
+         * @return TInt - result code for creating new CSifUi
+         */
+        TInt CreateSifUi();
+
+
+        // --- TEST CASE FUNCTIONS ---
+
+        /**
+         * Creates CSifUi objects in very low-memory until create succeeds.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt CreateLowMemTest( TTestResult& aResult );
+
+        /**
+         * Run information note test case.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt InformationNoteTest( TTestResult& aResult );
+
+        /**
+         * Run warning note test case.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt WarningNoteTest( TTestResult& aResult );
+
+        /**
+         * Run error note test case.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt ErrorNoteTest( TTestResult& aResult );
+
+        /**
+         * Run permanent note test case.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt PermanentNoteTest( TTestResult& aResult );
+
+        /**
+         * Run progress note test case.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt ProgressNoteTest( TTestResult& aResult );
+
+        /**
+         * Run wait note test case.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt WaitNoteTest( TTestResult& aResult );
+
+        /**
+         * Run launch help test case.
+         * @param aResult - test case result (PASS/FAIL)
+         * @return Symbian OS error code (other than test result)
+         */
+        TInt LaunchHelpTest( TTestResult& aResult );
+
+    private:        // data
+        TestFunction iMethod;
+        CStifLogger* iLog;
+        CStifLogger* iStdLog;
+        CStifLogger* iTCLog;
+        TBool iAddTestCaseTitleToLogName;
+        TBool iVersionLogged;
+        RFs iFs;
+        CActiveScheduler* iScheduler;
+
+        CSifUi* iSifUi;
+    };
+
+#endif      // SIFUITEST_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/init/sifuitestscripter.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description: SifUi STIF TestScripter initialization file
+#
+#
+
+[Engine_Defaults]
+TestReportMode= FullReport
+CreateTestReport= YES
+TestReportFilePath= C:\LOGS\TestFramework\
+TestReportFileName= TestReport
+TestReportFormat= TXT
+TestReportOutput= FILE
+TestReportFileCreationMode= OVERWRITE
+DeviceResetDllName= StifResetForNokia.dll
+DisableMeasurement= stifmeasurementdisablenone
+Timeout= 0
+UITestingSupport= YES
+SeparateProcesses= NO
+[End_Defaults]
+
+[New_Module]
+ModuleName= sifuitest
+[End_Module]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/src/sifuidummydetailsprovider.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Dummy implementation for details provider interface.
+*
+*/
+
+#include <sifuidummydetailsprovider.h>  // CDummyDetailsProvider
+#include <f32file.h>                    // RFs, TVolumeInfo
+
+
+CDummyDetailsProvider::CDummyDetailsProvider( RFs& aFs ) : iFs( aFs )
+    {
+    }
+
+CDummyDetailsProvider::~CDummyDetailsProvider()
+    {
+    }
+
+void CDummyDetailsProvider::SetToFirstFieldL()
+    {
+    iCurrentField = 0;
+    }
+
+TBool CDummyDetailsProvider::HasNextField()
+    {
+    return( iCurrentField < 3 );
+    }
+
+void CDummyDetailsProvider::GetNextFieldL( TDes& aFieldName, TDes& aFieldValue )
+    {
+    __ASSERT_ALWAYS( iCurrentField < 3, User::Invariant() );
+    aFieldName.Zero();
+    aFieldName.AppendFormat( _L("Field_%d"), iCurrentField );
+    aFieldValue.Zero();
+    aFieldValue.AppendFormat( _L("Value %d"), iCurrentField );
+    ++iCurrentField;
+    }
+
+void CDummyDetailsProvider::SetToFirstItemL()
+    {
+    iCurrentItem = 0;
+    }
+
+TBool CDummyDetailsProvider::HasNextItem()
+    {
+    return( iCurrentField < 3 );
+    }
+
+void CDummyDetailsProvider::GetNextItemL( TDes& aItemName )
+    {
+    __ASSERT_ALWAYS( iCurrentItem < 3, User::Invariant() );
+    aItemName.Zero();
+    aItemName.AppendFormat( _L("Item_%d"), iCurrentItem );
+    ++iCurrentItem;
+    }
+
+MSifUiDetailsIterator* CDummyDetailsProvider::DetailsIterator( const TDesC& aItemName )
+    {
+    return this;
+    }
+
+MSifUiDetailsIterator* CDummyDetailsProvider::AppDetailsIterator()
+    {
+    return this;
+    }
+
+MSifUiListIterator* CDummyDetailsProvider::CertificatesListL()
+    {
+    return this;
+    }
+
+MSifUiListIterator* CDummyDetailsProvider::DrmFilesListL()
+    {
+    return this;
+    }
+
+void CDummyDetailsProvider::GetDriveListL( RArray<TDriveUnit>& aDriveList )
+    {
+    aDriveList.Reset();
+    TDriveList driveList;
+    User::LeaveIfError( iFs.DriveList( driveList ) );
+    for( TInt driveNumber = EDriveA; driveNumber <= EDriveZ; ++driveNumber )
+        {
+        if( driveList[ driveNumber ] )
+            {
+            TVolumeInfo volInfo;
+            if( iFs.Volume( volInfo, driveNumber ) == KErrNone )
+                {
+                if( volInfo.iDrive.iType != EMediaNotPresent &&
+                    volInfo.iDrive.iType != EMediaRom &&
+                    volInfo.iDrive.iType != EMediaRemote &&
+                    !( volInfo.iDrive.iDriveAtt & KDriveAttRom ) &&
+                    !( volInfo.iDrive.iDriveAtt & KDriveAttSubsted ) )
+                    {
+                    aDriveList.AppendL( driveNumber );
+                    }
+                }
+            }
+        }
+    }
+
+void CDummyDetailsProvider::GetFolderListL( const TDesC& aParent, CDesCArray& aFolderList )
+    {
+    aFolderList.Reset();
+    if( aParent.Find( _L("SubSub") ) != KErrNotFound )
+        {
+        // no subfolders, should not get here
+        User::Invariant();
+        }
+    else if( ( aParent.Find( _L("Applications") ) != KErrNotFound ) ||
+             ( aParent.Find( _L("Programs") ) != KErrNotFound ) ||
+             ( aParent.Find( _L("Installations") ) != KErrNotFound ) )
+        {
+        aFolderList.AppendL( _L("SubSubDir") );
+        aFolderList.AppendL( _L("SubSubFolder") );
+        }
+    else
+        {
+        aFolderList.AppendL( _L("Applications") );
+        aFolderList.AppendL( _L("Programs") );
+        aFolderList.AppendL( _L("Installations") );
+        }
+    }
+
+TBool CDummyDetailsProvider::HasFolderSubfolders( const TDesC& aParent, const TDesC& aFolder )
+    {
+    return( aParent.Find( _L("SubSub") ) != KErrNotFound );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/src/sifuitest.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,484 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: This file contains Hardcoded module implementation.
+*
+*/
+
+
+#include <Stiftestinterface.h>
+#include <SettingServerClient.h>
+#include <sifui.h>                      // CSifUi
+#include "SifUiTest.h"
+
+
+//
+// NOTE: This cpp file contains just generic STIF module code.
+// Test case functions are defined in SifUiTestCases.cpp
+//
+
+
+_LIT( KWaitAndSendThread, "WaitAndSendKey" );
+const TInt KWaitAndSendThreadStack = 0x1000;
+
+class TDelayAndKeyEvent {
+public:
+    TTimeIntervalMicroSeconds32 iDelay;
+    TKeyEvent iKeyEvent;
+};
+
+
+// ======== LOCAL FUNCTIONS =========
+
+// -----------------------------------------------------------------------------
+// DoSendKeyEventL( const TKeyEvent& aKeyEvent )
+// -----------------------------------------------------------------------------
+//
+void DoSendKeyEventL( const TKeyEvent& aKeyEvent )
+    {
+    RWsSession wsSession;
+    User::LeaveIfError( wsSession.Connect() );
+    CleanupClosePushL( wsSession );
+    TInt focusedGroup = wsSession.GetFocusWindowGroup();
+
+    TWsEvent event;
+    TKeyEvent& keyEvent( *event.Key() );
+    TInt err;
+
+    /*
+    event.SetType( EEventKeyDown );
+    event.SetTimeNow();
+    keyEvent = aKeyEvent;
+    err = wsSession.SendEventToWindowGroup( focusedGroup, event );
+    User::LeaveIfError( err );
+    */
+
+    event.SetType( EEventKey );
+    event.SetTimeNow();
+    keyEvent = aKeyEvent;
+    err = wsSession.SendEventToWindowGroup( focusedGroup, event );
+    User::LeaveIfError( err );
+
+    /*
+    event.SetType( EEventKeyUp );
+    event.SetTimeNow();
+    keyEvent = aKeyEvent;
+    err = wsSession.SendEventToWindowGroup( focusedGroup, event );
+    User::LeaveIfError( err );
+    */
+
+    CleanupStack::PopAndDestroy( &wsSession );
+    }
+
+// -----------------------------------------------------------------------------
+// WaitAndSendThreadFunc()
+// -----------------------------------------------------------------------------
+//
+TInt WaitAndSendThreadFunc( TAny* aPtr )
+    {
+    TDelayAndKeyEvent* params = reinterpret_cast<TDelayAndKeyEvent*>( aPtr );
+    ASSERT( params );
+    TInt retVal = KErrNone;
+
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    if( !cleanup )
+        {
+        delete params;
+        retVal = KErrNoMemory;
+        }
+
+    RThread::Rendezvous( retVal );
+    if( retVal == KErrNone )
+        {
+        User::After( params->iDelay );
+        TRAP( retVal, DoSendKeyEventL( params->iKeyEvent ) );
+        }
+
+    delete cleanup;
+    delete params;
+    return retVal;
+    }
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::NewL()
+// -----------------------------------------------------------------------------
+//
+CSifUiTest* CSifUiTest::NewL()
+    {
+    CSifUiTest* self = new (ELeave) CSifUiTest;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::~CSifUiTest()
+// -----------------------------------------------------------------------------
+//
+CSifUiTest::~CSifUiTest()
+    {
+    delete iSifUi;
+    iLog = NULL;
+    delete iStdLog;
+    delete iTCLog;
+    iFs.Close();
+
+    if( iScheduler )
+        {
+        CActiveScheduler::Install( NULL );
+        delete iScheduler;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::InitL()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::InitL( TFileName& /*aIniFile*/, TBool /*aFirstTime*/ )
+    {
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::GetTestCasesL()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::GetTestCasesL( const TFileName& /*aConfig*/,
+        RPointerArray<TTestCaseInfo>& aTestCases )
+    {
+    for( TInt index = 0; Case( index ).iMethod != NULL; ++index )
+        {
+        TTestCaseInfo* newCase = new( ELeave ) TTestCaseInfo();
+        CleanupStack::PushL( newCase );
+        newCase->iCaseNumber = index;
+        newCase->iTitle.Copy( Case(index).iCaseName );
+        aTestCases.AppendL( newCase );
+        CleanupStack::Pop( newCase );
+        }
+
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::RunTestCaseL
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::RunTestCaseL( const TInt aCaseNumber,
+        const TFileName& /*aConfig*/, TTestResult& aResult )
+    {
+    if( !iVersionLogged )
+        {
+        SendTestModuleVersion();
+        iVersionLogged = ETrue;
+        }
+
+    TInt returnValue = KErrNone;
+
+    TCaseInfo caseInfo = Case ( aCaseNumber );
+    if( caseInfo.iMethod != NULL )
+        {
+        _LIT( KLogStartTC, "Starting testcase [%S]" );
+        iLog->Log( KLogStartTC, &caseInfo.iCaseName );
+
+        // Switch to use test case (TC) logger if necessary
+        if( iAddTestCaseTitleToLogName )
+            {
+            if( iTCLog )
+                {
+                delete iTCLog;
+                iTCLog = NULL;
+                }
+
+            TName title;
+            TestModuleIf().GetTestCaseTitleL( title );
+            TFileName logFileName;
+            logFileName.Format( KSifUiTestLogFileWithTitle, &title );
+            iTCLog = CStifLogger::NewL( KSifUiTestLogPath, logFileName );
+            iLog = iTCLog;
+            }
+
+        // Run test case
+        iMethod = caseInfo.iMethod;
+        TRAPD( err, returnValue  = ( this->*iMethod )( aResult ) );
+
+        // Restore standard log and close test case logger
+        if( iAddTestCaseTitleToLogName )
+            {
+            iLog = iStdLog;
+            delete iTCLog;
+            iTCLog = NULL;
+            }
+
+        // Leave if the case execution failed
+        User::LeaveIfError( err );
+        }
+    else
+        {
+        returnValue = KErrNotFound;
+        }
+
+    // Return case execution status (not the result of the case execution)
+    return returnValue;
+    }
+
+//-----------------------------------------------------------------------------
+// CSifUiTest::SendTestModuleVersion
+//-----------------------------------------------------------------------------
+//
+void CSifUiTest::SendTestModuleVersion()
+    {
+    TVersion moduleVersion;
+    moduleVersion.iMajor = TEST_MODULE_VERSION_MAJOR;
+    moduleVersion.iMinor = TEST_MODULE_VERSION_MINOR;
+    moduleVersion.iBuild = TEST_MODULE_VERSION_BUILD;
+
+    TFileName moduleName;
+    moduleName = _L("SifUiTest.dll");
+
+    TBool newVersionOfMethod = ETrue;
+    TestModuleIf().SendTestModuleVersion( moduleVersion, moduleName, newVersionOfMethod );
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::CSifUiTest()
+// -----------------------------------------------------------------------------
+//
+CSifUiTest::CSifUiTest()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CSifUiTest::ConstructL()
+    {
+    User::LeaveIfError( iFs.Connect() );
+
+    // Read logger settings
+    RSettingServer settingServer;
+    TInt ret = settingServer.Connect();
+    User::LeaveIfError( ret );
+    TLoggerSettings loggerSettings;
+    ret = settingServer.GetLoggerSettings( loggerSettings );
+    User::LeaveIfError( ret );
+    settingServer.Close();
+
+    iAddTestCaseTitleToLogName = loggerSettings.iAddTestCaseTitle;
+    iStdLog = CStifLogger::NewL( KSifUiTestLogPath, KSifUiTestLogFile );
+    iLog = iStdLog;
+
+    _LIT( KLogStart, "SifUiTest starts" );
+    iLog->Log( KLogStart );
+
+    iVersionLogged = EFalse;
+
+    if( !CActiveScheduler::Current() )
+        {
+        iScheduler = new( ELeave ) CActiveScheduler;
+        CActiveScheduler::Install( iScheduler );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::ErrorCodeString()
+// -----------------------------------------------------------------------------
+//
+TPtrC CSifUiTest::ErrorCodeString( TInt aErrorCode ) const
+    {
+    switch( aErrorCode )
+        {
+        case KErrNone:
+            return _L("KErrNone");
+        case KErrNotFound:
+            return _L("KErrNotFound");
+        case KErrGeneral:
+            return _L("KErrGeneral");
+        case KErrCancel:
+            return _L("KErrCancel");
+        case KErrNoMemory:
+            return _L("KErrNoMemory");
+        case KErrNotSupported:
+            return _L("KErrNotSupported");
+        case KErrArgument:
+            return _L("KErrArgument");
+        case KErrTotalLossOfPrecision:
+            return _L("KErrTotalLossOfPrecision");
+        case KErrBadHandle:
+            return _L("KErrBadHandle");
+        case KErrOverflow:
+            return _L("KErrOverflow");
+        case KErrUnderflow:
+            return _L("KErrUnderflow");
+        case KErrAlreadyExists:
+            return _L("KErrAlreadyExists");
+        case KErrPathNotFound:
+            return _L("KErrPathNotFound");
+        case KErrDied:
+            return _L("KErrDied");
+        case KErrInUse:
+            return _L("KErrInUse");
+        case KErrServerTerminated:
+            return _L("KErrServerTerminated");
+        case KErrServerBusy:
+            return _L("KErrServerBusy");
+        case KErrCompletion:
+            return _L("KErrCompletion");
+        case KErrNotReady:
+            return _L("KErrNotReady");
+        case KErrUnknown:
+            return _L("KErrUnknown");
+        case KErrCorrupt:
+            return _L("KErrCorrupt");
+        case KErrAccessDenied:
+            return _L("KErrAccessDenied");
+        case KErrLocked:
+            return _L("KErrLocked");
+        case KErrWrite:
+            return _L("KErrWrite");
+        case KErrDisMounted:
+            return _L("KErrDisMounted");
+        case KErrEof:
+            return _L("KErrEof");
+        case KErrDiskFull:
+            return _L("KErrDiskFull");
+        case KErrBadDriver:
+            return _L("KErrBadDriver");
+        case KErrBadName:
+            return _L("KErrBadName");
+        case KErrCommsLineFail:
+            return _L("KErrCommsLineFail");
+        case KErrCommsFrame:
+            return _L("KErrCommsFrame");
+        case KErrCommsOverrun:
+            return _L("KErrCommsOverrun");
+        case KErrCommsParity:
+            return _L("KErrCommsParity");
+        case KErrTimedOut:
+            return _L("KErrTimedOut");
+        case KErrCouldNotConnect:
+            return _L("KErrCouldNotConnect");
+        case KErrCouldNotDisconnect:
+            return _L("KErrCouldNotDisconnect");
+        case KErrDisconnected:
+            return _L("KErrDisconnected");
+        case KErrBadLibraryEntryPoint:
+            return _L("KErrBadLibraryEntryPoint");
+        case KErrBadDescriptor:
+            return _L("KErrBadDescriptor");
+        case KErrAbort:
+            return _L("KErrAbort");
+        case KErrTooBig:
+            return _L("KErrTooBig");
+        case KErrDivideByZero:
+            return _L("KErrDivideByZero");
+        case KErrBadPower:
+            return _L("KErrBadPower");
+        case KErrDirFull:
+            return _L("KErrDirFull");
+        case KErrHardwareNotAvailable:
+            return _L("KErrHardwareNotAvailable");
+        case KErrSessionClosed:
+            return _L("KErrSessionClosed");
+        case KErrPermissionDenied:
+            return _L("KErrPermissionDenied");
+        case KErrExtensionNotSupported:
+            return _L("KErrExtensionNotSupported");
+        case KErrCommsBreak:
+            return _L("KErrCommsBreak");
+        case KErrNoSecureTime:
+            return _L("KErrNoSecureTime");
+        }
+    return _L("UNKNOWN ERROR CODE");
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::SetResult()
+// -----------------------------------------------------------------------------
+//
+void CSifUiTest::SetResult( TTestResult& aResult, const TInt aReturnCode ) const
+    {
+    aResult.SetResult( aReturnCode, ErrorCodeString( aReturnCode ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::AsyncWaitAndSendKeyEventL()
+// -----------------------------------------------------------------------------
+//
+void CSifUiTest::AsyncWaitAndSendKeyEventL( TTimeIntervalMicroSeconds32 aDelay,
+        const TKeyEvent& aKeyEvent ) const
+    {
+    if( aDelay.Int() )
+        {
+        TDelayAndKeyEvent* paramPack = new( ELeave ) TDelayAndKeyEvent;
+        paramPack->iDelay = aDelay;
+        paramPack->iKeyEvent = aKeyEvent;
+
+        RThread waitingAndSendingThread;
+        TInt err = waitingAndSendingThread.Create( KWaitAndSendThread, WaitAndSendThreadFunc,
+                KWaitAndSendThreadStack, NULL, reinterpret_cast< TAny* >( paramPack ) );
+        if( err == KErrNone )
+            {
+            TRequestStatus status;
+            waitingAndSendingThread.Rendezvous( status );
+            waitingAndSendingThread.Resume();
+            User::WaitForRequest( status );
+            waitingAndSendingThread.Close();
+            User::LeaveIfError( status.Int() );
+            }
+        else
+            {
+            delete paramPack;
+            User::Leave( err );
+            }
+        }
+    else
+        {
+        DoSendKeyEventL( aKeyEvent );
+        }
+    }
+
+
+// ==== OTHER EXPORTED FUNCTIONS ====
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CTestModuleBase* LibEntryL()
+    {
+    return CSifUiTest::NewL();
+    }
+
+// -----------------------------------------------------------------------------
+// SetRequirements handles test module parameters
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt SetRequirements( CTestModuleParam*& aTestModuleParam,
+        TUint32& aParameterValid )
+    {
+    aParameterValid = KStifTestModuleParameterChanged;
+
+    CTestModuleParamVer01* param = CTestModuleParamVer01::NewL();
+    param->iTestThreadStackSize = 16384;    // 16K stack
+    param->iTestThreadMinHeap = 4096;       // 4K heap min
+    param->iTestThreadMaxHeap = 1048576;    // 1M heap max
+    aTestModuleParam = param;
+
+    return KErrNone;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/src/sifuitestcases.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,586 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: This file contains hardcoded module implementation.
+*
+*/
+
+#include <badesca.h>                    // CDesCArray
+#include <sifui.h>                      // CSifUi
+#include "SifUiTest.h"                  // CSifUiTest
+
+_LIT( KEnter, "Enter" );
+_LIT( KStepFormat, "Step %d" );
+_LIT( KExit, "Exit" );
+
+// Internal structure containing test case name and pointer to test function
+class TCaseInfoInternal
+    {
+    public:
+        const TText*    iCaseName;
+        TestFunction    iMethod;
+        TBool           iIsOOMTest;
+        TInt            iFirstMemoryAllocation;
+        TInt            iLastMemoryAllocation;
+    };
+
+const TInt KOneSecond = 1000000;
+const TInt KThreeSeconds = 3 * KOneSecond;
+const TInt KFiveSeconds = 5 * KOneSecond;
+const TInt KHalfSecond = KOneSecond / 2;
+const TKeyEvent KRightSoftkey = { EKeyDevice1, 0, 0, EStdKeyDevice1 };  // EKeyCBA2
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::Case
+// Returns a test case by number.
+//
+// This function contains an array of all available test cases
+// i.e pair of case name and test function. If case specified by parameter
+// aCaseNumber is found from array, then that item is returned.
+// -----------------------------------------------------------------------------
+//
+const TCaseInfo CSifUiTest::Case ( const TInt aCaseNumber ) const
+     {
+    /**
+    * When adding new test cases, implement new test case function and add new
+    * line to KCases array specifing the name of the case and the function.
+    *
+    * ENTRY macro takes two parameters: test case name and test case
+    * function name.
+    *
+    * FUNCENTRY macro takes only test case function name as a parameter and
+    * uses that as a test case name and test case function name.
+    *
+    */
+
+    static TCaseInfoInternal const KCases[] =
+        {
+        ENTRY( "CreateLowMemTest", CSifUiTest::CreateLowMemTest ),
+        ENTRY( "InformationNoteTest", CSifUiTest::InformationNoteTest ),
+        ENTRY( "WarningNoteTest", CSifUiTest::WarningNoteTest ),
+        ENTRY( "ErrorNoteTest", CSifUiTest::ErrorNoteTest ),
+        ENTRY( "PermanentNoteTest", CSifUiTest::PermanentNoteTest ),
+        ENTRY( "ProgressNoteTest", CSifUiTest::ProgressNoteTest ),
+        ENTRY( "WaitNoteTest", CSifUiTest::WaitNoteTest ),
+        ENTRY( "LaunchHelpTest", CSifUiTest::LaunchHelpTest )
+        };
+
+    if( (TUint) aCaseNumber >= sizeof( KCases ) / sizeof( TCaseInfoInternal ) )
+        {
+        TCaseInfo emptyObject( KNullDesC );
+        emptyObject.iMethod = NULL;
+        emptyObject.iIsOOMTest = EFalse;
+        emptyObject.iFirstMemoryAllocation = 0;
+        emptyObject.iLastMemoryAllocation = 0;
+        return emptyObject;
+        }
+
+    TPtrC caseName( static_cast<const TUint16*>( KCases[ aCaseNumber ].iCaseName ) );
+    TCaseInfo caseInfo( caseName );
+    caseInfo.iMethod = KCases[ aCaseNumber ].iMethod;
+    caseInfo.iIsOOMTest = KCases[ aCaseNumber ].iIsOOMTest;
+    caseInfo.iFirstMemoryAllocation = KCases[ aCaseNumber ].iFirstMemoryAllocation;
+    caseInfo.iLastMemoryAllocation = KCases[ aCaseNumber ].iLastMemoryAllocation;
+    return caseInfo;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::CreateSifUi()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::CreateSifUi()
+    {
+    if( iSifUi )
+        {
+        delete iSifUi;
+        iSifUi = NULL;
+        }
+
+    TRAPD( err, iSifUi = CSifUi::NewL() );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::CreateTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::CreateLowMemTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "CreateLowMemTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    TInt count = 0;
+    TInt error = KErrNoMemory;
+    while( error == KErrNoMemory )
+        {
+        User::__DbgSetAllocFail( EFalse, RHeap::EDeterministic, ++count );
+        __UHEAP_MARK;
+        error = CreateSifUi();
+        __UHEAP_MARKEND;
+        User::__DbgSetAllocFail( EFalse, RHeap::ENone, count );
+        }
+    TestModuleIf().Printf( 1, KTestName, _L("count %d, last error %d"), count, error );
+    SetResult( aResult, error );
+    delete iSifUi;
+    iSifUi = NULL;
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::InformationNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::InformationNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "InformationNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EChangeText,
+        EWaitSomeTime,
+        EAllDone
+        };
+    _LIT( KInfoNoteText, "This is information note" );
+    _LIT( KChangedInfoNoteText, "Changed information note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->DisplayInformationNoteL( KInfoNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayInformationNoteL( KChangedInfoNoteText ) );
+                break;
+            case EWaitSomeTime:
+                User::After( KOneSecond );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::WarningNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::WarningNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "WarningNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EChangeText,
+        EWaitSomeTime,
+        EAllDone
+        };
+    _LIT( KWarningNoteText, "This is warning note" );
+    _LIT( KChangedWarningNoteText, "Changed warning note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->DisplayInformationNoteL( KWarningNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayInformationNoteL( KChangedWarningNoteText ) );
+                break;
+            case EWaitSomeTime:
+                User::After( KOneSecond );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::ErrorNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::ErrorNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "ErrorNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EChangeText,
+        EAllDone
+        };
+    _LIT( KErrorNoteText, "This is error note" );
+    _LIT( KChangedErrorNoteText, "Changed error note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->DisplayErrorNoteL( KErrorNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayErrorNoteL( KChangedErrorNoteText ) );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::PermanentNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::PermanentNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "PermanentNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EDisplayNote,
+        EChangeText,
+        ECloseNote,
+        EDisplayDelayedNote,
+        EChangeDelayedNoteText,
+        ECloseSecondNote,
+        EAllDone
+        };
+
+    _LIT( KPermanentNoteText, "This is permanent note" );
+    _LIT( KChangedNoteText, "Changed permanent note text" );
+    _LIT( KDelayedNoteText, "This is delayed permanent note" );
+    _LIT( KChangedDelayedNoteText, "Changed delayed permanent note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->ClosePermanentNote() );
+                break;
+            case EDisplayNote:
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KPermanentNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KChangedNoteText ) );
+                break;
+            case ECloseNote:
+                TRAP( result, iSifUi->ClosePermanentNote() );
+                break;
+            case EDisplayDelayedNote:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KDelayedNoteText ) );
+                break;
+            case EChangeDelayedNoteText:
+                User::After( KFiveSeconds );
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KChangedDelayedNoteText ) );
+                break;
+            case ECloseSecondNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->ClosePermanentNote() );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::ProgressNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::ProgressNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "ProgressNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EDisplayProgressNote,
+        EIncreaseBar1,
+        EIncreaseBar2,
+        EChangeProgressText,
+        EIncreaseBar3,
+        EIncreaseBar4,
+        EIncreaseBar5,
+        ECloseProgressNote,
+        EDelayedProgressNote,
+        EAllDone
+        };
+    _LIT( KProgressNoteText, "This is progress note" );
+    _LIT( KChangedProgressNoteText, "Changed progress note text" );
+
+    const TInt KProgressBarFinalValue = 6;
+    TInt progressBarValue = -1;
+    TRequestStatus reqStatus;       // ignored now, not monitoring if user cancels the note
+    TRequestStatus reqUpdate;
+    TInt result = CreateSifUi();
+    for( TInt step = EDisplayProgressNote; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EDisplayProgressNote:
+                TRAP( result, iSifUi->DisplayProgressNoteL( KProgressNoteText, reqStatus ) );
+                if( result == KErrNone )
+                    {
+                    TRAP( result, iSifUi->SetProgressNoteFinalValueL( KProgressBarFinalValue ) );
+                    }
+                break;
+
+            case EIncreaseBar1:
+            case EIncreaseBar2:
+            case EIncreaseBar3:
+            case EIncreaseBar4:
+            case EIncreaseBar5:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->UpdateProgressNoteValueL( progressBarValue ) );
+                progressBarValue += 2;
+                break;
+
+            case EChangeProgressText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayProgressNoteL( KChangedProgressNoteText, reqUpdate ) );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqUpdate );
+                    result = reqUpdate.Int();
+                    }
+                break;
+
+            case ECloseProgressNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->CloseProgressNoteL() );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+
+            case EDelayedProgressNote:
+                TRAP( result, iSifUi->DisplayProgressNoteL( KProgressNoteText, reqStatus ) );
+                if( result == KErrNone )
+                    {
+                    User::After( KHalfSecond );
+                    TRAP( result, iSifUi->CloseProgressNoteL() );
+                    }
+                break;
+
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::WaitNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::WaitNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "WaitNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        ECloseWaitNoteBeforeItsOpened,
+        EDisplayWaitNote,
+        EChangeDisplayedText,
+        ECloseFirstWaitNote,
+        EDisplayDelayedWaitNote,
+        EChangeDelayedWaitNoteText,
+        ECloseWaitNote,
+        EAllDone
+        };
+    _LIT( KWaitNoteText, "This is wait note" );
+    _LIT( KChangedWaitNoteText, "Changed wait note text" );
+    _LIT( KDelayedWaitNoteText, "This is delayed wait note" );
+    _LIT( KChangedDelayedWaitNoteText, "Changed delayed wait note text" );
+
+    TInt result = CreateSifUi();
+    TRequestStatus reqStatus;       // ignored now, not monitoring if user cancels the note
+    for( TInt step = EDisplayWaitNote; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case ECloseWaitNoteBeforeItsOpened:
+                TRAP( result, iSifUi->CloseWaitNote() );
+                break;
+            case EDisplayWaitNote:
+                TRAP( result, iSifUi->DisplayWaitNoteL( KWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case EChangeDisplayedText:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayWaitNoteL( KChangedWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case ECloseFirstWaitNote:
+                TRAP( result, iSifUi->CloseWaitNote() );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case EDisplayDelayedWaitNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayWaitNoteL( KDelayedWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case EChangeDelayedWaitNoteText:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayWaitNoteL( KChangedDelayedWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case ECloseWaitNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->CloseWaitNote() );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::LaunchHelpTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::LaunchHelpTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "LaunchHelpTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    TInt result = CreateSifUi();
+    if( result == KErrNone )
+        {
+        AsyncWaitAndSendKeyEventL( KFiveSeconds, KRightSoftkey );
+
+        _LIT( KAM_HLP_INSTALL_CAPAB, "AM_HLP_INSTALL_CAPAB" );
+        TRAP( result, iSifUi->LaunchHelpL( KAM_HLP_INSTALL_CAPAB ) );
+
+        delete iSifUi;
+        iSifUi = NULL;
+        }
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
--- a/appinstaller/AppinstUi/Daemon/Inc/DialogWrapper.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Inc/DialogWrapper.h	Fri Apr 16 15:05:20 2010 +0300
@@ -22,7 +22,8 @@
 //  INCLUDES
 #include <e32base.h>
 #include <f32file.h>
-#include <barsc.h>
+// TODO probably removed in 10.1
+// #include <barsc.h>
 #include "dialogwatcher.h"
 
 namespace Swi
@@ -107,7 +108,7 @@
 
     private: //  Data
 
-        RResourceFile iResourceFile;        
+        //RResourceFile iResourceFile;        
         RFs& iFs;        
         TInt iNoteId;  
         TInt iDisableAllNotes;
--- a/appinstaller/AppinstUi/Daemon/Inc/SilentLauncher.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Inc/SilentLauncher.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -23,6 +23,8 @@
 #include <e32base.h>
 #include <f32file.h>
 #include <SWInstApi.h>
+#include <usif/sif/sif.h>
+#include <usif/sif/sifcommon.h>
 
 namespace Swi
 {
@@ -73,15 +75,20 @@
         * 2nd phase constructor.
         */
         void ConstructL();
+                  
 
     private: //  Data
-            
-        SwiUI::RSWInstSilentLauncher iLauncher;    
-        SwiUI::TInstallOptions iOptions;
-        SwiUI::TInstallOptionsPckg iOptionsPckg;   
-
-        RFs& iFs;        
-        TBool iConnected;
+        
+        // SW installer framework
+        Usif::RSoftwareInstall iSWInstallerFW;
+        // Install parameters
+        Usif::COpaqueNamedParams* iSifOptions;
+        // Result parameters like error codes.
+        Usif::COpaqueNamedParams* iSifResults;
+        // File server
+        RFs& iFs;
+        // Defines if we have connected to SWI server.
+        TBool iConnected;                    
     };
 }
 
--- a/appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h	Fri Apr 16 15:05:20 2010 +0300
@@ -116,6 +116,14 @@
      @param aDirectory The directory to search for PreInstalled Files   
      */
     void ProcessPreinstalledFilesL(TInt aDrive, const TDesC& aDirectory);
+    
+    /**
+     * Update component status to SCR and AppArc.
+     *
+     * @param aChangeType Defines if drive is mounted or unmounted.
+     * @param aDrive Drive which is mounted or unmounted.
+     */    
+    void UpdateComponentStatusL( TChangeType aChangeType, TInt aDrive );
 
           
 private:
--- a/appinstaller/AppinstUi/Daemon/Inc/silentuninstaller.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Inc/silentuninstaller.h	Fri Apr 16 15:05:20 2010 +0300
@@ -23,6 +23,10 @@
 #include <e32base.h>
 #include <f32file.h>
 #include <SWInstApi.h>
+#include <usif/sif/sif.h>
+#include <usif/sif/sifcommon.h>
+
+#include "sisregistrysession.h"
 
 namespace Swi
 {
@@ -81,12 +85,14 @@
 
     private: //  Data
         
-        // Silent uninstaller
-        SwiUI::RSWInstSilentLauncher iLauncher;
-        // Uninstall options
-        SwiUI::TUninstallOptions iOptions;
-        // Uninstall options package
-        SwiUI::TUninstallOptionsPckg iOptionsPckg;
+        // SW installer framework
+        Usif::RSoftwareInstall iSWInstallerFW;
+        // Install parameters
+        Usif::COpaqueNamedParams* iSifOptions;
+        // Result parameters like error codes.
+        Usif::COpaqueNamedParams* iSifResults;
+        // SisRegister for native install packages.
+        RSisRegistrySession iRegistrySession;
         // File server
         RFs& iFs;
         // Defines need of connection to install server.
--- a/appinstaller/AppinstUi/Daemon/Src/DialogWrapper.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/DialogWrapper.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -18,16 +18,19 @@
 
 
 // INCLUDE FILES
-#include <AknGlobalNote.h>
-#include <avkon.rsg>
-#include <bautils.h>
-#include <data_caging_path_literals.hrh> 
-#include <swidaemon.rsg>
+// TODO needs to be removed in 10.1
+//#include <AknGlobalNote.h> 
+//#include <avkon.rsg>
+// TODO maybe removed 10.1
+//#include <bautils.h>  // file operations like FileMan
+//#include <data_caging_path_literals.hrh> // resource paths
+// TODO probably not needed in QT.
+//#include <swidaemon.rsg>
 
 #include "DialogWrapper.h"
 #include "SWInstDebug.h"
 
-_LIT( KDaemonResourceFile, "swidaemon.rsc" );
+//_LIT( KDaemonResourceFile, "swidaemon.rsc" );
 
 using namespace Swi;
 
@@ -51,18 +54,19 @@
 //
 void CDialogWrapper::ConstructL()
     {
+//TODO: All resoureces nees to be rewriten for device dialogs (QT)    
     // Get resource file path
-    TFileName fileName;
-    fileName.Copy( TParsePtrC( RProcess().FileName() ).Drive() );
-    fileName.Append( KDC_RESOURCE_FILES_DIR );
-    fileName.Append( KDaemonResourceFile );
+    //TFileName fileName;
+    //fileName.Copy( TParsePtrC( RProcess().FileName() ).Drive() );
+    //fileName.Append( KDC_RESOURCE_FILES_DIR );
+    //fileName.Append( KDaemonResourceFile );
     
     // Get language of resource file        
-    BaflUtils::NearestLanguageFile( iFs, fileName );
+    //BaflUtils::NearestLanguageFile( iFs, fileName );
 
     // Open resource file
-    iResourceFile.OpenL( iFs, fileName );
-    iResourceFile.ConfirmSignatureL();
+    //iResourceFile.OpenL( iFs, fileName );
+    //iResourceFile.ConfirmSignatureL();
   
     // By default Daemon will show all notes.
     iDisableAllNotes = EFalse;
@@ -92,11 +96,16 @@
     CleanupStack::Pop( self );
     return self;    
     }
-    
+
+// -----------------------------------------------------------------------------
+// CDialogWrapper::~CDialogWrapper
 // Destructor
+// -----------------------------------------------------------------------------
+//    
 CDialogWrapper::~CDialogWrapper()
     {
-    iResourceFile.Close();
+    //iResourceFile.Close();
+    
     if ( iWatcher )
         {
         iWatcher->StopWatcher();
@@ -111,17 +120,18 @@
 // -----------------------------------------------------------------------------
 // 
 void CDialogWrapper::ShowUntrustedResultL()
-    {  
+    {
+    //TODO: All resoureces nees to be rewriten for device dialogs (QT)    
     // Let watcher to know that waiting note is canceled.
-    iWatcher->CancelNoteRequest();
+    //iWatcher->CancelNoteRequest();
     
-    if ( iDisableAllNotes == EFalse )
-        {    
-        HBufC* string = ReadResourceLC( R_DAEMON_UNTRUSTED_FOUND );    
-        CAknGlobalNote* note = CAknGlobalNote::NewLC();
-        note->ShowNoteL( EAknGlobalInformationNote, *string );   
-        CleanupStack::PopAndDestroy( 2, string ); 
-        }
+    //if ( iDisableAllNotes == EFalse )
+    //    {    
+    //    HBufC* string = ReadResourceLC( R_DAEMON_UNTRUSTED_FOUND );    
+    //    CAknGlobalNote* note = CAknGlobalNote::NewLC();
+    //    note->ShowNoteL( EAknGlobalInformationNote, *string );   
+    //    CleanupStack::PopAndDestroy( 2, string ); 
+    //    }
     }
 
 // -----------------------------------------------------------------------------
@@ -132,15 +142,18 @@
 // 
 void CDialogWrapper::ShowErrorResultL()
     { 
+    //TODO: All resoureces nees to be rewriten for device dialogs (QT)   
     // Let watcher to know that waiting note is canceled.
     iWatcher->CancelNoteRequest();   
     
     if ( iDisableAllNotes == EFalse )
         {
+        /*
         HBufC* string = ReadResourceLC( R_DAEMON_INSTALLATION_ERROR );    
         CAknGlobalNote* note = CAknGlobalNote::NewLC();
         note->ShowNoteL( EAknGlobalInformationNote, *string );   
-        CleanupStack::PopAndDestroy( 2, string );  
+        CleanupStack::PopAndDestroy( 2, string );
+        */  
         }
     }
 
@@ -152,16 +165,19 @@
 // 
 void CDialogWrapper::ShowWaitingNoteL()
 	{
+    //TODO: All resoureces nees to be rewriten for device dialogs (QT)   
     if ( iDisableAllNotes == EFalse )
         {
+        /*
         if ( iNoteId == 0 )
-            {
+            {            
             HBufC* string = ReadResourceLC( R_DAEMON_INSTALLING );   
             CAknGlobalNote* note = CAknGlobalNote::NewLC();
             note->SetSoftkeys( R_AVKON_SOFTKEYS_EMPTY );
             iNoteId = note->ShowNoteL( EAknGlobalWaitNote, *string );
-            CleanupStack::PopAndDestroy( 2, string );
+            CleanupStack::PopAndDestroy( 2, string );           
             }
+        */    
         }
     else if ( iDisableAllNotes )
         {
@@ -179,6 +195,8 @@
 // 
 void CDialogWrapper::CancelWaitingNoteL()
 	{
+    //TODO: All resoureces nees to be rewriten for device dialogs (QT)   
+    /*
 	if ( iNoteId )
 		{
 		CAknGlobalNote* note = CAknGlobalNote::NewLC();
@@ -186,16 +204,21 @@
 		iNoteId = 0;
 		CleanupStack::PopAndDestroy();
 		}
+	*/	
     // Let watcher to know that waiting note is canceled.
 	iWatcher->CancelNoteRequest();
  	}
-// CDialogWrapper::LoadResourceLC
+
+// -----------------------------------------------------------------------------
+// CDialogWrapper::LoadResourceLC  
 // Read resource string.
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 // 
 HBufC* CDialogWrapper::ReadResourceLC( TInt aResourceId )
     {
+    //TODO: All resoureces nees to be rewriten for device dialogs (QT)   
+    /*
     TResourceReader reader;
     HBufC8* buff = iResourceFile.AllocReadLC( aResourceId );    
     reader.SetBuffer( buff );
@@ -203,6 +226,8 @@
     CleanupStack::PopAndDestroy( buff );
     CleanupStack::PushL( text );
     return text;
+    */
+    return NULL;
     }
 
 // -----------------------------------------------------------------------------
@@ -222,8 +247,10 @@
 // 
 void CDialogWrapper::ShowWaitingNoteForUninstallerL()
     {
+    //TODO: All resoureces nees to be rewriten for device dialogs (QT)   
     if ( iDisableAllNotes == EFalse )
         {
+        /*
         if ( iNoteId == 0 )
             {
             HBufC* string = ReadResourceLC( R_UNINSTALLER_INSTALL );   
@@ -232,6 +259,7 @@
             iNoteId = note->ShowNoteL( EAknGlobalWaitNote, *string );
             CleanupStack::PopAndDestroy( 2, string );
             }
+        */    
         }
     else if ( iDisableAllNotes )
         {
--- a/appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -44,14 +44,49 @@
 //
 void CSilentLauncher::ConstructL()
     {
-    iOptions.iUpgrade = SwiUI::EPolicyNotAllowed;
-    iOptions.iOCSP = SwiUI::EPolicyNotAllowed;
-#ifndef RD_MULTIPLE_DRIVE 
-    iOptions.iDrive = 'E';
-#endif       
-    iOptions.iUntrusted = SwiUI::EPolicyNotAllowed; 
-    iOptions.iCapabilities = SwiUI::EPolicyNotAllowed;    
-    iOptionsPckg = iOptions;    
+    iConnected = EFalse;
+    
+    iSifOptions = Usif::COpaqueNamedParams::NewL();
+    iSifResults = Usif::COpaqueNamedParams::NewL();
+    
+    // Set needed parameters for silent install.
+    iSifOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue ); 
+/*    
+    iSifOptions->AddIntL( Usif::KSifInParam_PerformOCSP, EFalse );   
+    // Note if upgrade is allowed, see NeedsInstallingL function.
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowUpgrade, EFalse );
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowUntrusted, EFalse );
+    iSifOptions->AddIntL( Usif::KSifInParam_GrantCapabilities, EFalse ); 
+    // Defined for the install.
+    iSifOptions->AddIntL( Usif::KSifInParam_InstallOptionalItems, ETrue );          
+    iSifOptions->AddIntL( Usif::KSifInParam_IgnoreOCSPWarnings, ETrue );   
+    iSifOptions->AddIntL( Usif::KSifInParam_DisplayPackageInfo, ETrue );     
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, ETrue );
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowDownload, ETrue );
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowOverwrite, ETrue );
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowOverwrite, ETrue );
+*/    
+// TODO: is this defined in USIF?    
+    //iSifOptions->AddIntL( Usif::KSifInParam_Languages, NULL );
+    
+// TODO: remove old params.
+    /*
+    // Old swinstdefs.inl defines for install.   
+    iUpgrade( EPolicyAllowed ),
+    iOptionalItems( EPolicyAllowed ),
+    iOCSP( EPolicyAllowed ),    
+    iIgnoreOCSPWarnings( EPolicyAllowed ),
+    iUntrusted( EPolicyNotAllowed ),
+    iPackageInfo( EPolicyAllowed ),
+    iCapabilities( EPolicyAllowed ),
+    iKillApp( EPolicyAllowed ),
+    iDownload( EPolicyAllowed ),
+    iOverwrite( EPolicyAllowed ),
+    iDrive( 'C' ),
+    iLang( ELangNone ),
+    iUsePhoneLang( ETrue ),
+    iUpgradeData( EPolicyAllowed )
+    */        
     }
 
 // -----------------------------------------------------------------------------
@@ -67,11 +102,21 @@
     CleanupStack::Pop( self );
     return self;    
     }
-    
-// Destructor
+
+// -----------------------------------------------------------------------------
+// CSilentLauncher::~CSilentLauncher()
+// Destructor.
+// -----------------------------------------------------------------------------
+//    
 CSilentLauncher::~CSilentLauncher()
     {
-    iLauncher.Close();
+    delete iSifOptions;
+    delete iSifResults;
+    
+    if ( iConnected )
+        {
+        iSWInstallerFW.Close();
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -82,23 +127,33 @@
 //
 void CSilentLauncher::InstallL( const TDesC& aFile, TRequestStatus& aStatus )
     {
+    FLOG( _L("Daemon: CSilentLauncher::InstallL START") );
+    
     if ( !iConnected )
-        {
-        FLOG( _L("Daemon: Connect to installer server") );    
-        User::LeaveIfError( iLauncher.Connect() );    
-        FLOG( _L("Daemon: Connected to installer server") );
-        iConnected = ETrue;            
-        }
+         {
+         FLOG( _L("Daemon: Connect to sif installer server") );    
+         User::LeaveIfError( iSWInstallerFW.Connect() );             
+         iConnected = ETrue;            
+         }
         
-#ifdef RD_MULTIPLE_DRIVE 
-    FLOG( _L("Daemon: InstallL: Set drive for install") );   
-    // Set drive for installer.          
-    iOptions.iDrive = aFile[0];
-#endif                
-
-    // Launch the installation
+    // Set drive for installer.
+//    delete iDrive  
+//    iDrive = NULL;
+//    iDrive = HBufC::NewLC( 8 );
+//    TPtr drivePtr = iDrive->Des();
+//    drivePtr.Append( aFile[0] );
+    
+// TODO: how is this used? Is this drive letter?      
+//    iSifOptions->AddStringL( Usif::KSifInParam_Drive , *drive );
+//          
     FLOG( _L("Daemon: Launch install") );
-    iLauncher.SilentInstall( aStatus, aFile, iOptionsPckg );
+    iSWInstallerFW.Install( aFile, 
+                           *iSifOptions, 
+                           *iSifResults,
+                           aStatus,
+                           ETrue );
+    
+    FLOG( _L("Daemon: CSilentLauncher::InstallL END") );       
     }
        
 // -----------------------------------------------------------------------------
@@ -109,8 +164,8 @@
 // 
 void CSilentLauncher::Cancel()
     {
-    FLOG( _L("Daemon: Install cancel requested") );        
-    iLauncher.CancelAsyncRequest( SwiUI::ERequestSilentInstall );   
+    FLOG( _L("Daemon: Cancel Install operation") );            
+    iSWInstallerFW.CancelOperation();
     }
 
 //  End of File  
--- a/appinstaller/AppinstUi/Daemon/Src/daemon.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/daemon.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -19,12 +19,24 @@
 #include "drivewatcher.h"
 #include "SWInstDebug.h"
 #include "securitypolicy.h"
-#include "sisregistrysession.h"
+
+//#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include <e32property.h>
+#include <connect/sbdefs.h>
+#include "../../../../installationservices/swtransactionservices/inc/stsrecovery.h"
+#include "swiobserverclient.h"
+//#else
+//#include "sisregistrysession.h"
+//#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 namespace Swi
 {
 // CDaemon
 
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//     
 /*static*/ CDaemon* CDaemon::NewL(MDaemonBehaviour& aBehaviour)
     {
     CDaemon* self=NewLC(aBehaviour);
@@ -32,6 +44,10 @@
     return self;
     }
 
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//     
 /*static*/ CDaemon* CDaemon::NewLC(MDaemonBehaviour& aBehaviour)
     {
     CDaemon* self=new(ELeave) CDaemon(aBehaviour);
@@ -39,7 +55,11 @@
     self->ConstructL();
     return self;
     }
-  
+
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//       
 CDaemon::~CDaemon()
     { 
     iPolicyLockFile.Close();
@@ -48,11 +68,19 @@
     iFs.Close();
     }
 
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//     
 CDaemon::CDaemon(MDaemonBehaviour& aBehaviour)
     : iBehaviour(aBehaviour)
     {
     }
 
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//     
 void CDaemon::ConstructL()
     {
     User::LeaveIfError(iFs.Connect());
@@ -64,6 +92,10 @@
     StartWatchersL();
     }
 
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//     
 void CDaemon::StartWatchersL()
     {
     FLOG( _L("Daemon: Start watchers") );        
@@ -152,6 +184,10 @@
     } // StartWatchersL()
 
 
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//     
 void CDaemon::LockSensitiveFiles()
     {
     TInt err = iPolicyLockFile.Open( 
@@ -162,6 +198,41 @@
     FLOG_1( _L("Daemon: Policy file lock error = %d."), err );  
     }
 
+//#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
+// -----------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------
+//     
+void CDaemon::StartRecoveryL()
+    {
+    FLOG( _L("Daemon: StartRecoveryL: Check to see if a recovery is needed.") );
+
+    // Check to see if a backup is in progress...
+    TInt backup = 0;
+    User::LeaveIfError( RProperty::Get( KUidSystemCategory, conn::KUidBackupRestoreKey,backup ) );
+
+    // if no backup or restore is in progress...
+    if( backup == conn::EBURUnset || ( backup == ( conn::EBURNormal | conn::ENoBackup ) ) )
+        {
+        // no recovery attempt is made during backup/restore as recovery may seriously affect
+        // the file system, which might impact backup/restore, recovery will be made at next bootup
+        Usif::RStsRecoverySession stsRecoverySession;
+        // A recovery failure should not affect Daemon start up.
+        TRAPD( err, stsRecoverySession.RollbackAllPendingL() );
+        if( err != KErrNone )
+            {
+            FLOG_1( _L("CDaemon::StartRecoveryL() - STS server failed to recover transactions. Error code: %d"), err );
+            }
+        // Start SWI Observer so that it can process the log files left from the previous session.
+        RSwiObserverSession swiObserver;
+        swiObserver.ProcessLogsL( iFs );
+        swiObserver.Close();
+        }
+    }
+
+/*
+//#else
   
 void CDaemon::StartRecoveryL()
     { 
@@ -178,4 +249,7 @@
     FLOG( _L("Daemon: StartRecoveryL: Recovery check finished.") ); 
     } // StartRecoveryL()
 
+#endif  // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+*/
+
 } // namespace Swi
--- a/appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -15,6 +15,13 @@
 *
 */
 
+#include <usif/scr/scr.h>
+#include <usif/scr/scrcommon.h>
+#include <usif/scr/screntries.h>
+#include <apgcli.h>    //RApaSession
+//TODO enable apparc support
+//#include <appinfo.h> //TAppInfo
+
 #include "daemonbehaviour.h"
 #include "swispubsubdefs.h"
 #include "recsisx.h"
@@ -22,275 +29,452 @@
 #include "SWInstDebug.h"
 #include "sisregistryentry.h"
 
+using namespace Swi;
 
-namespace Swi
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::NewL
+// -----------------------------------------------------------------------
+//    
+CDaemonBehaviour* CDaemonBehaviour::NewL( CProgramStatus& aMainStatus )
     {
+    CDaemonBehaviour* self = NewLC( aMainStatus );
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::NewLC
+// -----------------------------------------------------------------------
+//
+CDaemonBehaviour* CDaemonBehaviour::NewLC( CProgramStatus& aMainStatus )
+    {
+    CDaemonBehaviour* self = new (ELeave) CDaemonBehaviour;
+    CleanupStack::PushL(self);
+    self->ConstructL( aMainStatus );
+    return self;  
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::ConstructL
+// -----------------------------------------------------------------------
+//        
+void CDaemonBehaviour::ConstructL( CProgramStatus& aMainStatus )
+    {
+    User::LeaveIfError(iFs.Connect());
+    User::LeaveIfError(iFs.ShareProtected());
+    
     // For uninstaller
-    CDaemonBehaviour* CDaemonBehaviour::NewL( CProgramStatus& aMainStatus )
-        {
-        CDaemonBehaviour* self = NewLC( aMainStatus );
-        CleanupStack::Pop(self);
-        return self;
-        }
-  
-    CDaemonBehaviour* CDaemonBehaviour::NewLC( CProgramStatus& aMainStatus )
-        {
-        CDaemonBehaviour* self = new (ELeave) CDaemonBehaviour;
-        CleanupStack::PushL(self);
-        self->ConstructL( aMainStatus );
-        return self;  
-        }
-    
-    void CDaemonBehaviour::ConstructL( CProgramStatus& aMainStatus )
+    iSisInstaller = CSisInstaller::NewL( this, aMainStatus );
+    // Create plugin
+    TRAP_IGNORE( iSwiDaemonPlugin = CSwiDaemonPlugin::NewL() );   
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::~CDaemonBehaviour
+// -----------------------------------------------------------------------
+//      
+CDaemonBehaviour::~CDaemonBehaviour()
+    {
+    if ( iSwiDaemonPlugin )
         {
-        User::LeaveIfError(iFs.Connect());
-        User::LeaveIfError(iFs.ShareProtected());
-        
-        // For uninstaller
-        iSisInstaller = CSisInstaller::NewL( this, aMainStatus );
-        // Create plugin
-        TRAP_IGNORE( iSwiDaemonPlugin = CSwiDaemonPlugin::NewL() );   
-        }
-  
-    CDaemonBehaviour::~CDaemonBehaviour()
+        delete iSwiDaemonPlugin;
+        REComSession::FinalClose();
+        }   
+    delete iSisInstaller;
+    iSisInstaller = NULL;
+    iFs.Close();  
+            
+#ifdef RD_MULTIPLE_DRIVE    
+    iDriveArray.Close();
+#endif        
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::StartupL
+// -----------------------------------------------------------------------
+//         
+TBool CDaemonBehaviour::StartupL()
+    {
+    // Return state of Startup
+    return ETrue;
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::MediaChangeL
+// -----------------------------------------------------------------------
+//     
+void CDaemonBehaviour::MediaChangeL(TInt aDrive, TChangeType aChangeType)
+    {
+    FLOG_1( _L("Daemon: Media change %d"), aDrive );
+    RSisRegistryWritableSession registrySession;
+    
+    User::LeaveIfError( registrySession.Connect() );
+    CleanupClosePushL( registrySession );
+    
+    
+    if ( aChangeType==EMediaInserted )
         {
-        if ( iSwiDaemonPlugin )
+        FLOG( _L("Daemon: Media inserted") ); 
+
+        // Notify SCR and AppArc for media change.
+        UpdateComponentStatusL( aChangeType, aDrive );
+
+        // We need call sis registry since this call will
+        // activate sis registry to clean uninstalled components
+        // from inserted media.
+        registrySession.AddDriveL(aDrive);
+                                                
+        // Scan directory on the card and run pre-installed through SWIS
+        FLOG( _L("Daemon: Media change: Process preinstalled files") );
+        ProcessPreinstalledFilesL(aDrive);            
+       
+        // Add inserted media drive to drive array.                     
+        if ( iDriveArray.Find(aDrive) == KErrNotFound )
+            {                
+            iDriveArray.AppendL(aDrive); 
+            }           
+        }
+    else if (aChangeType==EMediaRemoved)
+        {
+        FLOG( _L("Daemon: Media removed") );       
+                   
+        // Notify SCR and AppArc for media change.
+        UpdateComponentStatusL( aChangeType, aDrive );
+ 
+        // Get Installer state.                   
+        TBool installerRunning = iSisInstaller->IsInstalling();
+        
+        // Cancel all requests for install
+        iSisInstaller->Cancel();                       
+    
+        // Notify plugin
+        if(iSwiDaemonPlugin)
             {
-            delete iSwiDaemonPlugin;
-            REComSession::FinalClose();
-            }   
-        delete iSisInstaller;
-        iSisInstaller = NULL;
-        iFs.Close();  
-                
-#ifdef RD_MULTIPLE_DRIVE    
-        iDriveArray.Close();
-#endif        
+            TInt index = iDriveArray.Find(aDrive);
+            iSwiDaemonPlugin->MediaRemoved(index);
+            }
+    
+        // Get index of removed drive from array
+        TInt index = iDriveArray.Find(aDrive);
+    
+        if ( index > KErrNotFound )
+            {
+            iDriveArray.Remove(index); 
+            iDriveArray.Compress();   
+            }
+    
+        // Continue installing from other drives if needed.
+        if ( installerRunning )
+            {                                     
+            // Get count of inserted drives.
+            TInt count = iDriveArray.Count();
+                    
+            if ( count )            
+                {                             
+                for(index = 0; index < count; index++ )
+                    {                                        
+                    ProcessPreinstalledFilesL(iDriveArray[index]);
+                    iSisInstaller->StartInstallingL();                
+                    }
+                }                
+            }                      
         }
     
-    // from MDaemonBehaviour
-    TBool CDaemonBehaviour::StartupL()
-        {
-        // Return state of Startup
-        return ETrue;
-        }
+    CleanupStack::PopAndDestroy(&registrySession);
+    }
 
-    void CDaemonBehaviour::MediaChangeL(TInt aDrive, TChangeType aChangeType)
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::ProcessPreinstalledFilesL
+// -----------------------------------------------------------------------
+//          
+void CDaemonBehaviour::ProcessPreinstalledFilesL(TInt aDrive)
+    {
+//    _LIT( KDaemonPrivatePath,":\\private\\10202dce\\" );
+    
+    // NOTE this is only for testing since we can not use
+    // Daemon's private folder. Sifserver do not have allfiles
+    // capability currently.
+    _LIT( KDaemonPrivatePath,":\\installs\\swidaemon\\" );
+    
+#ifndef RD_MULTIPLE_DRIVE
+    iSisInstaller->Cancel();
+#endif      
+    // For uninstaller
+    // Set on installing mode.
+    iGeneralProcessStatus = EStateInstalling; 
+    FLOG_1( _L("[CDaemonBehaviour] iGeneralProcessStatus = %d"), 
+    iGeneralProcessStatus );
+    
+    ProcessPreinstalledFilesL(aDrive, KDaemonPrivatePath);
+    iStartNotified = EFalse;
+    iDrive = aDrive;    
+    iSisInstaller->StartInstallingL();
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::ProcessPreinstalledFilesL
+// -----------------------------------------------------------------------
+//        
+void CDaemonBehaviour::ProcessPreinstalledFilesL(TInt aDrive, const TDesC& aDirectory)
+    {
+    FLOG( _L("Daemon: ProcessPreInstalledFilesL") );
+    TPath preInstalledPath;
+    TChar drive;
+    RFs::DriveToChar(aDrive, drive);
+    preInstalledPath.Append(drive);
+    preInstalledPath.Append(aDirectory);
+    
+    FLOG_1( _L("Daemon: ProcessPreInstalledFilesL Getting dir %S"), &preInstalledPath );
+    CDir* dir = NULL;
+    TInt err = iFs.GetDir(preInstalledPath, KEntryAttNormal, ESortNone, dir); 
+    if (err != KErrNone && err != KErrPathNotFound)
         {
-        FLOG_1( _L("Daemon: Media change %d"), aDrive );
-        RSisRegistryWritableSession registrySession;
-        
-        User::LeaveIfError(registrySession.Connect());
-        CleanupClosePushL(registrySession);
-        
-        if (aChangeType==EMediaInserted)
+        FLOG_1( _L("Daemon: ProcessPreInstalledFilesL GetDir with error %d"), err );
+        User::Leave(err);
+        }
+    if(dir)
+        {
+        // dir will only exist if GetDir succeeded
+        CleanupStack::PushL(dir);
+        for(TInt i = 0; i < dir->Count(); i++)
             {
-            FLOG( _L("Daemon: Media inserted") );  
-            FLOG( _L("Daemon: Media change: Update sis registry") );            
-            // notify IAR
-            // Error ou1cimx1#212652
-            // Note SWI Daemon needs to notify sis registry from
-            // media change. Otherwice registry is not updated
-            // and e.g. IsPresentL function will give false results.
-            // Note also that this function should be called before
-            // ProcessPreinstalledFilesL in SWI Daemon.            
-            registrySession.AddDriveL(aDrive);
-                                                
-            // Scan directory on the card and run pre-installed through SWIS
-            FLOG( _L("Daemon: Media change: Process preinstalled files") );
-            ProcessPreinstalledFilesL(aDrive);            
-        
-#ifdef RD_MULTIPLE_DRIVE   
-            // Add inserted media drive to drive array.                     
-            if ( iDriveArray.Find(aDrive) == KErrNotFound )
-                {                
-                iDriveArray.AppendL(aDrive); 
-                }      
-#endif      
+            const TEntry &entry = (*dir)[i];
+            if(!entry.IsDir())
+                {
+                TFileName fileName(preInstalledPath);
+                fileName.Append(entry.iName);
+                iSisInstaller->AddFileToInstallL(fileName);
+                }
             }
-        else if (aChangeType==EMediaRemoved)
-            {
-            FLOG( _L("Daemon: Media removed") ); 
-        
-#ifdef RD_MULTIPLE_DRIVE     
-            // Get Installer state.                   
-            TBool installerRunning = iSisInstaller->IsInstalling();                        
-#endif 
-        
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK                                           
-            // notify IAR
-            // Note SWI Daemon need to notify sis registry from
-            // media change.            
-            registrySession.RemoveDriveL(aDrive);
-#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-        
-            // Cancel all requests for install
-            iSisInstaller->Cancel();
-        
-#ifdef RD_MULTIPLE_DRIVE
-            // Notify plugin
-            if(iSwiDaemonPlugin)
-                {
-                TInt index = iDriveArray.Find(aDrive);
-                iSwiDaemonPlugin->MediaRemoved(index);
-                }
-#else
-            // Notify plugin
-            if(iSwiDaemonPlugin)
-                {
-                iSwiDaemonPlugin->MediaRemoved(aDrive);
-                }
-#endif //RD_MULTIPLE_DRIVE            
+        CleanupStack::PopAndDestroy(dir);
+        }
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::GetProcessStatus
+// -----------------------------------------------------------------------
+//     
+TInt& CDaemonBehaviour::GetProcessStatus()
+    {
+    return iGeneralProcessStatus;
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::SetProcessStatus
+// -----------------------------------------------------------------------
+//     
+void CDaemonBehaviour::SetProcessStatus( TInt aStatus )
+    {
+    iGeneralProcessStatus = aStatus;
+    }     
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::DoNotifyMediaProcessingComplete
+// -----------------------------------------------------------------------
+//      
+void CDaemonBehaviour::DoNotifyMediaProcessingComplete()
+    {
+    if ( iSwiDaemonPlugin && iStartNotified )
+        {
+        iSwiDaemonPlugin->MediaProcessingComplete();
+        }
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::IsPlugin
+// -----------------------------------------------------------------------
+//         
+// For plugin support
+TBool CDaemonBehaviour::IsPlugin()
+    {        
+    if ( iSwiDaemonPlugin )
+        {
+        return ETrue;
+        }        
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::NotifyPlugin
+// -----------------------------------------------------------------------
+//        
+// For plugin support
+void CDaemonBehaviour::NotifyPlugin()
+    {
+    FLOG( _L("Daemon: NotifyPlugin"));
+    if ( !iStartNotified )
+        {
+        FLOG_1( _L("Daemon: MediaProcessingStart for drive = %d"), iDrive );
+        iSwiDaemonPlugin->MediaProcessingStart( iDrive );
+        iStartNotified = ETrue;
+        }    
+    }
+
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::RequestPluginInstall
+// -----------------------------------------------------------------------
+//         
+void CDaemonBehaviour::RequestPluginInstall( TDesC& aSisFile )
+    {
+    // Note We will open file in here but that is only because
+    // plug-in interface has been designed this way. Original
+    // Symbian SWI daemon did use RApaLsSession for installing
+    // and thus RFile was open already. 
+    // Since current SWI Daemon does use SWI API it doesn't 
+    // open files and thus we need to open the file in here.        
+    FLOG( _L("Daemon: RequestPluginInstall "));
+            
+    RFile file;
+    User::LeaveIfError( file.Open( 
+            iFs, aSisFile, EFileRead | EFileShareReadersOnly ) );
+    CleanupClosePushL( file );
+    
+    iSwiDaemonPlugin->RequestInstall( file );
+    
+    // close file, original SWI Daemon do not leave file open.
+    CleanupStack::PopAndDestroy( &file ); 
+    }
+ 
+// -----------------------------------------------------------------------
+// CDaemonBehaviour::UpdateComponentStatusL
+// -----------------------------------------------------------------------
+//         
+void CDaemonBehaviour::UpdateComponentStatusL( 
+   TChangeType aChangeType, 
+   TInt aDrive )
+    {
+    FLOG( _L("Daemon: UpdateComponentStatus") ); 
+            
+    Usif::RSoftwareComponentRegistry scrServer; 
+    User::LeaveIfError( scrServer.Connect() );
+    CleanupClosePushL( scrServer );
+            
+    // Filter all other component types except sisx.
+    Usif::CComponentFilter* filter = Usif::CComponentFilter::NewLC();        
+    filter->SetSoftwareTypeL( Usif::KSoftwareTypeNative );
         
-#ifdef RD_MULTIPLE_DRIVE
-            // Get index of removed drive from array
-            TInt index = iDriveArray.Find(aDrive);
-        
-            if ( index > KErrNotFound )
-                {
-                iDriveArray.Remove(index); 
-                iDriveArray.Compress();   
-                }
-        
-            // Continue installing from other drives if needed.
-            if ( installerRunning )
-                {                                     
-                // Get count of inserted drives.
-                TInt count = iDriveArray.Count();
-                        
-                if ( count )            
-                    {                             
-                    for(index = 0; index < count; index++ )
-                        {                                        
-                        ProcessPreinstalledFilesL(iDriveArray[index]);
-                        iSisInstaller->StartInstallingL();                
-                        }
-                    }                
-                }           
-#endif            
-            }
-        
-        CleanupStack::PopAndDestroy(&registrySession);
-        }
-      
-    void CDaemonBehaviour::ProcessPreinstalledFilesL(TInt aDrive)
+    RArray<Usif::TComponentId> componentIdList;
+    CleanupClosePushL( componentIdList );
+    
+    // Get list of all native (sisx) installed packages. 
+    scrServer.GetComponentIdsL( componentIdList, filter  );
+    FLOG_1( _L("Daemon: componentIdList count: %d"),componentIdList.Count() ); 
+   
+    if ( componentIdList.Count() )
         {
-        _LIT(KDaemonPrivatePath,":\\private\\10202dce\\");
-        
-#ifndef RD_MULTIPLE_DRIVE
-        iSisInstaller->Cancel();
-#endif      
-        // For uninstaller
-        // Set on installing mode.
-        iGeneralProcessStatus = EStateInstalling; 
-        FLOG_1( _L("[CDaemonBehaviour] iGeneralProcessStatus = %d"), 
-        iGeneralProcessStatus );
-        
-        ProcessPreinstalledFilesL(aDrive, KDaemonPrivatePath);
-        iStartNotified = EFalse;
-        iDrive = aDrive;    
-        iSisInstaller->StartInstallingL();
-        }
+// TODO Enabloi AppArcin päivitys. 
+// TODO Hae TAppInfon headeri includeen.        
+//            RArray<TAppInfo> appinfoArray;
+//            CleanupClosePushL( appinfoArray );
+    
+        // Convert the given target drive number to drive letter.
+        TChar targetDrive;
+        iFs.DriveToChar( aDrive, targetDrive );
+        FLOG_1( _L("Daemon: targetDrive: 0x%x"), TUint( targetDrive ) ); 
     
-    void CDaemonBehaviour::ProcessPreinstalledFilesL(TInt aDrive, const TDesC& aDirectory)
-        {
-        FLOG( _L("Daemon: ProcessPreInstalledFilesL") );
-        TPath preInstalledPath;
-        TChar drive;
-        RFs::DriveToChar(aDrive, drive);
-        preInstalledPath.Append(drive);
-        preInstalledPath.Append(aDirectory);
-        
-        FLOG_1( _L("Daemon: ProcessPreInstalledFilesL Getting dir %S"), &preInstalledPath );
-        CDir* dir = NULL;
-        TInt err = iFs.GetDir(preInstalledPath, KEntryAttNormal, ESortNone, dir); 
-        if (err != KErrNone && err != KErrPathNotFound)
-            {
-            FLOG_1( _L("Daemon: ProcessPreInstalledFilesL GetDir with error %d"), err );
-            User::Leave(err);
-            }
-        if(dir)
-            {
-            // dir will only exist if GetDir succeeded
-            CleanupStack::PushL(dir);
-            for(TInt i = 0; i < dir->Count(); i++)
-                {
-                const TEntry &entry = (*dir)[i];
-                if(!entry.IsDir())
+        FLOG( _L("Daemon: Check all SCR native components") ); 
+        // Check all components in SCR. If media is removed/inserted
+        // change status flag in SCR and in AppArc.
+        for ( TInt index=0; index < componentIdList.Count(); index++ )
+            {                       
+            Usif::CComponentEntry* entry = Usif::CComponentEntry::NewL();
+            CleanupStack::PushL( entry );
+            
+            Usif::TComponentId componentId( componentIdList[index] );
+            FLOG_1( _L("Daemon: componentId: %d"), componentId ); 
+            
+            scrServer.GetComponentL( componentId, 
+                                     *entry, 
+                                     Usif::KUnspecifiedLocale ); 
+            
+// TODO poista ei tarvetta jos filter toimii.
+            //if ( entry->SoftwareType() == Usif::KSoftwareTypeNative  )
+            
+            // Get all component drives.
+            TDriveList driveList;                
+            driveList = entry->InstalledDrives();
+               
+            TBool isInTargetDrive = EFalse;
+
+            FLOG( _L("Daemon: Check all drives for this component") ); 
+            // Go through all drives which have files for 
+            // this component.
+            for ( TInt i = 0; i < KMaxDrives; i++ )
+                {                
+                if ( driveList[i] != 0 )
                     {
-                    TFileName fileName(preInstalledPath);
-                    fileName.Append(entry.iName);
-                    iSisInstaller->AddFileToInstallL(fileName);
+                    TChar installDrive = 
+                            static_cast<TChar>( driveList[i] );
+                
+                    FLOG_1( _L("Daemon: driveList index: %d"), i ); 
+                    FLOG_1( _L("Daemon: installDrive: 0x%x"), TUint( installDrive ) ); 
+                    
+                    if ( targetDrive == installDrive )
+                        {
+                        // Ok we have files in this target drive.
+                        isInTargetDrive = ETrue;
+                        FLOG( _L("Daemon: SW in target drive.") ); 
+                        }
                     }
                 }
-            CleanupStack::PopAndDestroy(dir);
-            }
-        }
-
-    // For uninstaller
-    TInt& CDaemonBehaviour::GetProcessStatus()
-        {
-        return iGeneralProcessStatus;
-        }
-
-    // For uninstaller
-    void CDaemonBehaviour::SetProcessStatus( TInt aStatus )
-        {
-        iGeneralProcessStatus = aStatus;
-        }     
-  
-    // For plugin support
-    void CDaemonBehaviour::DoNotifyMediaProcessingComplete()
-        {
-        if ( iSwiDaemonPlugin && iStartNotified )
-            {
-            iSwiDaemonPlugin->MediaProcessingComplete();
-            }
-        }
-    
-    // For plugin support
-    TBool CDaemonBehaviour::IsPlugin()
-        {        
-        if ( iSwiDaemonPlugin )
-            {
-            return ETrue;
-            }        
-        return EFalse;
-        }
+                                
+            // Check if component or part of it is in the media.
+            if ( isInTargetDrive )
+                {
+                FLOG( _L("Daemon: Set component status to SCR") ); 
+//                    TAppInfo appInfo;                     
+//                    appInfo.iAppUid = componentId;
+                                    
+                if ( aChangeType == EMediaInserted )
+                    {  
+                    // Update component flag to SCR.
+                    scrServer.SetIsComponentPresentL( componentId, 
+                                                      ETrue );
+                    FLOG( _L("Daemon: Set component present = TRUE") );                             
+                    // Set app status for AppArc. AppArc sees this 
+                    // as new component.
+//                        appInfo.iAppUid = TAppInfo::ENewApp;
+                    }
+                else if ( aChangeType==EMediaRemoved )
+                    {
+                   // Update component flag to SCR.
+                    scrServer.SetIsComponentPresentL( componentId, 
+                                                      EFalse );
+                    FLOG( _L("Daemon: Set component present = FALSE") );                            
+                    // Set app status for AppArc. AppArc sees this 
+                    // component as removed.
+//                        appInfo.iAppUid = TAppInfo::ERemoveApp;
+                    }
+                
+                // Add component info to array.
+//                    appinfoArray.Append( appInfo );                    
+                }                     
+            
+            CleanupStack::PopAndDestroy( entry );
+            entry = NULL;
+            } // for
+//TODO enable AppArc support when TAppInfo is available.            
+/*       
+         FLOG( _L("Daemon: Set component status to AppArc") ); 
+         // Update AppArc list after we have all components in array.               
+         RApaLsSession appArcSession;
+         TInt err = appArcSession.Connect();
+         if ( !err )
+             {
+             CleanupClosePushL(appArcSession);
+             appArcSession.UpdateAppListL( appinfoArray );
+             CleanupStack::PopAndDestroy();                   
+             }
+        
+        CleanupStack::PopAndDestroy( &appinfoArray );
+*/ 
+        } // if componentList.Count()
+             
+    CleanupStack::PopAndDestroy( &componentIdList ); //componentIDList.Close();
+    CleanupStack::PopAndDestroy( filter ); 
+    CleanupStack::PopAndDestroy( &scrServer );  
+    FLOG( _L("Daemon: UpdateComponentStatus END") ); 
+    }       
     
-    // For plugin support
-    void CDaemonBehaviour::NotifyPlugin()
-        {
-        FLOG( _L("Daemon: NotifyPlugin"));
-        if ( !iStartNotified )
-            {
-            FLOG_1( _L("Daemon: MediaProcessingStart for drive = %d"), iDrive );
-            iSwiDaemonPlugin->MediaProcessingStart( iDrive );
-            iStartNotified = ETrue;
-            }    
-        }
-    
-    // For plugin support
-    void CDaemonBehaviour::RequestPluginInstall( TDesC& aSisFile )
-        {
-        // Note We will open file in here but that is only because
-        // plug-in interface has been designed this way. Original
-        // Symbian SWI daemon did use RApaLsSession for installing
-        // and thus RFile was open already. 
-        // Since current SWI Daemon does use SWI API it doesn't 
-        // open files and thus we need to open the file in here.        
-        FLOG( _L("Daemon: RequestPluginInstall "));
-                
-        RFile file;
-        User::LeaveIfError( file.Open( 
-                iFs, aSisFile, EFileRead | EFileShareReadersOnly ) );
-        CleanupClosePushL( file );
-        
-        iSwiDaemonPlugin->RequestInstall( file );
-        
-        // close file, original SWI Daemon do not leave file open.
-        CleanupStack::PopAndDestroy( &file ); 
-        }
-                                        
-    } // namespace Swi
 //EOF
--- a/appinstaller/AppinstUi/Daemon/Src/daemoninstaller.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/daemoninstaller.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -15,6 +15,8 @@
 *
 */
 
+#include <usif/scr/scr.h>
+#include <usif/scr/screntries.h>
 
 #include "daemoninstaller.h"
 #include "DialogWrapper.h"
@@ -47,8 +49,11 @@
 
 _LIT(KMCSisInstaller,"Daemon-Installer"); // Minor-Component name
 
+
+// -----------------------------------------------------------------------
 // Two phased construction
-
+// -----------------------------------------------------------------------
+// 
 CSisInstaller* CSisInstaller::NewL(    
    MDaemonInstallBehaviour* aDaemonBehaviour, 
    CProgramStatus& aMainStatus)
@@ -60,8 +65,10 @@
     return self;
     }
 	
+// -----------------------------------------------------------------------
 // Install Request constructor
-	
+// -----------------------------------------------------------------------
+//	
 CSisInstaller::CSisInstaller( MDaemonInstallBehaviour* aDaemonBehaviour ) 
     : CActive(CActive::EPriorityStandard),
     iDaemonBehaviour( aDaemonBehaviour ),
@@ -69,14 +76,14 @@
     iFileIndex(0),
     iInstallErr( KErrNone )
     {
-    CActiveScheduler::Add(this);
-#ifdef RD_MULTIPLE_DRIVE      
-    iInstallerState = EDSisInstallerStateIdle;
-#endif       
+    CActiveScheduler::Add(this);    
+    iInstallerState = EDSisInstallerStateIdle;       
     }
 	
-// Install Request destructor
-
+// -----------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------
+//
 CSisInstaller::~CSisInstaller()
     {
     Cancel();
@@ -92,8 +99,10 @@
     delete iShutdownWatcher;  
     }
 	
+// -----------------------------------------------------------------------
 // 2nd phase construction
-
+// -----------------------------------------------------------------------
+//
 void CSisInstaller::ConstructL( CProgramStatus& aMainStatus )
     {
     User::LeaveIfError( iTimer.CreateLocal() );
@@ -111,9 +120,12 @@
     iUpdateCache = ETrue;       
     }
 		
+// -----------------------------------------------------------------------
+// CSisInstaller::AddFileToInstallL
 // Set the location of all sis files and the list of them
 // also take ownership of the pointers to memory
-		
+// -----------------------------------------------------------------------
+//		
 void CSisInstaller::AddFileToInstallL(const TDesC& aFileName)
     {
     HBufC* fileName = aFileName.AllocLC();
@@ -121,8 +133,12 @@
     CleanupStack::Pop( fileName );
     }
 	
+
+// -----------------------------------------------------------------------
+// CSisInstaller::StartInstallingL
 // Start the request to process the Sisx file
-
+// -----------------------------------------------------------------------
+//
 void CSisInstaller::StartInstallingL()
     {
     FLOG( _L("Daemon: StartInstallingL") );
@@ -159,14 +175,22 @@
     if ( iState == EDSisInstallerStateIdle )
         {
         // Reset the error
-        iInstallErr = KErrNone;        
+        iInstallErr = KErrNone; 
+        // Update cache so we do not try to start install for
+        // components which are installed.
+        FLOG( _L("Daemon: StartInstallingL: Update installed cache") );
+        TRAP_IGNORE( iPreviouslyInstalledAppsCache->UpdateAllL() );
+        TRAP_IGNORE( iPreviouslyInstalledAppsCache->FlushToDiskL() );    
+        
         CompleteSelf();
         }
     }
     
-#ifdef RD_MULTIPLE_DRIVE 
+// -----------------------------------------------------------------------
+// CSisInstaller::IsInstalling
 // Returns state of Installer. 
-
+// -----------------------------------------------------------------------
+//
 TBool CSisInstaller::IsInstalling()
     {
     if ( iInstallerState == EDSisInstallerStateCompleted )
@@ -178,12 +202,15 @@
         return ETrue;
         }    
     }  
-#endif //RD_MULTIPLE_DRIVE       
-
+       
+// -----------------------------------------------------------------------
+// CSisInstaller::CompleteSelf
 // Complete the request manually
-		
+// -----------------------------------------------------------------------
+//		
 void CSisInstaller::CompleteSelf()
     {
+    FLOG( _L("Daemon: CSisInstaller::CompleteSelf") );
     if ( !IsActive() )
         {        
         TRequestStatus* status = &iStatus;
@@ -192,10 +219,14 @@
         }    
     }
 
+// -----------------------------------------------------------------------
+// CSisInstaller::DoCancel
 // Cancel the active request
-
+// -----------------------------------------------------------------------
+//
 void CSisInstaller::DoCancel()
     {
+    FLOG( _L("Daemon: CSisInstaller::DoCancel") ); 
     iTimer.Cancel();
 
     iFileIndex = 0;
@@ -219,9 +250,12 @@
         }    
     }
 	
-// When the software installer has changed state
-// attemp to install a sisx file
-
+// -----------------------------------------------------------------------
+// CSisInstaller::RunL
+// When the software installer has changed state attemp to install a 
+// sisx file
+// -----------------------------------------------------------------------
+//
 void CSisInstaller::RunL()
     {
     FLOG_2( _L("Daemon: Installer RunL status:%d, state:%d"), iStatus.Int(), iState );                
@@ -235,10 +269,8 @@
         TTimeIntervalMicroSeconds32 time( KWaitUninstallerTime );                        
         iTimer.After(iStatus,time);          
         // Set to idle, installer has not yet started.
-        iState = EDSisInstallerStateIdle;
- #ifdef RD_MULTIPLE_DRIVE                
-        iInstallerState = iState;
- #endif                                
+        iState = EDSisInstallerStateIdle;                
+        iInstallerState = iState;                                 
         SetActive();                                
         }    
     else
@@ -261,10 +293,8 @@
                     // User might be installing something, wait before retrying 
                     TTimeIntervalMicroSeconds32 time( KInstallRetryWaitTime );                        
                     iTimer.After(iStatus,time);
-                    iState = EDSisInstallerStateInstallerBusy;
-    #ifdef RD_MULTIPLE_DRIVE                
-                    iInstallerState = iState;
-    #endif                                
+                    iState = EDSisInstallerStateInstallerBusy;               
+                    iInstallerState = iState;                                  
                     SetActive();                        
                     break;                        
                     }                
@@ -303,11 +333,8 @@
                 if ( iFileIndex < iFilesToInstall.Count() )
                     {
                     // Kick of the next installation
-                    iState = EDSisInstallerStateIdle;
-    #ifdef RD_MULTIPLE_DRIVE                
-                    iInstallerState = iState;
-    #endif                
-                    
+                    iState = EDSisInstallerStateIdle;                  
+                    iInstallerState = iState;                                       
                     CompleteSelf();
                     }   
                 else
@@ -358,10 +385,9 @@
                             // Let's continue to give all packages to plug-in. 
                             // Note that we do not have iStatus as this is not async. call 
                             // so we can not use EDSisInstallerStateInstalling state.                             
-                            iState = EDSisInstallerStateIdle;                           
-        #ifdef RD_MULTIPLE_DRIVE                
+                            iState = EDSisInstallerStateIdle;                                                 
                             iInstallerState = iState;
-        #endif           
+                
                             // Plugin interface is not asyncronous. We need to 
                             // complete self to get all packages to plugin.                            
                             CompleteSelf(); 
@@ -371,20 +397,16 @@
                             FLOG_1( _L("Daemon: Kick off the install for %S"), &iSisFile );
                             iInstallLauncher->InstallL( iSisFile, iStatus );
                             iDialogs->ShowWaitingNoteL(); 
-                            iState = EDSisInstallerStateInstalling;
-        #ifdef RD_MULTIPLE_DRIVE                
-                            iInstallerState = iState;
-        #endif                                            
+                            iState = EDSisInstallerStateInstalling;                       
+                            iInstallerState = iState;                                                   
                             SetActive();
                             }
                         }               
                     else
                         {                  
                         FLOG_1( _L("Daemon: No need to install %S"), &iSisFile );                                
-                        iState = EDSisInstallerStateIdle;
-    #ifdef RD_MULTIPLE_DRIVE                
-                        iInstallerState = iState;
-    #endif                    
+                        iState = EDSisInstallerStateIdle;                
+                        iInstallerState = iState;                   
                         // Clear current pkg UID                    
                         iCurrentPackageId = TUid::Null();                                   
                         
@@ -406,11 +428,8 @@
                 FLOG( _L("Daemon: RunL: EDSisInstallerStateInstallerBusy") );  
                 FLOG_1( _L("Daemon: Kick off the install for %S"), &iSisFile );
                 iInstallLauncher->InstallL( iSisFile, iStatus );
-                iState = EDSisInstallerStateInstalling;
-    #ifdef RD_MULTIPLE_DRIVE                
-                iInstallerState = iState;
-    #endif                
-                
+                iState = EDSisInstallerStateInstalling;                   
+                iInstallerState = iState;                                   
                 SetActive(); 
                 break;                       
                 
@@ -420,18 +439,26 @@
                 break;
             }
         } // else for uninstaller
+    FLOG( _L("Daemon: RunL END") ); 
     }
 	
+// -----------------------------------------------------------------------
+// CSisInstaller::RunError
 // If RunL leaves then ignore errors
-
+// -----------------------------------------------------------------------
+//
 TInt CSisInstaller::RunError(TInt aError)
     {
-    FLOG_1( _L("Daemon: Installer RunL error %d"), aError );                
+    FLOG_1( _L("Daemon: Installer Run error %d"), aError );                
     TInt err( KErrNone );
     InstallationCompleted( aError );                
     return err;
     }	
-    
+
+// -----------------------------------------------------------------------
+// CSisInstaller::NotifyShuttingDown
+// -----------------------------------------------------------------------
+//    
 void CSisInstaller::NotifyShuttingDown()
     {
     // System is closing down, we need to stop installations and save
@@ -439,8 +466,12 @@
     // Application server receives EApaSystemEventShutdown event that
     // closes it down.
     Cancel();
-    }    	
+    }   
 
+// -----------------------------------------------------------------------
+// CSisInstaller::InstallationCompleted
+// -----------------------------------------------------------------------
+//
 void CSisInstaller::InstallationCompleted( TInt aResult )
     {
     FLOG_1( _L("Daemon: InstallationCompleted with result = %d"), aResult );  
@@ -452,14 +483,12 @@
     // It may be that plug-in does install packages after cache is updated.
     iUpdateCache = ETrue;
     
-#ifdef RD_MULTIPLE_DRIVE 
     // If all files are installed set status to completed.
     if ( iFileIndex >= iFilesToInstall.Count() )
         {                
         iInstallerState = EDSisInstallerStateCompleted; 
         }
-#endif                          
-   
+                            
     TRAP_IGNORE( iDialogs->CancelWaitingNoteL() );
     
     if ( aResult != KErrNone && 
@@ -475,12 +504,13 @@
             TRAP_IGNORE( iDialogs->ShowErrorResultL() );
             }    
         }
-    
-    FLOG( _L("Daemon: InstallationCompleted: Update installed cache") );
+
+//TODO: remove this update. This is done in start installing !!!!     
+    //FLOG( _L("Daemon: InstallationCompleted: Update installed cache") );
     // Update cache so we do not start to install those packages 
     // which are installed by the user manyally. 
     // NOTE! plugin will install stuff after this call.
-    TRAP_IGNORE(iPreviouslyInstalledAppsCache->UpdateAllL());
+    //TRAP_IGNORE(iPreviouslyInstalledAppsCache->UpdateAllL());
     
     TRAP_IGNORE(iPreviouslyInstalledAppsCache->FlushToDiskL(););    
     TRAP_IGNORE(iInstallationFailedAppsCache->FlushToDiskL());   
@@ -499,12 +529,16 @@
           }       
     }  
 
+// -----------------------------------------------------------------------
+// CSisInstaller::NeedsInstallingL
 // Indicates if this package is installed or not.
-	
+// -----------------------------------------------------------------------
+//	
 TBool CSisInstaller::NeedsInstallingL( const TDesC& aPackageName )
     {
-    FLOG( _L("Daemon: NeedsInstallingL") ); 
-    TBool result( ETrue );
+    FLOG( _L("Daemon: CSisInstaller::NeedsInstallingL") ); 
+    //TBool result( ETrue );
+    TBool needsInstalling( ETrue );
     
     // Read the controller data from the package
     CFileSisDataProvider* fileProvider = CFileSisDataProvider::NewLC( iFs, aPackageName ); 
@@ -517,7 +551,6 @@
     CleanupStack::PushL( controller );                            
 
     // Code to read UID
-
 	CDesDataProvider* controllerProvider= CDesDataProvider::NewLC(*controller);
 	CController* controllerObject = NULL;
 	controllerObject = CController::NewL(*controllerProvider);
@@ -525,15 +558,25 @@
 
 	TUid packageId = controllerObject->Info().Uid().Uid();
 
-	CleanupStack::PopAndDestroy(controllerObject);
-	CleanupStack::PopAndDestroy(controllerProvider);
+	CleanupStack::PopAndDestroy( controllerObject );
+	CleanupStack::PopAndDestroy( controllerProvider );
 
-	FLOG_1( _L("Daemon: NeedsInstallingL: Is UID installed = 0x%x"), packageId.iUid );
-	result = !iPreviouslyInstalledAppsCache->HasBeenPreviouslyInstalled(packageId);
-	FLOG_1( _L("Daemon: NeedsInstallingL: Has been installed (cache) = %d"), !result ); 
+	// Check if sw is installed previously. 
+	// Note if UID is found sw will not be installed even if user 
+	// has uninstall it bacause cache is not updated from SCR.
+	FLOG_1( _L("Daemon: Is UID installed = 0x%x"), packageId.iUid );
+	needsInstalling = !iPreviouslyInstalledAppsCache->
+                            HasBeenPreviouslyInstalled(packageId);
+	FLOG_1( _L("Daemon: Has been installed (cache) = %d"), !needsInstalling );
 	
-	if (result)
-	    {
+// TODO: Onko rom stubien tarkistus tarpeen jos upgrade ei ole sallittu.
+// Ei taida kannattaa tarksitaan RU ei pitäisi mennä läpi.
+	FLOG( _L("Daemon: HUOM ROM STUBEJA EI TARKISTETA") ); 	
+	/*	
+	// Huom! edellinen koodi ollut väärin koska UID on jo cachessä !
+	// Tarkistus pitää tehdä vain jos UID löytyy cachestä.
+	if ( !needsInstalling )
+        {
         RSisRegistrySession registry;
         User::LeaveIfError( registry.Connect() );  
         CleanupClosePushL( registry );  
@@ -548,32 +591,40 @@
             User::LeaveIfError( entry.Open( registry, packageId ) );
             CleanupClosePushL( entry ); 
             
-            result = entry.IsInRomL();
+            needsInstalling = entry.IsInRomL();
             
-            FLOG_1( _L("Daemon: NeedsInstallingL: Is in ROM = %d"), result );              
+            FLOG_1( _L("Daemon: NeedsInstallingL: Is in ROM = %d"), needsInstalling );              
             CleanupStack::PopAndDestroy( &entry );           
             }
         CleanupStack::PopAndDestroy( &registry ); 
-		}
-		
+        }
+	*/	
+	
     // Check that previous install attempt did not fail.		
-	if (result)
+	if ( needsInstalling )
 	    {
-	    result = !iInstallationFailedAppsCache->HasPreviousInstallationFailed( packageId );
-	    FLOG_1( _L("Daemon: NeedsInstallingL: Has failed (cache) = %d"), !result ); 
+	    needsInstalling = !iInstallationFailedAppsCache->
+	            HasPreviousInstallationFailed( packageId );
+	    FLOG_1( _L("Daemon: Has failed (cache) = %d"), !needsInstalling ); 
 	    }
 
     // Update pkg ID. ID is added to cache after installation.
-    if (result)
+    if ( needsInstalling )
         {        
         iCurrentPackageId = packageId;
         }
     
+    // fileProvider, content, controller
     CleanupStack::PopAndDestroy( 3 );
-        
-    return result;            
+    
+    FLOG_1( _L("Daemon: NeedsInstallingL = %d"), needsInstalling );    
+    return needsInstalling;            
     }  
 
+// -----------------------------------------------------------------------
+// CSisInstaller::IsMediaPresent
+// -----------------------------------------------------------------------
+//
 TBool CSisInstaller::IsMediaPresent( TChar aDrive )
     {
     TInt drive( 0 );
@@ -595,6 +646,10 @@
         }
     }
 
+// -----------------------------------------------------------------------
+// CSisInstaller::IsValidPackageL
+// -----------------------------------------------------------------------
+//
 TBool CSisInstaller::IsValidPackageL( const TDesC& aPackageName )
     {
     TBool result( EFalse );
@@ -611,6 +666,7 @@
         result = ETrue;
         }
 
+    FLOG_1( _L("Daemon: IsValidPackageL = %d"), result );  
     return result;    
     }
     
--- a/appinstaller/AppinstUi/Daemon/Src/drivewatcher.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/drivewatcher.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -19,64 +19,106 @@
 #include "drivewatcher.h"
 #include "SWInstDebug.h"
 
-namespace Swi
-{
+using namespace Swi;
+
 // CDriveWatcher
 _LIT(KNotificationDirectory,"mediachange\\");
 
-/*static*/ CDriveWatcher* CDriveWatcher::NewL(RFs& aFs, TInt aDrive, 
-												MDriveObserver& aObserver,
-							 					TInt aPriority)
+
+// -----------------------------------------------------------------------
+// CDriveWatcher::NewL
+// -----------------------------------------------------------------------
+//    
+/*static*/ 
+CDriveWatcher* CDriveWatcher::NewL( RFs& aFs, 
+                                    TInt aDrive, 
+                                    MDriveObserver& aObserver,
+                                    TInt aPriority )
 	{
-	CDriveWatcher* self=NewLC(aFs, aDrive, aObserver, aPriority);
+	CDriveWatcher* self = NewLC( aFs, aDrive, aObserver, aPriority );
 	CleanupStack::Pop(self);
 	return self;
 	}
-	
-/*static*/ CDriveWatcher* CDriveWatcher::NewLC(RFs& aFs, TInt aDrive, 
-												MDriveObserver& aObserver,
-							 					TInt aPriority)
+
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+// 
+/*static*/ 
+CDriveWatcher* CDriveWatcher::NewLC( RFs& aFs, 
+                                     TInt aDrive, 
+                                     MDriveObserver& aObserver,
+                                     TInt aPriority )
 	{
-	CDriveWatcher* self=new(ELeave) CDriveWatcher(aFs, aDrive, aObserver, aPriority);
-	CleanupStack::PushL(self);
+	CDriveWatcher* self = new(ELeave) CDriveWatcher( aFs, 
+	                                                 aDrive, 
+	                                                 aObserver, 
+	                                                 aPriority );
+	CleanupStack::PushL( self );
 	self->ConstructL();
 	return self;	
 	}
-	
+
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//
 CDriveWatcher::~CDriveWatcher()
 	{
 	Cancel();
 	}
 
-CDriveWatcher::CDriveWatcher(RFs& aFs, TInt aDrive, MDriveObserver& aObserver,
-							 TInt aPriority)
-	: CActive(aPriority), iFs(aFs), iDrive(aDrive), iObserver(aObserver)
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//
+CDriveWatcher::CDriveWatcher( RFs& aFs, 
+                              TInt aDrive, 
+                              MDriveObserver& aObserver,
+                              TInt aPriority )
+                              : CActive(aPriority), 
+                                iFs(aFs), 
+                                iDrive(aDrive), 
+                                iObserver(aObserver)
 	{
 	CActiveScheduler::Add(this);
 	}
 
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//
 void CDriveWatcher::ConstructL()
 	{
-	// Notify observer of media change since we're beginning from an unknown state
+	// Notify observer of media change since we're beginning 
+    // from an unknown state
 	NotifyMediaChange();
 	
 	// Start watching for changes
 	WaitForChangeL();
 	}
 
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//
 void CDriveWatcher::DoCancel()
 	{
 	iFs.NotifyChangeCancel(iStatus);
 	}
 
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//
 TBool CDriveWatcher::IsMediaPresentL()
 	{
-        FLOG_1( _L("Daemon: Checking media presence for drive %d"), iDrive );
+    FLOG_1( _L("Daemon: Checking media presence for drive %d"), iDrive );
         
 	TVolumeInfo volumeInfo;
-	TInt err=iFs.Volume(volumeInfo, iDrive);
+	TInt err = iFs.Volume( volumeInfo, iDrive );
 	
-	switch (err)
+	switch ( err )
 		{
 		case KErrNotReady: // No Media present
 			{
@@ -89,22 +131,33 @@
 			}
 		}
 
-	User::Leave(err);	
+	User::Leave( err );	
 	return ETrue;	// Will never get here.
 	}
 
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//
 void CDriveWatcher::NotifyMediaChange()
 	{
-        FLOG( _L("Daemon: NotifyMediaChange") );        
+    FLOG( _L("Daemon: NotifyMediaChange") );        
 	// Unsuccessful media change is not fatal, so handle here
-	TRAPD(err,iObserver.MediaChangeL(iDrive, IsMediaPresentL() ? MDriveObserver::EMediaInserted : MDriveObserver::EMediaRemoved));
+	TRAPD( err, iObserver.MediaChangeL( iDrive, 
+	                                    IsMediaPresentL() 
+	                                    ? MDriveObserver::EMediaInserted : 
+                                        MDriveObserver::EMediaRemoved));
 
 	if (err != KErrNone)
 		{
-                FLOG_1(_L("Daemon: MDriveObserver::MediaChangeL left while processing media notification %d"),err);
+        FLOG_1(_L("Daemon: MediaChangeL TRAP err = %d"), err );
 		}              
 	}
-	
+
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//	
 void CDriveWatcher::RunL()
 	{
 	NotifyMediaChange();
@@ -112,22 +165,29 @@
 	WaitForChangeL();
 	}
 
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//
 void CDriveWatcher::WaitForChangeL()
 	{
 	TChar drive;
-	User::LeaveIfError(iFs.DriveToChar(iDrive, drive));
+	User::LeaveIfError( iFs.DriveToChar( iDrive, drive ) );
 	TUint driveChar(drive); // Can't pass TChar to Format().
 	
 	TPath notificationPath;
 	TPath privatePath;
 	_LIT(KNotificationPathFormat,"%c:%S%S");
-	User::LeaveIfError(iFs.PrivatePath(privatePath));
+	User::LeaveIfError( iFs.PrivatePath( privatePath ) );
 
-	notificationPath.Format(KNotificationPathFormat, driveChar, &privatePath, &KNotificationDirectory);	
+	notificationPath.Format( KNotificationPathFormat, 
+	                         driveChar, 
+	                         &privatePath, 
+	                         &KNotificationDirectory );	
 	
-	iFs.NotifyChange(ENotifyEntry, iStatus, notificationPath);
+	iFs.NotifyChange( ENotifyEntry, iStatus, notificationPath );
 
 	SetActive();
 	}
 	
-}
+//EOF
--- a/appinstaller/AppinstUi/Daemon/Src/installationFailedAppsCache.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/installationFailedAppsCache.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -23,14 +23,13 @@
 #include "sisregistrysession.h"
 #include "sisregistryentry.h"
 #include "sisregistrypackage.h"
+#include "installationFailedAppsCache.h"
+#include "SWInstDebug.h"
 
 using namespace Swi;
 
-#include "installationFailedAppsCache.h"
-
 _LIT(KInstFaildeApps, "c:\\private\\10202DCE\\instFailedAppsCache.dat");
 
-#include "SWInstDebug.h"
 
 // ----------------------------
 // Borrowed from cleanuputils.h:-
@@ -75,6 +74,10 @@
 // End of code from swi/inc/cleanuputils.h
 
 
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//    
 CInstallationFailedAppsCache *CInstallationFailedAppsCache::NewL()
 	{
 	FLOG( _L("Daemon: CInstallationFailedAppsCache::NewL") ); 
@@ -86,26 +89,37 @@
 	return self;
 	}
 
-
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//   
 CInstallationFailedAppsCache::~CInstallationFailedAppsCache()
 	{
 	iUidsArray.Reset();
 	}
 
-
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//   
 void CInstallationFailedAppsCache::AddPackageUID( TUid aUid )
 	{
-	FLOG( _L("Daemon: CInstallationFailedAppsCache::AddPackageUID") );
+    FLOG( _L("Daemon: CInstallationFailedAppsCache::AddPackageUID") );
+    FLOG_1( _L("Daemon: AddPackageUID: Add UID = 0x%x"), aUid.iUid );
 	
 	(void)iUidsArray.InsertInSignedKeyOrder( aUid );
 	// New UID added to array. Let's write cache to disk.
 	iNewUID = ETrue;		
 	}
 
-
-TBool CInstallationFailedAppsCache::HasPreviousInstallationFailed( TUid aUid )
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//   
+TBool CInstallationFailedAppsCache::HasPreviousInstallationFailed( 
+        TUid aUid )
 	{
-	FLOG( _L("Daemon: CInstallationFailedAppsCache::HasPreviousInstallationFailed") );
+	FLOG( _L("Daemon: FailedAppsCache::HasPreviousInstallationFailed") );
 	
 	if ( iUidsArray.FindInSignedKeyOrder( aUid ) == KErrNotFound )
 		{
@@ -117,17 +131,25 @@
 	return ETrue;
 	}
 
-
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//   
 CInstallationFailedAppsCache::CInstallationFailedAppsCache()
 	{
 	}
 
-
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//   
 void CInstallationFailedAppsCache::ConstructL()
 	{
 	User::LeaveIfError( iFs.Connect() );
 	TInt drive = 0;
-    iFs.CharToDrive( TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive()[0], drive );
+    iFs.CharToDrive( TParsePtrC( 
+            PathInfo::PhoneMemoryRootPath() ).Drive()[0], drive );
+    
     iFs.CreatePrivatePath( drive );
     
     iNewUID = EFalse;
@@ -136,7 +158,10 @@
 	TRAP_IGNORE( InitFromCacheFileL() );
 	}
 
-
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//   
 void CInstallationFailedAppsCache::InitFromCacheFileL()
 	{
 	FLOG( _L("Daemon: CInstallationFailedAppsCache::InitFromCacheFileL") );	
@@ -144,7 +169,9 @@
 	// Read in existing cache file.
 	RFile cacheFile;
 	
-	TInt err = cacheFile.Open( iFs, KInstFaildeApps, EFileStream|EFileRead );
+	TInt err = cacheFile.Open( iFs, 
+	                           KInstFaildeApps, 
+	                           EFileStream|EFileRead );
 	
 	if ( err != KErrNone )
 		{
@@ -174,7 +201,10 @@
 	CleanupStack::PopAndDestroy(&cacheFile);
     }
 
-
+// -----------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------
+//   
 void CInstallationFailedAppsCache::FlushToDiskL()
 	{
     FLOG( _L("Daemon: CInstallationFailedAppsCache::FlushToDiskL") );		
@@ -184,13 +214,17 @@
     	{
     	FLOG( _L("Daemon: Write cache to disk") );
     	RFile cacheFile;
-    	TInt err = cacheFile.Open( iFs, KInstFaildeApps, EFileStream|EFileWrite );
+    	TInt err = cacheFile.Open( iFs, 
+    	                           KInstFaildeApps, 
+    	                           EFileStream|EFileWrite );
     	
     	// If cache was not found, create cache file.
     	if ( err != KErrNone )
     		{
     		FLOG( _L("Daemon: Create cache file.") );
-    	    User::LeaveIfError( cacheFile.Create( iFs, KInstFaildeApps, EFileStream|EFileWrite ) );
+    	    User::LeaveIfError( cacheFile.Create( iFs, 
+    	                                          KInstFaildeApps, 
+    	                                          EFileStream|EFileWrite ) );
     		}
     	
     	CleanupClosePushL(cacheFile);
--- a/appinstaller/AppinstUi/Daemon/Src/previouslyInstalledAppsCache.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/previouslyInstalledAppsCache.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -18,6 +18,9 @@
 #include <f32file.h>
 #include <s32file.h>
 #include <pathinfo.h>
+#include <usif/scr/scr.h>
+#include <usif/scr/scrcommon.h>
+#include <usif/scr/screntries.h>
 
 #include "sisregistrysession.h"
 #include "sisregistryentry.h"
@@ -79,161 +82,221 @@
 // End of code from swi/inc/cleanuputils.h
 // ----------------------------
 
-
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::NewL
+// -----------------------------------------------------------------------
+//  
 CPreviouslyInstalledAppsCache *CPreviouslyInstalledAppsCache::NewL()
 	{
-	CPreviouslyInstalledAppsCache *self = new(ELeave)CPreviouslyInstalledAppsCache;
+	CPreviouslyInstalledAppsCache *self = 
+	        new(ELeave)CPreviouslyInstalledAppsCache;
 	CleanupStack::PushL(self);
 	self->ConstructL();
 	CleanupStack::Pop(self);
 	return self;
 	}
 
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::~CPreviouslyInstalledAppsCache
+// -----------------------------------------------------------------------
+//  
 CPreviouslyInstalledAppsCache::~CPreviouslyInstalledAppsCache()
 	{
 	iPrevPkgUids.Reset();
 	}
 
-
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::UpdateAllL
+// -----------------------------------------------------------------------
+//  
 void CPreviouslyInstalledAppsCache::UpdateAllL()
 	{
-	RThread ourThread; // nb. Default constructor gives handle to current thread.
-	if(!ourThread.HasCapability(ECapabilityReadUserData, 0))
+    FLOG( _L("Daemon: CPreviouslyInstalledAppsCache::UpdateAllL ") );
+    
+    // nb. Default constructor gives handle to current thread.
+	RThread ourThread; 
+	
+	if( !ourThread.HasCapability(ECapabilityReadUserData, 0) )
 		{
 		// Have not got ReadUserData - if we try and enumerate package
 		// UIDs the registry server will panic us!
 		User::Leave(KErrAccessDenied);
 		}
 	ourThread.Close();
-	
 
-	RSisRegistrySession registrySession;
-	User::LeaveIfError(registrySession.Connect());
-	CleanupClosePushL(registrySession);
-	
-	RPointerArray<CSisRegistryPackage> packages;
-	registrySession.InstalledPackagesL(packages);
-   	CleanupResetAndDestroy<RPointerArray<CSisRegistryPackage> >::PushL(packages);
-
-	for (TInt i=0; i< packages.Count(); ++i)
-		{
-		(void)iPrevPkgUids.InsertInSignedKeyOrder(packages[i]->Uid());
-		}
-	
-	CleanupStack::PopAndDestroy(&packages);
-	CleanupStack::PopAndDestroy(&registrySession);
+	// Let's use SisRegistry in this case since in SCR there is no
+	// simple way to retriev sisx pacakge UIDs in one call.
+    RSisRegistrySession registrySession;
+    User::LeaveIfError( registrySession.Connect() );
+    CleanupClosePushL( registrySession );
+    
+    RPointerArray<CSisRegistryPackage> packages;
+    registrySession.InstalledPackagesL( packages );
+    CleanupResetAndDestroy< 
+           RPointerArray<CSisRegistryPackage> >::PushL( packages );
+    
+    for ( TInt i = 0; i < packages.Count(); ++i )
+        {
+        (void)iPrevPkgUids.InsertInSignedKeyOrder( packages[i]->Uid() );
+        
+        FLOG_1( _L("Daemon: UpdateAllL: Add UID = 0x%x"), 
+                packages[i]->Uid().iUid );
+        }
+    
+    CleanupStack::PopAndDestroy( &packages );
+    CleanupStack::PopAndDestroy( &registrySession );
 	}
 
-void CPreviouslyInstalledAppsCache::UpdateAddL(TUid aUid)
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::UpdateAddL
+// -----------------------------------------------------------------------
+//  
+void CPreviouslyInstalledAppsCache::UpdateAddL( TUid aUid )
 	{
-	RSisRegistrySession registrySession;
-	User::LeaveIfError(registrySession.Connect());
-	CleanupClosePushL(registrySession);
-	
-	RSisRegistryEntry registryEntry;
-	TInt err = registryEntry.Open(registrySession, aUid);
-	if( err == KErrNone )
-		{
-		registryEntry.Close();
-		(void)iPrevPkgUids.InsertInSignedKeyOrder(aUid);
-		}
-
-	FLOG_1( _L("Daemon: UpdateAddL: UID add error = %d"), err );
-	
-	CleanupStack::PopAndDestroy(&registrySession);
+    FLOG( _L("Daemon: CPreviouslyInstalledAppsCache::UpdateAddL ") );
+ 
+    // Let's use SisRegistry in this case since in SCR there is no
+    // simple way to open entry with given package UIDs.
+    RSisRegistrySession registrySession;
+    User::LeaveIfError( registrySession.Connect() );
+    CleanupClosePushL( registrySession );
+    
+    RSisRegistryEntry registryEntry;
+    TInt err = registryEntry.Open( registrySession, aUid );
+    
+    if( err == KErrNone )
+        {
+        // Ok close entry and add UID to cache.
+        registryEntry.Close();
+        (void)iPrevPkgUids.InsertInSignedKeyOrder( aUid );
+        FLOG_1( _L("Daemon: UpdateAddL: Add UID = 0x%x"), aUid.iUid );
+        }
+           
+    CleanupStack::PopAndDestroy( &registrySession );
 	}
 
-TBool CPreviouslyInstalledAppsCache::HasBeenPreviouslyInstalled(TUid aPackageUid) const
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::HasBeenPreviouslyInstalled
+// -----------------------------------------------------------------------
+//  
+TBool CPreviouslyInstalledAppsCache::HasBeenPreviouslyInstalled( 
+    TUid aPackageUid ) const
 	{
-	if(iPrevPkgUids.FindInSignedKeyOrder(aPackageUid) == KErrNotFound)
+	if ( iPrevPkgUids.FindInSignedKeyOrder( aPackageUid ) == KErrNotFound )
 		{
 		return EFalse;
 		}
 	return ETrue;
 	}
 
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::CPreviouslyInstalledAppsCache
+// -----------------------------------------------------------------------
+//  
 CPreviouslyInstalledAppsCache::CPreviouslyInstalledAppsCache()
 	{
 	}
 
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::ConstructL
+// -----------------------------------------------------------------------
+//  
 void CPreviouslyInstalledAppsCache::ConstructL()
 	{
-	User::LeaveIfError(iFs.Connect());
-	TInt drive = 0;
-    iFs.CharToDrive( TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive()[0], drive );
+    User::LeaveIfError(iFs.Connect());
+    TInt drive = 0;
+    iFs.CharToDrive( 
+            TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive()[0], 
+            drive );
+    
     iFs.CreatePrivatePath( drive );
-
-	// Read cache file
-	TRAP_IGNORE(InitFromCacheFileL());
-		
+    
+    // Read cache file
+    TRAP_IGNORE( InitFromCacheFileL() );
+    
     TRAPD( err, UpdateAllL() );
-    if(err == KErrNone)
+    
+    if( err == KErrNone )
         {
-        // If we managed to scan the registry, and update the cache, flush to disk.
+        // If we managed to scan the registry, and update the cache, 
+        // flush to disk.
         TRAP_IGNORE(FlushToDiskL());
         }	
+    
+    }
 
-	}
-
-
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::InitFromCacheFileL
+// -----------------------------------------------------------------------
+//  
 void CPreviouslyInstalledAppsCache::InitFromCacheFileL()
 	{
-	// Read in existing cache file.
-	RFile cacheFile;
-	TInt err = cacheFile.Open(iFs, KPreInstalledApps, EFileStream|EFileRead);
-	if(err != KErrNone)
-		{
-			return; // No existing cache file to read.
-		}
-	CleanupClosePushL(cacheFile);
-	
-	// Now read the cache
-	RFileReadStream cacheReadStream(cacheFile);
-	cacheReadStream.PushL();
+    // Read in existing cache file.
+    RFile cacheFile;
+    TInt err = cacheFile.Open( iFs, 
+                               KPreInstalledApps, 
+                               EFileStream|EFileRead);
+    if ( err != KErrNone )
+        {
+        return; // No existing cache file to read.
+        }
+    CleanupClosePushL( cacheFile );
+    
+    // Now read the cache
+    RFileReadStream cacheReadStream( cacheFile );
+    cacheReadStream.PushL();
+    
+    iPrevPkgUids.Reset();
+    TInt32 count( cacheReadStream.ReadInt32L() );
+    
+    for ( TInt i = 0; i < count; i++ )
+        {
+        TUid packageId;
+        packageId.iUid = cacheReadStream.ReadInt32L();
+        (void)iPrevPkgUids.InsertInSignedKeyOrder( packageId );
+        }	
+    
+    CleanupStack::PopAndDestroy(&cacheReadStream);
+    CleanupStack::PopAndDestroy(&cacheFile);
+	}
 
-	iPrevPkgUids.Reset();
-	TInt32 count(cacheReadStream.ReadInt32L());
-
-	for (TInt i = 0; i < count; i++)
-		{
-		TUid packageId;
-		packageId.iUid = cacheReadStream.ReadInt32L();
-		(void)iPrevPkgUids.InsertInSignedKeyOrder(packageId);
-		}	
-	
-	CleanupStack::PopAndDestroy(&cacheReadStream);
-	CleanupStack::PopAndDestroy(&cacheFile);
-}
-
+// -----------------------------------------------------------------------
+// CPreviouslyInstalledAppsCache::FlushToDiskL
+// -----------------------------------------------------------------------
+//  
 void CPreviouslyInstalledAppsCache::FlushToDiskL()
 	{
 	// Write to disk
-	RFile cacheFile;
-	TInt err = cacheFile.Open(iFs, KPreInstalledApps, EFileStream|EFileWrite);
-	if(err != KErrNone)
-		{
-			User::LeaveIfError(cacheFile.Create(iFs, KPreInstalledApps, EFileStream|EFileWrite));
-		}
-	CleanupClosePushL(cacheFile);
-
-	// Truncate file.
-	User::LeaveIfError(cacheFile.SetSize(0));
-	
-	// Now write the cache
-	RFileWriteStream cacheWriteStream(cacheFile);
-	cacheWriteStream.PushL();
-
-	TInt32 count(iPrevPkgUids.Count());
-	cacheWriteStream.WriteInt32L(count);
-
-	for (TInt i = 0; i < count; i++)
-		{
-		cacheWriteStream.WriteInt32L(iPrevPkgUids[i].iUid);
-		}	
-	
-	cacheWriteStream.CommitL();
-	CleanupStack::PopAndDestroy(&cacheWriteStream);
-	CleanupStack::PopAndDestroy(&cacheFile);
+    RFile cacheFile;
+    TInt err = cacheFile.Open( iFs, 
+    KPreInstalledApps, 
+    EFileStream|EFileWrite );
+    if ( err != KErrNone )
+        {
+        User::LeaveIfError( cacheFile.Create( iFs, 
+                                              KPreInstalledApps, 
+                                              EFileStream|EFileWrite) );
+        }
+    CleanupClosePushL( cacheFile );
+    
+    // Truncate file.
+    User::LeaveIfError( cacheFile.SetSize(0) );
+    
+    // Now write the cache
+    RFileWriteStream cacheWriteStream( cacheFile );
+    cacheWriteStream.PushL();
+    
+    TInt32 count( iPrevPkgUids.Count() );
+    cacheWriteStream.WriteInt32L(count);
+    
+    for ( TInt i = 0; i < count; i++ )
+        {
+        cacheWriteStream.WriteInt32L( iPrevPkgUids[i].iUid );
+        }	
+    
+    cacheWriteStream.CommitL();
+    CleanupStack::PopAndDestroy( &cacheWriteStream );
+    CleanupStack::PopAndDestroy( &cacheFile );
 	}
 
 // End of file
--- a/appinstaller/AppinstUi/Daemon/Src/programstatus.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/programstatus.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -22,119 +22,119 @@
 #include "programstatus.h"
 #include "SWInstDebug.h"
 
-namespace Swi
+using namespace Swi;
+
+
+// -----------------------------------------------------------------------
+// Two-phased constructor
+// -----------------------------------------------------------------------
+//        
+CProgramStatus* CProgramStatus::NewL( TInt aProcessStatus )
     {
-    // -----------------------------------------------------------------------
-    // Two-phased constructor
-    // -----------------------------------------------------------------------
-    //        
-    CProgramStatus* CProgramStatus::NewL( TInt aProcessStatus )
-        {
-        CProgramStatus* self = NewLC( aProcessStatus );
-        CleanupStack::Pop( self );
-        return self;
-        }
-    
-    
-    // -----------------------------------------------------------------------
-    // Two-phased constructor
-    // -----------------------------------------------------------------------
-    //      
-    CProgramStatus* CProgramStatus::NewLC( TInt aProcessStatus )
-        {
-        CProgramStatus* self = new (ELeave) CProgramStatus;
-        CleanupStack::PushL( self );
-        self->ConstructL( aProcessStatus );
-        return self;    
-        }
-        
-    
-    // -----------------------------------------------------------------------
-    // 2nd phase constructor
-    // -----------------------------------------------------------------------
-    //      
-    void CProgramStatus::ConstructL( TInt aProcessStatus )
-        {                           
-        iGeneralProcessStatus = aProcessStatus;   
-        // Define PS keys for UI. 
-        DefinePSKeyForUI();
-        }
-    
+    CProgramStatus* self = NewLC( aProcessStatus );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------
+// Two-phased constructor
+// -----------------------------------------------------------------------
+//      
+CProgramStatus* CProgramStatus::NewLC( TInt aProcessStatus )
+    {
+    CProgramStatus* self = new (ELeave) CProgramStatus;
+    CleanupStack::PushL( self );
+    self->ConstructL( aProcessStatus );
+    return self;    
+    }
     
-    // -----------------------------------------------------------------------
-    // C++ destructor
-    // -----------------------------------------------------------------------
-    //      
-    CProgramStatus::~CProgramStatus()
-        {
-        }
- 
-    
-    // -----------------------------------------------------------------------
-    // Set program status.
-    // -----------------------------------------------------------------------
-    //      
-    void CProgramStatus::SetProgramStatus( TInt aProcessStatus )
-        {
-        iGeneralProcessStatus = aProcessStatus;
-        }
-    
+
+// -----------------------------------------------------------------------
+// 2nd phase constructor
+// -----------------------------------------------------------------------
+//      
+void CProgramStatus::ConstructL( TInt aProcessStatus )
+    {                           
+    iGeneralProcessStatus = aProcessStatus;   
+    // Define PS keys for UI. 
+    DefinePSKeyForUI();
+    }
+
+
+// -----------------------------------------------------------------------
+// C++ destructor
+// -----------------------------------------------------------------------
+//      
+CProgramStatus::~CProgramStatus()
+    {
+    }
+
+
+// -----------------------------------------------------------------------
+// Set program status.
+// -----------------------------------------------------------------------
+//      
+void CProgramStatus::SetProgramStatus( TInt aProcessStatus )
+    {
+    iGeneralProcessStatus = aProcessStatus;
+    }
+
+
+// -----------------------------------------------------------------------
+// Get program status.
+// -----------------------------------------------------------------------
+//      
+TInt CProgramStatus::GetProgramStatus()
+    {
+    return iGeneralProcessStatus;
+    }
+
+
+// -----------------------------------------------------------------------
+// Set program status to idle.
+// -----------------------------------------------------------------------
+//       
+void CProgramStatus::SetProgramStatusToIdle()
+    {
+    iGeneralProcessStatus = EStateIdle;
+    }
+
+// -----------------------------------------------------------------------
+// Define PS key for UI and set the key value. 
+// -----------------------------------------------------------------------
+//      
+void CProgramStatus::DefinePSKeyForUI()
+    {                
+    _LIT_SECURITY_POLICY_C1( KReadProtection, ECapability_None );
+    _LIT_SECURITY_POLICY_C1( KWriteProtection, ECapabilityWriteDeviceData );
     
-    // -----------------------------------------------------------------------
-    // Get program status.
-    // -----------------------------------------------------------------------
-    //      
-    TInt CProgramStatus::GetProgramStatus()
-        {
-        return iGeneralProcessStatus;
-        }
-    
+    // Define the property.
+    TInt err = RProperty::Define( 
+        KPSUidSWInstallerUiNotification, 
+        KSWInstallerDisableDaemonNotes, 
+        RProperty::EInt,
+        KReadProtection,
+        KWriteProtection );
     
-    // -----------------------------------------------------------------------
-    // Set program status to idle.
-    // -----------------------------------------------------------------------
-    //       
-    void CProgramStatus::SetProgramStatusToIdle()
-        {
-        iGeneralProcessStatus = EStateIdle;
-        }
-  
-    // -----------------------------------------------------------------------
-    // Define PS key for UI and set the key value. 
-    // -----------------------------------------------------------------------
-    //      
-    void CProgramStatus::DefinePSKeyForUI()
-        {                
-        _LIT_SECURITY_POLICY_C1( KReadProtection, ECapability_None );
-        _LIT_SECURITY_POLICY_C1( KWriteProtection, ECapabilityWriteDeviceData );
+    FLOG_1( _L("[CProgramStatus] RProperty::Define error = %d "), err );
+           
+    // If key is not set when Daemon starts, set value.
+    if ( err == KErrNone )
+        {  
+        // Key can be set to False at this point. Correct PS key will 
+        // be read in AO's RunL.
+        TInt keyValue = EFalse;
         
-        // Define the property.
-        TInt err = RProperty::Define( 
+        err = RProperty::Set( 
             KPSUidSWInstallerUiNotification, 
             KSWInstallerDisableDaemonNotes, 
-            RProperty::EInt,
-            KReadProtection,
-            KWriteProtection );
+            keyValue );
         
-        FLOG_1( _L("[CProgramStatus] RProperty::Define error = %d "), err );
-               
-        // If key is not set when Daemon starts, set value.
-        if ( err == KErrNone )
-            {  
-            // Key can be set to False at this point. Correct PS key will 
-            // be read in AO's RunL.
-            TInt keyValue = EFalse;
-            
-            err = RProperty::Set( 
-                KPSUidSWInstallerUiNotification, 
-                KSWInstallerDisableDaemonNotes, 
-                keyValue );
-            
-            FLOG_1( _L("[CProgramStatus] RProperty::Set error = %d "), err );
-            }                  
-        }
-    
-    } // namespace
+        FLOG_1( _L("[CProgramStatus] RProperty::Set error = %d "), err );
+        }                  
+    }
 
+  
 //EOF
     
--- a/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -17,8 +17,9 @@
 
 // INCLUDE FILES
 #include "silentuninstaller.h"
+#include "SWInstDefs.h"
 #include "SWInstDebug.h"
-#include "SWInstDefs.h"
+
 
 using namespace Swi;
 
@@ -40,12 +41,16 @@
 //
 void CSilentUninstaller::ConstructL()
     {
-    // Silently kill the app. if needed.
-    FLOG(_L("[CSilentUninstaller] iKillApp = SwiUI::EPolicyAllowed;"));
-    iOptions.iKillApp = SwiUI::EPolicyAllowed; 
-    FLOG(_L("[CSilentUninstaller] iBreakDependency = SwiUI::EPolicyNotAllowed"));
-    iOptions.iBreakDependency = SwiUI::EPolicyNotAllowed;         
-    iOptionsPckg = iOptions;      
+    iConnected = EFalse; 
+    
+    iSifOptions = Usif::COpaqueNamedParams::NewL();
+    iSifResults = Usif::COpaqueNamedParams::NewL();
+    
+    // Set parameters for silent uninstall.
+    // iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, ETrue );    
+    // iSifOptions->AddIntL( Usif::KSifInParam_AllowAppBreakDependency, EFalse );   
+// TODO: Should "silent install" be defined also for uninstall
+    //iSifOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );     
     }
 
 
@@ -70,7 +75,15 @@
 CSilentUninstaller::~CSilentUninstaller()
     {
     FLOG( _L("[CSilentUninstaller] ~CSilentUninstaller") );
-    iLauncher.Close();
+
+    delete iSifOptions;
+    delete iSifResults;
+    
+    if ( iConnected )
+        {
+        iSWInstallerFW.Close();
+        iRegistrySession.Close();
+        }    
     }
 
 
@@ -83,15 +96,36 @@
     TRequestStatus& aReqStatus, 
     TDesC8& aMIME )
     {
+    FLOG_1( _L("Daemon: UninstallL: UID = 0x%x"), aUid.iUid );
+    
     if ( !iConnected )
-        {
-        FLOG( _L("[CSilentUninstaller] Connect to server") );
-        User::LeaveIfError( iLauncher.Connect() );
-        iConnected = ETrue;            
-        }                
+        {               
+        FLOG( _L("[CSilentUninstaller] Connect to sif installer server") );    
+        User::LeaveIfError( iSWInstallerFW.Connect() );                     
+    
+        FLOG( _L("[CSilentUninstaller] Connect to SisRegistery") );      
+        User::LeaveIfError( iRegistrySession.Connect() );           
+        
+        iConnected = ETrue;   
+        }
+    
+// TODO: How is mime type set ?    
+    // Set MIME type.
+    //iSifOptions->AddStringL( Usif::KSifInParam_MimeType, aMIME );  
+           
+    // Usif need the component ID, so we need to map the package UID to 
+    // component ID. To do this simple we need SisRegistry.           
+    Usif::TComponentId componentId;
+    componentId = iRegistrySession.GetComponentIdForUidL( aUid );
+    FLOG_1( _L("Daemon: UninstallL: ComponentId = %d"), componentId );
+                                   
     // Launch the installation
-    FLOG( _L("[CSilentUninstaller] Launch uninstall") );
-    iLauncher.SilentUninstall( aReqStatus, aUid, iOptionsPckg, aMIME );
+    FLOG( _L("[CSilentUninstaller] Launch uninstall") );                 
+    iSWInstallerFW.Uninstall( componentId, 
+                              *iSifOptions,
+                              *iSifResults, 
+                              aReqStatus,
+                              ETrue );
     }
   
 
@@ -101,8 +135,8 @@
 // 
 void CSilentUninstaller::Cancel()
     {
-    FLOG( _L("[CSilentUninstaller] Cancel silet uninstall") );     
-    iLauncher.CancelAsyncRequest( SwiUI::ERequestSilentUninstall );   
+    FLOG( _L("[CSilentUninstaller] Cancel silet uninstall") );              
+    iSWInstallerFW.CancelOperation(); 
     }
 
 //  End of File  
--- a/appinstaller/AppinstUi/Daemon/Src/versionRevisor.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Daemon/Src/versionRevisor.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -45,604 +45,605 @@
 const TInt KVerRevSisVersionSame = 300;
 const TInt KVerRevSisVersionNewer = 400;
 
-namespace Swi
+using namespace Swi;
+//namespace Swi
+//    {
+// -----------------------------------------------------------------------
+// Two-phased constructor
+// -----------------------------------------------------------------------
+//    
+CVersionRevisor* CVersionRevisor::NewL( CProgramStatus& aMainStatus )
+    {
+    CVersionRevisor* self = NewLC( aMainStatus );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ------------------------------------------------------------------------
+// Two-phased constructor
+// ------------------------------------------------------------------------
+//    
+CVersionRevisor* CVersionRevisor::NewLC( CProgramStatus& aMainStatus )
+    {
+    CVersionRevisor* self = new (ELeave) CVersionRevisor;
+    CleanupStack::PushL( self );
+    self->ConstructL( aMainStatus );
+    return self;    
+    }
+  
+// -----------------------------------------------------------------------
+// 2nd constructor
+// -----------------------------------------------------------------------
+//    
+void CVersionRevisor::ConstructL( CProgramStatus& aMainStatus )
     {
-    // -----------------------------------------------------------------------
-    // Two-phased constructor
-    // -----------------------------------------------------------------------
-    //    
-    CVersionRevisor* CVersionRevisor::NewL( CProgramStatus& aMainStatus )
-        {
-        CVersionRevisor* self = NewLC( aMainStatus );
-        CleanupStack::Pop( self );
-        return self;
-        }
+    FLOG( _L("[VersionRev] ConstructL start") );
+    iSisUninstaller = NULL;
+    iStartupReason = KErrNone; 
+    // Note revisor do not own this instance.
+    iProgramStatus = &aMainStatus;         
+    User::LeaveIfError( iFs.Connect() );
+    // Get system startup reason.
+    TRAP_IGNORE( StartUpReasonL() );         
+    FLOG( _L("[VersionRev] ConstructL end") );
+    }
+
+// -----------------------------------------------------------------------
+// c++ destructor
+// -----------------------------------------------------------------------
+//    
+CVersionRevisor::~CVersionRevisor()
+    {
+    FLOG( _L("[VersionRev] ~CVersionRevisor start") );         
+    delete iSisUninstaller;
+    iSisUninstaller = NULL;         
+    iStubDataArray.ResetAndDestroy();               
+    iFs.Close(); 
+    FLOG( _L("[VersionRev] ~CVersionRevisor end") ); 
+    }
+ 
+// -----------------------------------------------------------------------
+// Starts uninstall process.
+// -----------------------------------------------------------------------
+//    
+TInt CVersionRevisor::StartProcessL()
+    {  
+    FLOG( _L("[VersionRev] StartProcessL start") );        
+    TInt err = KErrNone;
     
-    // ------------------------------------------------------------------------
-    // Two-phased constructor
-    // ------------------------------------------------------------------------
-    //    
-    CVersionRevisor* CVersionRevisor::NewLC( CProgramStatus& aMainStatus )
-        {
-        CVersionRevisor* self = new (ELeave) CVersionRevisor;
-        CleanupStack::PushL( self );
-        self->ConstructL( aMainStatus );
-        return self;    
-        }
-      
-    // -----------------------------------------------------------------------
-    // 2nd constructor
-    // -----------------------------------------------------------------------
-    //    
-    void CVersionRevisor::ConstructL( CProgramStatus& aMainStatus )
+    // If firmware update is done, start scan process.
+     if( iStartupReason == EFirmwareUpdate )
+          {                             
+          iSisUninstaller = 
+              CSisPkgUninstaller::NewL( *iProgramStatus, *this );  
+          
+          TRAP( err, ProcessStubFilesL() );
+          FLOG_1( _L("[VersionRev] Process stub TRAP error = %d"), err );
+           
+          TRAP( err, ProcessSisRegistryL() ); 
+          FLOG_1( _L("[VersionRev] Process sis TRAP error = %d"), err );
+           
+          iSisUninstaller->StartUninstallL();                           
+          }        
+     else
+         {
+         FLOG( _L("[VersionRev] StartProcessL: No firmware update") );
+         // Ok, no need to start process. Leave so main will call delete. 
+         User::Leave( KErrAbort );
+         }
+                                                 
+    FLOG( _L("[VersionRev] StartProcessL end") );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------
+// Reads stub sis files.
+// -----------------------------------------------------------------------
+//    
+TInt CVersionRevisor::ProcessStubFilesL()
+    {  
+    FLOG( _L("[VersionRev] ProcessStubFilesL start") );
+    CDir* dir;
+    
+    TInt err = iFs.GetDir( 
+            KVerRevStubSISDir, 
+            KEntryAttNormal, 
+            ESortNone, 
+            dir );
+    
+    if ( err == KErrNone )
         {
-        FLOG( _L("[VersionRev] ConstructL start") );
-        iSisUninstaller = NULL;
-        iStartupReason = KErrNone; 
-        // Note revisor do not own this instance.
-        iProgramStatus = &aMainStatus;         
-        User::LeaveIfError( iFs.Connect() );
-        // Get system startup reason.
-        TRAP_IGNORE( StartUpReasonL() );         
-        FLOG( _L("[VersionRev] ConstructL end") );
-        }
-    
-    // -----------------------------------------------------------------------
-    // c++ destructor
-    // -----------------------------------------------------------------------
-    //    
-    CVersionRevisor::~CVersionRevisor()
-        {
-        FLOG( _L("[VersionRev] ~CVersionRevisor start") );         
-        delete iSisUninstaller;
-        iSisUninstaller = NULL;         
-        iStubDataArray.ResetAndDestroy();               
-        iFs.Close(); 
-        FLOG( _L("[VersionRev] ~CVersionRevisor end") ); 
-        }
-     
-    // -----------------------------------------------------------------------
-    // Starts uninstall process.
-    // -----------------------------------------------------------------------
-    //    
-    TInt CVersionRevisor::StartProcessL()
-        {  
-        FLOG( _L("[VersionRev] StartProcessL start") );        
-        TInt err = KErrNone;
+        CleanupStack::PushL( dir );
         
-        // If firmware update is done, start scan process.
-         if( iStartupReason == EFirmwareUpdate )
-              {                             
-              iSisUninstaller = 
-                  CSisPkgUninstaller::NewL( *iProgramStatus, *this );  
-              
-              TRAP( err, ProcessStubFilesL() );
-              FLOG_1( _L("[VersionRev] Process stub TRAP error = %d"), err );
-               
-              TRAP( err, ProcessSisRegistryL() ); 
-              FLOG_1( _L("[VersionRev] Process sis TRAP error = %d"), err );
-               
-              iSisUninstaller->StartUninstallL();                           
-              }        
-         else
-             {
-             FLOG( _L("[VersionRev] StartProcessL: No firmware update") );
-             // Ok, no need to start process. Leave so main will call delete. 
-             User::Leave( KErrAbort );
-             }
-                                                     
-        FLOG( _L("[VersionRev] StartProcessL end") );
-        return KErrNone;
-        }
-   
-    // -----------------------------------------------------------------------
-    // Reads stub sis files.
-    // -----------------------------------------------------------------------
-    //    
-    TInt CVersionRevisor::ProcessStubFilesL()
-        {  
-        FLOG( _L("[VersionRev] ProcessStubFilesL start") );
-        CDir* dir;
-        
-        TInt err = iFs.GetDir( 
-                KVerRevStubSISDir, 
-                KEntryAttNormal, 
-                ESortNone, 
-                dir );
-        
-        if ( err == KErrNone )
+        TInt count = dir->Count();
+        FLOG_1( _L("[VersionRev] Stub count = %d"), count );
+
+        for ( TInt index = 0; index < count; index++ )
             {
-            CleanupStack::PushL( dir );
-            
-            TInt count = dir->Count();
-            FLOG_1( _L("[VersionRev] Stub count = %d"), count );
-
-            for ( TInt index = 0; index < count; index++ )
-                {
-                FLOG_1( _L("[VersionRev] Stub index = %d"), index );                                               
-                TFileName stubName;                 
-                stubName.Append( KVerRevStubSISDir );
-                stubName.Append( (*dir)[index].iName );                
-                FLOG_1( _L("[VersionRev] Stub name: %S\n "), 
-                        &(*dir)[index].iName );                
-                // Function needs to be trapped because SisController leavs 
-                // if some corrupted file is in dir etc.
-                TRAP( err, AppendStubInfoL( stubName ) );                            
-                }                       
-            CleanupStack::PopAndDestroy( dir ); 
-            }
-        
-        FLOG( _L("[VersionRev] ProcessStubFilesL end") );         
-        return err;
+            FLOG_1( _L("[VersionRev] Stub index = %d"), index );                                               
+            TFileName stubName;                 
+            stubName.Append( KVerRevStubSISDir );
+            stubName.Append( (*dir)[index].iName );                
+            FLOG_1( _L("[VersionRev] Stub name: %S\n "), 
+                    &(*dir)[index].iName );                
+            // Function needs to be trapped because SisController leavs 
+            // if some corrupted file is in dir etc.
+            TRAP( err, AppendStubInfoL( stubName ) );                            
+            }                       
+        CleanupStack::PopAndDestroy( dir ); 
         }
     
-    // -----------------------------------------------------------------------
-    // Checks rom updates from sis registry and adds pkg UID to array for
-    // uninstaller process.
-    //
-    // Pre contitons for uninstall is: 
-    // 1. sis version is older or same as rom STUB version.
-    // 2. sis has files only in C drvie.
-    // 3. if sis version is same as stub version, all binary files must be
-    // present in rom (z:\sys\bin).
-    // Rom STUB <- SA       = uninstalled
-    // Rom STUB <- SP       = no uninstall, returned drive is Z   (0x04)
-    // Rom STUB <- PU       = no uninstall, returned drive is Z+C (0x2000004)
-    // Rom STUB <- SA <- SP = SA is uninstalled, SP is not (n-gage) 
-    // Rom STUB <- SA <- PU = uninstalled
-    // Rom STUB <- SA + emped. sis = SA is uninstalled, empedded pkg is not.
-    // -----------------------------------------------------------------------
-    //    
-    TInt CVersionRevisor::ProcessSisRegistryL()
+    FLOG( _L("[VersionRev] ProcessStubFilesL end") );         
+    return err;
+    }
+
+// -----------------------------------------------------------------------
+// Checks rom updates from sis registry and adds pkg UID to array for
+// uninstaller process.
+//
+// Pre contitons for uninstall is: 
+// 1. sis version is older or same as rom STUB version.
+// 2. sis has files only in C drvie.
+// 3. if sis version is same as stub version, all binary files must be
+// present in rom (z:\sys\bin).
+// Rom STUB <- SA       = uninstalled
+// Rom STUB <- SP       = no uninstall, returned drive is Z   (0x04)
+// Rom STUB <- PU       = no uninstall, returned drive is Z+C (0x2000004)
+// Rom STUB <- SA <- SP = SA is uninstalled, SP is not (n-gage) 
+// Rom STUB <- SA <- PU = uninstalled
+// Rom STUB <- SA + emped. sis = SA is uninstalled, empedded pkg is not.
+// -----------------------------------------------------------------------
+//    
+TInt CVersionRevisor::ProcessSisRegistryL()
+    {
+    FLOG( _L("[VersionRev] ProcessSisRegistryL start") );        
+    TInt stubArrayCount = iStubDataArray.Count();
+    FLOG_1( _L("[VersionRev] Stub array count = %d"), stubArrayCount );
+    
+    if ( stubArrayCount )
         {
-        FLOG( _L("[VersionRev] ProcessSisRegistryL start") );        
-        TInt stubArrayCount = iStubDataArray.Count();
-        FLOG_1( _L("[VersionRev] Stub array count = %d"), stubArrayCount );
-        
-        if ( stubArrayCount )
-            {
-            Swi::RSisRegistrySession sisRegSession;                                        
-            User::LeaveIfError( sisRegSession.Connect() );                
-            CleanupClosePushL( sisRegSession );
-                               
-            Swi::RSisRegistryEntry entry;                                    
-            TInt err = KErrNone;
-                         
-            // Search correct sis pagace and open entry to it.
-            for ( TInt stubIndex = 0; stubIndex < stubArrayCount; stubIndex++ )
-                {                  
-                TUid stubUID = iStubDataArray[stubIndex]->pkgUID;                 
-                FLOG_1( _L("[VersionRev] Stub UID: 0x%x \n "), stubUID.iUid );                                                  
-                                
-                TBool isInstalled = sisRegSession.IsInstalledL( stubUID );
-                                                                             
-                if ( isInstalled )
-                    {                                
-                    err = entry.Open( sisRegSession, stubUID );                     
-                    
-                    if ( !err )
-                        {
-                        CleanupClosePushL( entry );                                                                                                                                                                                                                                                                                      
-                                                
-                        TUint drives = entry.InstalledDrivesL();
-                        FLOG_1( _L("[VersionRev] Installe drive: 0x%x \n "), 
-                                drives );                                                                                               
-                                                
-                        if ( drives == KVerRevDriveC )
-                            { 
-                            FLOG( _L("[VersionRev] SIS is installed to C:") );                                                        
-                            FLOG( _L("[VersionRev] Check SIS version") );
-                                                        
-                            TVersion stubVersion(
-                                    iStubDataArray[stubIndex]->major,
-                                    iStubDataArray[stubIndex]->minor,
-                                    iStubDataArray[stubIndex]->build );
-                                                     
-                            // Check sis and stub version.              
-                            TInt ver = CompareVersions( 
-                                   entry.VersionL(), 
-                                   stubVersion ); 
-                            FLOG_1( _L("[VersionRev] CompareVer.= %d "), ver );                                                                                           
-                            TBool removePkg = EFalse;
+        Swi::RSisRegistrySession sisRegSession;                                        
+        User::LeaveIfError( sisRegSession.Connect() );                
+        CleanupClosePushL( sisRegSession );
+                           
+        Swi::RSisRegistryEntry entry;                                    
+        TInt err = KErrNone;
+                     
+        // Search correct sis pagace and open entry to it.
+        for ( TInt stubIndex = 0; stubIndex < stubArrayCount; stubIndex++ )
+            {                  
+            TUid stubUID = iStubDataArray[stubIndex]->pkgUID;                 
+            FLOG_1( _L("[VersionRev] Stub UID: 0x%x \n "), stubUID.iUid );                                                  
                             
-                            if ( ver == KVerRevSisVersionSame )
-                                {
-                                // If version is same check that all binary 
-                                // files in rom is found. If files are missing
-                                // do not remove sis pkg.
-                                FLOG( _L("[VersionRev] Sis version same"));
-                                removePkg = AllRomBinariesFoundL( entry );
-                                }
-                            if ( ver == KVerRevSisVersionOlder )
-                                {
-                                FLOG( _L("[VersionRev] Sis version older"));
-                                removePkg = ETrue;
-                                } 
-                            
-                            // Add uid to uninstall array if removePkg is true.
-                            if ( removePkg )
-                                {                                                                   
-                                iSisUninstaller->AddUidToListL( stubUID );
-                                FLOG_1( _L("[VersionRev] Uninst. UID:0x%x"), 
-                                          stubUID.iUid );                                  
-                                } 
-                            }//if
-                        CleanupStack::PopAndDestroy(); //entry                         
-                        }//if                                                                   
-                    } //if                                                                          
-                } //for  
-            CleanupStack::PopAndDestroy(); //sisRegSession
-            } //if
-          
-        return KErrNone;
+            TBool isInstalled = sisRegSession.IsInstalledL( stubUID );
+                                                                         
+            if ( isInstalled )
+                {                                
+                err = entry.Open( sisRegSession, stubUID );                     
+                
+                if ( !err )
+                    {
+                    CleanupClosePushL( entry );                                                                                                                                                                                                                                                                                      
+                                            
+                    TUint drives = entry.InstalledDrivesL();
+                    FLOG_1( _L("[VersionRev] Installe drive: 0x%x \n "), 
+                            drives );                                                                                               
+                                            
+                    if ( drives == KVerRevDriveC )
+                        { 
+                        FLOG( _L("[VersionRev] SIS is installed to C:") );                                                        
+                        FLOG( _L("[VersionRev] Check SIS version") );
+                                                    
+                        TVersion stubVersion(
+                                iStubDataArray[stubIndex]->major,
+                                iStubDataArray[stubIndex]->minor,
+                                iStubDataArray[stubIndex]->build );
+                                                 
+                        // Check sis and stub version.              
+                        TInt ver = CompareVersions( 
+                               entry.VersionL(), 
+                               stubVersion ); 
+                        FLOG_1( _L("[VersionRev] CompareVer.= %d "), ver );                                                                                           
+                        TBool removePkg = EFalse;
+                        
+                        if ( ver == KVerRevSisVersionSame )
+                            {
+                            // If version is same check that all binary 
+                            // files in rom is found. If files are missing
+                            // do not remove sis pkg.
+                            FLOG( _L("[VersionRev] Sis version same"));
+                            removePkg = AllRomBinariesFoundL( entry );
+                            }
+                        if ( ver == KVerRevSisVersionOlder )
+                            {
+                            FLOG( _L("[VersionRev] Sis version older"));
+                            removePkg = ETrue;
+                            } 
+                        
+                        // Add uid to uninstall array if removePkg is true.
+                        if ( removePkg )
+                            {                                                                   
+                            iSisUninstaller->AddUidToListL( stubUID );
+                            FLOG_1( _L("[VersionRev] Uninst. UID:0x%x"), 
+                                      stubUID.iUid );                                  
+                            } 
+                        }//if
+                    CleanupStack::PopAndDestroy(); //entry                         
+                    }//if                                                                   
+                } //if                                                                          
+            } //for  
+        CleanupStack::PopAndDestroy(); //sisRegSession
+        } //if
+      
+    return KErrNone;
+    }
+
+
+// -----------------------------------------------------------------------
+// This function reads firmware string and checks if firmware update has
+// been done. This function does create file to private directory and
+// saves current firmware version string to it.
+// -----------------------------------------------------------------------
+//    
+void CVersionRevisor::StartUpReasonL()
+    {          
+    FLOG( _L("[VersionRev] StartUpReasonL") );                           
+    iStartupReason = KErrNotFound;                               
+    HBufC* currentVersionString = HBufC::NewLC( KVerRevStrLength*2 );
+    TPtr currentStringPtr = currentVersionString->Des();
+    
+    // Get current firmware string from sysutil. 
+    // Firmware string is saved to Z:\\resource\\versions\\sw.txt
+    SysUtil::GetSWVersion( currentStringPtr );
+    FLOG_1( _L("[VersionRev] Firmware version = %S "), 
+            &currentStringPtr );                 
+    TUint result;
+    // If private directory is not found create it. 
+    TInt err = iFs.Att( KVerRevPrivatePath, result );
+    
+    if ( ! err == KErrNone && result & KEntryAttDir )
+        {                 
+        iFs.CreatePrivatePath( EDriveC ); 
+        FLOG( _L("[VersionRev] StartUpReasonL: Create private folder") );
         }
-
+           
+    RFile file; 
+    TFindFile find( iFs );                      
+    // Check if version file is found in Daemon private director.
+    err = find.FindByPath( KVerRevVersionFile(), &KVerRevPrivatePath() );
+    FLOG_1( _L("[VersionRev] StartUpReasonL: Find file = %d"), err );  
     
-    // -----------------------------------------------------------------------
-    // This function reads firmware string and checks if firmware update has
-    // been done. This function does create file to private directory and
-    // saves current firmware version string to it.
-    // -----------------------------------------------------------------------
-    //    
-    void CVersionRevisor::StartUpReasonL()
-        {          
-        FLOG( _L("[VersionRev] StartUpReasonL") );                           
-        iStartupReason = KErrNotFound;                               
-        HBufC* currentVersionString = HBufC::NewLC( KVerRevStrLength*2 );
-        TPtr currentStringPtr = currentVersionString->Des();
+    if ( err )
+        {
+        // If file is not found this is first boot or user memory (C:) has 
+        // been formatted. No need to start version checking but let's save
+        // the current firmware version to Daemon private folder.
+        err = file.Create( 
+                iFs, 
+                KVerRevVersionFile, 
+                EFileWrite|EFileRead|EFileStreamText );
         
-        // Get current firmware string from sysutil. 
-        // Firmware string is saved to Z:\\resource\\versions\\sw.txt
-        SysUtil::GetSWVersion( currentStringPtr );
-        FLOG_1( _L("[VersionRev] Firmware version = %S "), 
-                &currentStringPtr );                 
-        TUint result;
-        // If private directory is not found create it. 
-        TInt err = iFs.Att( KVerRevPrivatePath, result );
+        FLOG_1( _L("[VersionRev] file create err = %d"), err ); 
+        User::LeaveIfError( err );
+        
+        // Write current firmware version strign to file. 
+        WriteFileText( file, currentStringPtr );
+        
+        file.Flush();
+        file.Close();                        
+        }
+    else
+        {
         
-        if ( ! err == KErrNone && result & KEntryAttDir )
-            {                 
-            iFs.CreatePrivatePath( EDriveC ); 
-            FLOG( _L("[VersionRev] StartUpReasonL: Create private folder") );
-            }
-               
-        RFile file; 
-        TFindFile find( iFs );                      
-        // Check if version file is found in Daemon private director.
-        err = find.FindByPath( KVerRevVersionFile(), &KVerRevPrivatePath() );
-        FLOG_1( _L("[VersionRev] StartUpReasonL: Find file = %d"), err );  
+        HBufC* previousVersionString = HBufC::NewLC( KVerRevStrLength*2 );
+        TPtr previousStringPtr = previousVersionString->Des();            
+        
+        // Open firmware version file from private directory.
+        err = file.Open( 
+                iFs, 
+                KVerRevVersionFile, 
+                EFileWrite|EFileRead|EFileStreamText );
+        
+        FLOG_1( _L("[VersionRev] file open err = %d"), err ); 
+        User::LeaveIfError( err );            
         
-        if ( err )
-            {
-            // If file is not found this is first boot or user memory (C:) has 
-            // been formatted. No need to start version checking but let's save
-            // the current firmware version to Daemon private folder.
-            err = file.Create( 
-                    iFs, 
-                    KVerRevVersionFile, 
-                    EFileWrite|EFileRead|EFileStreamText );
-            
-            FLOG_1( _L("[VersionRev] file create err = %d"), err ); 
-            User::LeaveIfError( err );
+        // Read previous firmware string from the file. 
+        ReadFileText( file, previousStringPtr );
+        FLOG_1( _L("[VersionRev] Previous sw version: %S"), 
+                &previousStringPtr ); 
+                    
+        file.Close();
+        
+        if ( previousStringPtr.Length() != 0 )
+            {                                                                             
+            // Compare firmware strings.
+            err = previousVersionString->Compare( currentStringPtr );
+            FLOG_1( _L("[VersionRev] String compare = %d"), err ); 
             
-            // Write current firmware version strign to file. 
-            WriteFileText( file, currentStringPtr );
-            
-            file.Flush();
-            file.Close();                        
-            }
-        else
-            {
-            
-            HBufC* previousVersionString = HBufC::NewLC( KVerRevStrLength*2 );
-            TPtr previousStringPtr = previousVersionString->Des();            
-            
-            // Open firmware version file from private directory.
-            err = file.Open( 
+            if ( err == KErrNone )
+                {  
+                // Strings are identical, no firmware update.
+                iStartupReason = KErrNone;
+                FLOG( _L("[VersionRev] iStartupReason = KErrNone") );                 
+                }
+            else
+                {
+                iStartupReason = EFirmwareUpdate;
+                FLOG( _L("[VersionRev] iStartupReason = EFirmwareUpdate") );                     
+                file.Replace(                    
                     iFs, 
                     KVerRevVersionFile, 
-                    EFileWrite|EFileRead|EFileStreamText );
-            
-            FLOG_1( _L("[VersionRev] file open err = %d"), err ); 
-            User::LeaveIfError( err );            
-            
-            // Read previous firmware string from the file. 
-            ReadFileText( file, previousStringPtr );
-            FLOG_1( _L("[VersionRev] Previous sw version: %S"), 
-                    &previousStringPtr ); 
-                        
-            file.Close();
-            
-            if ( previousStringPtr.Length() != 0 )
-                {                                                                             
-                // Compare firmware strings.
-                err = previousVersionString->Compare( currentStringPtr );
-                FLOG_1( _L("[VersionRev] String compare = %d"), err ); 
-                
-                if ( err == KErrNone )
-                    {  
-                    // Strings are identical, no firmware update.
-                    iStartupReason = KErrNone;
-                    FLOG( _L("[VersionRev] iStartupReason = KErrNone") );                 
-                    }
-                else
-                    {
-                    iStartupReason = EFirmwareUpdate;
-                    FLOG( _L("[VersionRev] iStartupReason = EFirmwareUpdate") );                     
-                    file.Replace(                    
-                        iFs, 
-                        KVerRevVersionFile, 
-                        EFileWrite|EFileStreamText );                                        
-                    // Ok we have firmware update. Let's write new firmware 
-                    // string to file and start version checking.
-                    WriteFileText( file, currentStringPtr );                                                                                 
-                    file.Flush();
-                    file.Close();  
-                    }
-                }            
-            CleanupStack::PopAndDestroy(); //previousVersionString  
-            }                                                                   
-        CleanupStack::PopAndDestroy( ); //currentVersionString                  
-        }
+                    EFileWrite|EFileStreamText );                                        
+                // Ok we have firmware update. Let's write new firmware 
+                // string to file and start version checking.
+                WriteFileText( file, currentStringPtr );                                                                                 
+                file.Flush();
+                file.Close();  
+                }
+            }            
+        CleanupStack::PopAndDestroy(); //previousVersionString  
+        }                                                                   
+    CleanupStack::PopAndDestroy( ); //currentVersionString                  
+    }
+ 
+
+// -----------------------------------------------------------------------
+// Help function to read firmware version string from file.
+// -----------------------------------------------------------------------
+//  
+void CVersionRevisor::ReadFileText( RFile& aFile, TDes& aText )
+    {                        
+    TFileText fileText;
+    fileText.Set( aFile );
+    fileText.Read( aText );
      
-    
-    // -----------------------------------------------------------------------
-    // Help function to read firmware version string from file.
-    // -----------------------------------------------------------------------
-    //  
-    void CVersionRevisor::ReadFileText( RFile& aFile, TDes& aText )
-        {                        
-        TFileText fileText;
-        fileText.Set( aFile );
-        fileText.Read( aText );
+     // Replace new-line patterns with real ones.
+     TInt position = aText.Find( KVerRevNewLinePattern );
+     while ( position != KErrNotFound )
+         {
+         // err is a position
+         aText.Replace( 
+                 position, 
+                 KVerRevNewLinePattern().Length(), 
+                 KVerRevNewLine );
          
-         // Replace new-line patterns with real ones.
-         TInt position = aText.Find( KVerRevNewLinePattern );
-         while ( position != KErrNotFound )
-             {
-             // err is a position
-             aText.Replace( 
-                     position, 
-                     KVerRevNewLinePattern().Length(), 
-                     KVerRevNewLine );
-             
-             position = aText.Find( KVerRevNewLinePattern );
-             }                        
-        }
+         position = aText.Find( KVerRevNewLinePattern );
+         }                        
+    }
+
 
+// -----------------------------------------------------------------------
+// Help function to write firmware version string from file.
+// -----------------------------------------------------------------------
+//  
+void CVersionRevisor::WriteFileText( RFile& aFile, TDes& aText )
+    { 
+    // Replace real new-line marker with pattern. This makes 
+    // reading operation easy.
+    TInt position = aText.Find( KVerRevNewLine );                
+    while ( position != KErrNotFound )
+        {                
+        aText.Replace( 
+                position, 
+                KVerRevNewLine().Length(), 
+                KVerRevNewLinePattern );
+         
+         position = aText.Find( KVerRevNewLine );
+         }
+                 
+    TFileText fileText;
+    fileText.Set( aFile );
+    fileText.Write( aText );                       
+    }
     
-    // -----------------------------------------------------------------------
-    // Help function to write firmware version string from file.
-    // -----------------------------------------------------------------------
-    //  
-    void CVersionRevisor::WriteFileText( RFile& aFile, TDes& aText )
-        { 
-        // Replace real new-line marker with pattern. This makes 
-        // reading operation easy.
-        TInt position = aText.Find( KVerRevNewLine );                
-        while ( position != KErrNotFound )
-            {                
-            aText.Replace( 
-                    position, 
-                    KVerRevNewLine().Length(), 
-                    KVerRevNewLinePattern );
-             
-             position = aText.Find( KVerRevNewLine );
-             }
-                     
-        TFileText fileText;
-        fileText.Set( aFile );
-        fileText.Write( aText );                       
-        }
-        
+
+// -----------------------------------------------------------------------
+// This function reads stub sis files version and uid and adds the info
+// in array.
+// -----------------------------------------------------------------------
+//  
+void CVersionRevisor::AppendStubInfoL( TDesC& aStubName )
+    {                                             
+    CFileSisDataProvider* provider = 
+        CFileSisDataProvider::NewLC( iFs, aStubName );
+            
+    Sis::CController* stubData = Sis::CController::NewLC( *provider );
+            
+    const Sis::CVersion& version = stubData->Info().Version();
+            
+    TVersionRevStubData* stubPkg = new( ELeave ) TVersionRevStubData();
+    CleanupStack::PushL( stubPkg );        
+    stubPkg->pkgUID = stubData->Info().Uid().Uid();
+    stubPkg->major = version.Major();
+    stubPkg->minor = version.Minor();
+    stubPkg->build = version.Build();
     
-    // -----------------------------------------------------------------------
-    // This function reads stub sis files version and uid and adds the info
-    // in array.
-    // -----------------------------------------------------------------------
-    //  
-    void CVersionRevisor::AppendStubInfoL( TDesC& aStubName )
-        {                                             
-        CFileSisDataProvider* provider = 
-            CFileSisDataProvider::NewLC( iFs, aStubName );
-                
-        Sis::CController* stubData = Sis::CController::NewLC( *provider );
-                
-        const Sis::CVersion& version = stubData->Info().Version();
+    iStubDataArray.AppendL( stubPkg );
+    
+    CleanupStack::Pop( stubPkg );
+    
+#ifdef _DEBUG  
+    RDebug::Print( _L("[VersionRev] Add Stub UID: 0x%x Ver: %d.%d.%d\n "),                  
+              stubData->Info().Uid().Uid(),
+              version.Major(),
+              version.Minor(),
+              version.Build() );        
+#endif
                 
-        TVersionRevStubData* stubPkg = new( ELeave ) TVersionRevStubData();
-        CleanupStack::PushL( stubPkg );        
-        stubPkg->pkgUID = stubData->Info().Uid().Uid();
-        stubPkg->major = version.Major();
-        stubPkg->minor = version.Minor();
-        stubPkg->build = version.Build();
-        
-        iStubDataArray.AppendL( stubPkg );
-        
-        CleanupStack::Pop( stubPkg );
-        
- #ifdef _DEBUG  
-        RDebug::Print( _L("[VersionRev] Add Stub UID: 0x%x Ver: %d.%d.%d\n "),                  
-                  stubData->Info().Uid().Uid(),
-                  version.Major(),
-                  version.Minor(),
-                  version.Build() );        
- #endif
+    CleanupStack::PopAndDestroy( 2, provider );
+    provider = NULL;
+    stubData = NULL;
+    stubPkg = NULL;        
+    }
+
+// -----------------------------------------------------------------------    
+// This function compares sis and stub versions. 
+// -----------------------------------------------------------------------
+//   
+TInt CVersionRevisor::CompareVersions( 
+    TVersion aSisVer, 
+    TVersion aStubVer )
+    { 
+    FLOG( _L("[VersionRev] CompareVersions()") );
                     
-        CleanupStack::PopAndDestroy( 2, provider );
-        provider = NULL;
-        stubData = NULL;
-        stubPkg = NULL;        
+    // Compare major version
+    if ( aSisVer.iMajor > aStubVer.iMajor  )
+        {
+        FLOG( _L("[VersionRev] STUB major version older ") );
+        return KVerRevSisVersionNewer;
         }
-
-    // -----------------------------------------------------------------------    
-    // This function compares sis and stub versions. 
-    // -----------------------------------------------------------------------
-    //   
-    TInt CVersionRevisor::CompareVersions( 
-        TVersion aSisVer, 
-        TVersion aStubVer )
-        { 
-        FLOG( _L("[VersionRev] CompareVersions()") );
-                        
-        // Compare major version
-        if ( aSisVer.iMajor > aStubVer.iMajor  )
+    // If same major version, check minor version.
+    else if ( aSisVer.iMajor == aStubVer.iMajor )
+        {                           
+        if ( aSisVer.iMinor > aStubVer.iMinor )
             {
-            FLOG( _L("[VersionRev] STUB major version older ") );
+            FLOG( _L("[VersionRev] STUB minor version older ") );
             return KVerRevSisVersionNewer;
             }
-        // If same major version, check minor version.
-        else if ( aSisVer.iMajor == aStubVer.iMajor )
-            {                           
-            if ( aSisVer.iMinor > aStubVer.iMinor )
+        // If same minor version, check build version.
+        else if ( aSisVer.iMinor == aStubVer.iMinor )
+            {
+            if ( aSisVer.iBuild > aStubVer.iBuild  )
                 {
-                FLOG( _L("[VersionRev] STUB minor version older ") );
-                return KVerRevSisVersionNewer;
-                }
-            // If same minor version, check build version.
-            else if ( aSisVer.iMinor == aStubVer.iMinor )
+                FLOG( _L("[VersionRev] STUB build version older ") );
+                return KVerRevSisVersionNewer;                        
+                }  
+            else if ( aSisVer.iBuild == aStubVer.iBuild  )
                 {
-                if ( aSisVer.iBuild > aStubVer.iBuild  )
-                    {
-                    FLOG( _L("[VersionRev] STUB build version older ") );
-                    return KVerRevSisVersionNewer;                        
-                    }  
-                else if ( aSisVer.iBuild == aStubVer.iBuild  )
-                    {
-                    // Sis build version is same as stub.
-                    FLOG( _L("[VersionRev] Build version same ") );
-                    return KVerRevSisVersionSame;                        
-                    }                                  
-                else // build
-                    {
-                    // Sis build version is older.
-                    FLOG( _L("[VersionRev] SIS build version OLDER !") );
-                    return KVerRevSisVersionOlder;
-                    }
+                // Sis build version is same as stub.
+                FLOG( _L("[VersionRev] Build version same ") );
+                return KVerRevSisVersionSame;                        
+                }                                  
+            else // build
+                {
+                // Sis build version is older.
+                FLOG( _L("[VersionRev] SIS build version OLDER !") );
+                return KVerRevSisVersionOlder;
                 }
-            else // minor
-                {
-                // Sis minor version is older.
-                FLOG( _L("[VersionRev] SIS minor version OLDER !") );
-                return KVerRevSisVersionOlder;
-                }            
-            }        
-        else //major
+            }
+        else // minor
             {
-            // Sis major version is older.
-            FLOG( _L("[VersionRev] SIS major version OLDER !") );
+            // Sis minor version is older.
+            FLOG( _L("[VersionRev] SIS minor version OLDER !") );
             return KVerRevSisVersionOlder;
             }            
-        }
-  
-    // -----------------------------------------------------------------------    
-    // This function check that all sis pkg's binary files are found from rom. 
-    // -----------------------------------------------------------------------
-    //     
-    TBool CVersionRevisor::AllRomBinariesFoundL( Swi::RSisRegistryEntry& aEntry )
+        }        
+    else //major
         {
-        FLOG( _L("[VersionRev] AllRomBinariesFoundL") );
-        TBool allBinaryFilesFound = EFalse;
-        TInt err = KErrNone;
-        RPointerArray<HBufC> sisFilesArray;
-        RPointerArray<HBufC> binaryFilesArray;
-                
-        // Get installed files from this entry.
-        aEntry.FilesL( sisFilesArray );
-        TInt arrayCount = sisFilesArray.Count();   
-        FLOG_1( _L("[VersionRev] Sis files count = %d"), arrayCount );
-        
-        if ( arrayCount )
-            {                                                   
-            for ( TInt index = 0; index < arrayCount; index++ )
+        // Sis major version is older.
+        FLOG( _L("[VersionRev] SIS major version OLDER !") );
+        return KVerRevSisVersionOlder;
+        }            
+    }
+
+// -----------------------------------------------------------------------    
+// This function check that all sis pkg's binary files are found from rom. 
+// -----------------------------------------------------------------------
+//     
+TBool CVersionRevisor::AllRomBinariesFoundL( Swi::RSisRegistryEntry& aEntry )
+    {
+    FLOG( _L("[VersionRev] AllRomBinariesFoundL") );
+    TBool allBinaryFilesFound = EFalse;
+    TInt err = KErrNone;
+    RPointerArray<HBufC> sisFilesArray;
+    RPointerArray<HBufC> binaryFilesArray;
+            
+    // Get installed files from this entry.
+    aEntry.FilesL( sisFilesArray );
+    TInt arrayCount = sisFilesArray.Count();   
+    FLOG_1( _L("[VersionRev] Sis files count = %d"), arrayCount );
+    
+    if ( arrayCount )
+        {                                                   
+        for ( TInt index = 0; index < arrayCount; index++ )
+            {
+            // Get file path
+            HBufC* tempFilePath = sisFilesArray[index]->AllocL();
+            CleanupStack::PushL( tempFilePath );
+            FLOG_1( _L("[VersionRev] File path: %S \n"), tempFilePath );                
+            
+            // Check if file is installed to sys\bin folder.
+            // Search \sys\bin string from the descriptor's data.
+            err = tempFilePath->Find( KVerRevSysPath );
+            FLOG_1( _L("[VersionRev] Sys path found = %d"), err );
+            
+            if ( err != KErrNotFound )
                 {
-                // Get file path
-                HBufC* tempFilePath = sisFilesArray[index]->AllocL();
-                CleanupStack::PushL( tempFilePath );
-                FLOG_1( _L("[VersionRev] File path: %S \n"), tempFilePath );                
-                
-                // Check if file is installed to sys\bin folder.
-                // Search \sys\bin string from the descriptor's data.
-                err = tempFilePath->Find( KVerRevSysPath );
-                FLOG_1( _L("[VersionRev] Sys path found = %d"), err );
-                
-                if ( err != KErrNotFound )
-                    {
-                    // If binary file, add to array.
-                    binaryFilesArray.Append( tempFilePath );
-                    CleanupStack::Pop(); //tempFilePath
-                    }
-                else
-                    {
-                    // Delete temp descriptor.
-                    CleanupStack::PopAndDestroy( tempFilePath );
-                    tempFilePath = NULL;
-                    }                
+                // If binary file, add to array.
+                binaryFilesArray.Append( tempFilePath );
+                CleanupStack::Pop(); //tempFilePath
                 }
-            
-            // Count how meny binary files are found.
-            TInt binaryCount = binaryFilesArray.Count();
-            FLOG_1( _L("[VersionRev] Binary files count = %d"), binaryCount );
-            if ( binaryCount )
+            else
                 {
-                TInt foundInRomCount = 0;
-                TFindFile find( iFs );
-                TParse stringParser;                
-                TFileName binaryFileNameAndExt;
-                
-                for ( TInt index = 0; index < binaryCount; index++ )
+                // Delete temp descriptor.
+                CleanupStack::PopAndDestroy( tempFilePath );
+                tempFilePath = NULL;
+                }                
+            }
+        
+        // Count how meny binary files are found.
+        TInt binaryCount = binaryFilesArray.Count();
+        FLOG_1( _L("[VersionRev] Binary files count = %d"), binaryCount );
+        if ( binaryCount )
+            {
+            TInt foundInRomCount = 0;
+            TFindFile find( iFs );
+            TParse stringParser;                
+            TFileName binaryFileNameAndExt;
+            
+            for ( TInt index = 0; index < binaryCount; index++ )
+                 {
+                 // Get binary file path.
+                 HBufC* binaryPathBuf = binaryFilesArray[index];
+                 // Parse file name and extension.                                                  
+                 stringParser.Set( *binaryPathBuf ,NULL, NULL );                                                                                  
+                 binaryFileNameAndExt.Copy( stringParser.NameAndExt() );                                          
+                 FLOG_1( _L("[VersionRev] Search file: %S \n"), 
+                         &binaryFileNameAndExt );   
+                                                         
+                 // Search file in z:\sys\bin.
+                 // Note path must contain drive letter.
+                 err = find.FindByPath( 
+                         binaryFileNameAndExt, 
+                         &KVerRevRomSysPath() ); 
+                 FLOG_1( _L("[VersionRev] Found in rom = %d"), err );
+                 
+                 if ( err == KErrNone )
                      {
-                     // Get binary file path.
-                     HBufC* binaryPathBuf = binaryFilesArray[index];
-                     // Parse file name and extension.                                                  
-                     stringParser.Set( *binaryPathBuf ,NULL, NULL );                                                                                  
-                     binaryFileNameAndExt.Copy( stringParser.NameAndExt() );                                          
-                     FLOG_1( _L("[VersionRev] Search file: %S \n"), 
-                             &binaryFileNameAndExt );   
-                                                             
-                     // Search file in z:\sys\bin.
-                     // Note path must contain drive letter.
-                     err = find.FindByPath( 
-                             binaryFileNameAndExt, 
-                             &KVerRevRomSysPath() ); 
-                     FLOG_1( _L("[VersionRev] Found in rom = %d"), err );
-                     
-                     if ( err == KErrNone )
-                         {
-                         // File found in rom. Increase counter.
-                         foundInRomCount++;
-                         }                                                  
-                     } //for
-                
-                // Check that all binary files are found in rom.
-                if ( binaryCount == foundInRomCount )
-                    {
-                    allBinaryFilesFound = ETrue;
-                    FLOG( _L("[VersionRev] All rom file found !") );
-                    }                
-                } //if  
+                     // File found in rom. Increase counter.
+                     foundInRomCount++;
+                     }                                                  
+                 } //for
             
-            // Free all objects and array.
-            binaryFilesArray.ResetAndDestroy();
-            }
+            // Check that all binary files are found in rom.
+            if ( binaryCount == foundInRomCount )
+                {
+                allBinaryFilesFound = ETrue;
+                FLOG( _L("[VersionRev] All rom file found !") );
+                }                
+            } //if  
+        
         // Free all objects and array.
-        sisFilesArray.ResetAndDestroy();
-        
-        return allBinaryFilesFound;
+        binaryFilesArray.ResetAndDestroy();
         }
-    
+    // Free all objects and array.
+    sisFilesArray.ResetAndDestroy();
     
-    // -----------------------------------------------------------------------
-    // This function handles VersionRevisors self exit.
-    // -----------------------------------------------------------------------
-    //      
-     void CVersionRevisor::Exit()
-         {
-         FLOG( _L("[VersionRev] Exit() ") );         
-         // Ok all is done. Free all resources and exit.
-         delete this;
-         }
+    return allBinaryFilesFound;
+    }
+
 
-    } // namespace Swi
+// -----------------------------------------------------------------------
+// This function handles VersionRevisors self exit.
+// -----------------------------------------------------------------------
+//      
+ void CVersionRevisor::Exit()
+     {
+     FLOG( _L("[VersionRev] Exit() ") );         
+     // Ok all is done. Free all resources and exit.
+     delete this;
+     }
+
+//    } // namespace Swi
 
 //EOF
--- a/appinstaller/AppinstUi/Plugin/CommonUI/Src/CUIDialogs.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Plugin/CommonUI/Src/CUIDialogs.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -28,7 +28,7 @@
 #include <SWInstCommonUI.rsg>
 #include <aknmessagequerydialog.h>
 #include <hlplch.h>
-#include <csxhelp/am.hlp.hrh>
+//#include <csxhelp/am.hlp.hrh>
 #include <coehelp.h>
 #include <featmgr.h>
 #include <sysutil.h>
@@ -772,7 +772,7 @@
 //
 TInt CCUIDialogs::ShowSecurityWarningHelp( TAny* aPtr )
     {
-    TRAP_IGNORE( reinterpret_cast<CCUIDialogs*>(aPtr)->LaunchHelpL( KAM_HLP_INSTALL_UNTRUSTED ) );    
+    //TRAP_IGNORE( reinterpret_cast<CCUIDialogs*>(aPtr)->LaunchHelpL( KAM_HLP_INSTALL_UNTRUSTED ) );    
 
     return KErrNone;    
     }
--- a/appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUIHandler.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUIHandler.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -28,7 +28,7 @@
 #include <SWInstCommonUI.rsg>
 #include <SWInstDefs.h>
 #include <featmgr.h>
-#include <csxhelp/am.hlp.hrh>
+//#include <csxhelp/am.hlp.hrh>
 #include <swi/sisinstallerrors.h>
 #include <AknUtils.h>
 #include <eikfrlb.h> //for the marquee effect
@@ -1837,9 +1837,9 @@
 //
 TInt CSisxUIHandler::ShowCapabilitiesHelp( TAny* aPtr )
     {
-    TRAP_IGNORE( 
-        reinterpret_cast<CSisxUIHandler*>(aPtr)->iCommonDialogs->LaunchHelpL( KAM_HLP_INSTALL_CAPAB )    
-        );    
+    //TRAP_IGNORE( 
+    //    reinterpret_cast<CSisxUIHandler*>(aPtr)->iCommonDialogs->LaunchHelpL( KAM_HLP_INSTALL_CAPAB )    
+    //    );    
 
     return KErrNone;    
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/appinstui.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description:  Software install UI
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS += sifuidevicedialogplugin/sifuidevicedialogplugin.pro \
+    sifuiinstallindicatorplugin/sifuiinstallindicatorplugin.pro
+
--- a/appinstaller/AppinstUi/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -81,6 +81,7 @@
 // Daemon
 daemon.mmp 
 
-//  End of File
+// SISX SIF plugin
+#include "../sisxsifplugin/group/bld.inf"
 
 
--- a/appinstaller/AppinstUi/group/daemon.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/AppinstUi/group/daemon.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -21,7 +21,13 @@
 
 MACRO __DATA_CAGING__
 
-CAPABILITY    TrustedUI ReadUserData AllFiles WriteDeviceData
+//CAPABILITY    TrustedUI ReadUserData AllFiles WriteDeviceData ReadDeviceData
+
+CAPABILITY 		AllFiles ProtServ ReadDeviceData WriteDeviceData TrustedUI ReadUserData  
+
+// TCB, WriteUserData, DRM, PowerMgmt, MultimediaDD, CommDD, DiskAdmin, NetworkControl, SwEvent, NetworkServices, LocalServices
+// Location, SurroundingsDD, UserEnvironment
+
 // AllFiles needed because uninstaller have to search sys\bin folder.
 // WriteDeviceData for PS keys.
  
@@ -71,8 +77,6 @@
 LIBRARY        apparc.lib
 LIBRARY        sisregistryclient.lib
 LIBRARY        swinstcli.lib
-LIBRARY        aknnotify.lib
-LIBRARY        bafl.lib            // Resource access
 LIBRARY        swidataprovider.lib
 LIBRARY        sisxfile.lib
 LIBRARY        estor.lib
@@ -80,6 +84,10 @@
 LIBRARY        platformenv.lib
 LIBRARY        sysutil.lib         // For Uninstaller
 LIBRARY        ecom.lib            // For Plug-in support
+LIBRARY        stsclient.lib
+LIBRARY        swiobserverclient.lib
+LIBRARY        sif.lib               // USIF SW Installer FW
+LIBRARY        scrclient.lib
 
 DEBUGLIBRARY   flogger.lib
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidevicedialogplugin.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Software install framework (SIF) device dialog plugin.
+*
+*/
+
+#ifndef SIFUIDEVICEDIALOGPLUGIN_H
+#define SIFUIDEVICEDIALOGPLUGIN_H
+
+#include <hbdevicedialogplugin.h>       // HbDeviceDialogPlugin
+
+
+/**
+ * SIF UI device dialog plugin.
+ * Implements device dialog plugin for UI dialogs that can be used
+ * in software install framwork (SIF) plugins.
+ */
+class SifUiDeviceDialogPlugin : public HbDeviceDialogPlugin
+{
+    Q_OBJECT
+
+public:
+    SifUiDeviceDialogPlugin();
+    ~SifUiDeviceDialogPlugin();
+
+public:     // from HbDeviceDialogPlugin
+    bool accessAllowed(const QString &deviceDialogType, const QVariantMap &parameters,
+            const QVariantMap &securityInfo) const;
+    HbDeviceDialogInterface *createDeviceDialog(const QString &deviceDialogType,
+            const QVariantMap &parameters);
+    bool deviceDialogInfo(const QString &deviceDialogType, const QVariantMap &parameters,
+            DeviceDialogInfo *info) const;
+    QStringList deviceDialogTypes() const;
+    PluginFlags pluginFlags() const;
+    int error() const;
+
+private:
+    Q_DISABLE_COPY(SifUiDeviceDialogPlugin)
+
+    int mError;
+};
+
+#endif // SIFUIDEVICEDIALOGPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialog.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Device dialog plugin for SIF UI dialogs.
+*
+*/
+
+#ifndef SIFUIDIALOG_H
+#define SIFUIDIALOG_H
+
+#include <hbdialog.h>                   // HbDialog
+#include <hbdevicedialoginterface.h>    // HbDeviceDialogInterface
+#include "sifuidialogdefinitions.h"     // enum SifUiDeviceDialogType
+#include <qmobilityglobal.h>            // QTM namespace macros
+
+class QTranslator;
+class SifUiDialogTitleWidget;
+class SifUiDialogContentWidget;
+class HbIndicator;
+
+QTM_BEGIN_NAMESPACE
+class QValueSpaceSubscriber;
+QTM_END_NAMESPACE
+
+
+/**
+ * SW Install notification widget class.
+ */
+class SifUiDialog : public HbDialog, public HbDeviceDialogInterface
+{
+    Q_OBJECT
+
+public:     // constructor and destructor
+    SifUiDialog(const QVariantMap &parameters);
+    virtual ~SifUiDialog();
+
+public:     // new functions
+    static SifUiDeviceDialogType dialogType(const QVariantMap &parameters);
+    static SifUiDeviceDialogMode dialogMode(const QVariantMap &parameters);
+
+public:     // from HbDeviceDialogInterface
+    bool setDeviceDialogParameters(const QVariantMap &parameters);
+    int deviceDialogError() const;
+    void closeDeviceDialog(bool byClient);
+    HbDialog *deviceDialogWidget() const;
+
+protected:  // from HbDialog
+    void closeEvent(QCloseEvent *event);
+
+signals:
+    void deviceDialogClosed();
+    void deviceDialogData(const QVariantMap &data);
+
+protected:  // from HbPopup (via HbDialog)
+    void hideEvent(QHideEvent *event);
+    void showEvent(QShowEvent *event);
+
+private:    // new functions
+    void installTranslator();
+    void removeTranslator();
+    bool constructDialog(const QVariantMap &parameters);
+    bool updateFromParameters(const QVariantMap &parameters);
+    void updateButtons();
+    void sendResult(bool accepted);
+    void monitorIndicatorActivity();
+
+private slots:
+    void handleAccepted();
+    void handleCancelled();
+    void handleMemorySelectionChanged(const QString &text);
+    void handleDisplayCertificateDetails();
+    void handleHidePressed();
+    void handleIndicatorActivityChanged();
+    void handleShowInstalled();
+    void handleErrorDetails();
+
+private:
+    Q_DISABLE_COPY(SifUiDialog)
+
+    QTranslator *mTranslator;
+    int mLastDialogError;
+    bool mShowEventReceived;
+    SifUiDeviceDialogType mDialogType;
+    SifUiDialogTitleWidget *mTitle;
+    SifUiDialogContentWidget *mContent;
+    int mInstallError;
+    QVariantMap mResultMap;
+    HbAction *mIgnoreCloseAction;
+    HbIndicator *mIndicator;
+
+    QTM_PREPEND_NAMESPACE(QValueSpaceSubscriber) *mSubscriber;
+};
+
+#endif // SIFUIDIALOG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialogcontentwidget.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: SIF UI dialog content widget.
+*
+*/
+
+#ifndef SIFUIDIALOGCONTENTWIDGET_H
+#define SIFUIDIALOGCONTENTWIDGET_H
+
+#include <hbwidget.h>
+#include <sifuidialogdefinitions.h>
+
+class HbLabel;
+class QGraphicsLinearLayout;
+class HbStackedWidget;
+class HbComboBox;
+class HbProgressBar;
+class CFbsBitmap;
+
+
+class SifUiDialogContentWidget : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    SifUiDialogContentWidget(QGraphicsItem *parent=0, Qt::WindowFlags flags=0);
+    virtual ~SifUiDialogContentWidget();
+
+    void constructFromParameters(const QVariantMap &parameters);
+    void updateFromParameters(const QVariantMap &parameters);
+    void changeType(SifUiDeviceDialogType type);
+
+    QString applicationName() const;
+    bool isDefaultIconUsed() const;
+    void iconHandles(int &iconHandle, int &maskHandle) const;
+    void progressInfo(int &finalValue, int &currentValue) const;
+
+signals:
+    void memorySelectionChanged(const QString &text);
+
+private:
+    Q_DISABLE_COPY(SifUiDialogContentWidget)
+    QString applicationName(const QVariantMap &parameters);
+    QString applicationSize(const QVariantMap &parameters);
+    void removeDetails();
+    void addDetails(const QStringList &detailList);
+    void addDetail(const QString &detailText);
+    void updateAppIcon(const QVariantMap &parameters);
+    void updateAppSize(const QVariantMap &parameters);
+    void updateMemorySelection(const QVariantMap &parameters);
+    void updateProgressBar(const QVariantMap &parameters);
+    void updateErrorText(const QVariantMap &parameters);
+
+private:    // data
+    HbLabel *mAppIcon;
+    HbLabel *mAppName;
+    HbLabel *mAppSize;
+    QGraphicsLinearLayout *mMainLayout;
+    QGraphicsLinearLayout *mAppDetailsLayout;
+    HbStackedWidget *mStackedWidget;
+    HbComboBox *mMemorySelection;
+    HbProgressBar *mProgressBar;
+    HbLabel *mErrorText;
+    CFbsBitmap *mBitmap;
+    CFbsBitmap *mMask;
+};
+
+#endif // SIFUIDIALOGCONTENTWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialogdefinitions.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Definitions for SIF UI device dialog plugin.
+*
+*/
+
+#ifndef SIFUIDIALOGDEFINITIONS_H
+#define SIFUIDIALOGDEFINITIONS_H
+
+enum SifUiDeviceDialogType
+    {
+    SifUiUnspecifiedDialog = 0,
+    SifUiConfirmationQuery = 1,
+    SifUiProgressNote = 2,
+    SifUiCompleteNote = 3,
+    SifUiErrorNote = 4
+    };
+
+enum SifUiDeviceDialogMode {
+    SifUiUnspecified = 0,
+    SifUiInstalling = 1,
+    SifUiUninstalling = 2
+};
+
+// Variant map keys for dialog type and title (common to all dialog types)
+const QString KeySifUiDialogType = "type";              // enum SifUiDeviceDialogType
+const QString KSifUiDialogMode = "mode";                // enum SifUiDeviceDialogMode
+const QString KSifUiDialogTitle = "title";              // string
+
+// Variant map keys for device dialog return values
+const QString KSifUiQueryAccepted = "accept";           // boolean
+const QString KSifUiSelectedMemoryIndex = "memi";       // integer
+
+// Variant map keys for "confirmation query" dialog parameters
+const QString KSifUiApplicationName = "app";            // string
+const QString KSifUiApplicationIconHandle = "icon";     // integer, bitmap handle
+const QString KSifUiApplicationIconMaskHandle = "mask"; // integer, bitmap handle
+const QString KSifUiApplicationVersion = "ver";         // string
+const QString KSifUiApplicationSize = "size";           // integer
+const QString KSifUiApplicationDetails = "details";     // string list
+const QString KSifUiMemorySelection = "mem";            // string list
+const QString KSifUiCertificates = "cert";              // string list ??
+
+// Variant map keys for "progress note" dialog parameters
+const QString KSifUiProgressNoteText = "txt";           // string
+const QString KSifUiProgressNoteFinalValue = "fin";     // integer
+const QString KSifUiProgressNoteValue = "val";          // integer
+
+// Variant map keys for "error" dialog parameters
+const QString KSifUiErrorCode = "err";                  // integer
+
+
+#endif // SIFUIDIALOGDEFINITIONS_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/inc/sifuidialogtitlewidget.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: SIF UI dialog title widget.
+*
+*/
+
+#ifndef SIFUIDIALOGTITLEWIDGET_H
+#define SIFUIDIALOGTITLEWIDGET_H
+
+#include <hbwidget.h>
+#include "sifuidialogdefinitions.h"         // SifUiDeviceDialogType, SifUiDeviceDialogMode
+
+class QGraphicsLinearLayout;
+class HbLabel;
+class HbPushButton;
+
+
+class SifUiDialogTitleWidget : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    SifUiDialogTitleWidget(QGraphicsItem *parent=0, Qt::WindowFlags flags=0);
+    virtual ~SifUiDialogTitleWidget();
+
+    void constructFromParameters(const QVariantMap &parameters);
+    void updateFromParameters(const QVariantMap &parameters);
+
+signals:
+    void certificatesClicked();
+
+private:
+    Q_DISABLE_COPY(SifUiDialogTitleWidget)
+    QString defaultTitle(SifUiDeviceDialogType type, SifUiDeviceDialogMode mode);
+    void createCertButton();
+    void removeCertButton();
+
+private:    // data
+    QGraphicsLinearLayout *mLayout;
+    HbLabel *mTitle;
+    HbPushButton *mCertButton;
+};
+
+#endif // SIFUIDIALOGTITLEWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/loc/sifuidevicedialogplugin.ts	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_sisxui_install_appname_version">
+    <comment>Template for application name and version in SW install confirmation query. %1 is the application name and %2 is the version number. Version number consist of major, minor, and build numbers. For example: &quot;Chess (v 1.01(123))&quot;.</comment>        
+    <source>%1 (v %2)</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri3_large_graphic</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P01</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_uninstall_complete_head">
+    <comment>Uninstallation complete note title. Indicates that application was succesfully removed.</comment>        
+    <source>Removed</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid></extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature></extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_appsize_mb">
+    <comment>Application size in SW install confirmation query, %1 is in megabytes</comment>        
+    <source>Size: %1 MB</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri3_large_graphic</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P01</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_close">
+    <comment>Closes the dialog. Control returns back to where the installation was started.</comment>        
+    <source>Close</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_softkey_2</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P03</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_uninstall_failed_head">
+    <comment>Uninstallation failed note title. Indicates that uninstallation failed.</comment>        
+    <source>Remove failed</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid></extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature></extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_show">
+    <comment>Opens Application Library to view the installed application.</comment>        
+    <source>Show</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_softkey_2</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P03</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_appsize_kb">
+    <comment>Application size in SW install confirmation query, %1 is in kilobytes</comment>        
+    <source>Size: %1 kB</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri3_large_graphic</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P01</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_error_details">
+    <comment>Shows a dialog with further info about the failure (i.e. why installation failed).</comment>        
+    <source>Details</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_softkey_2</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P04</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_conf_head">
+    <comment>Install confirmation query title. Installation starts if the user accepts the query.</comment>        
+    <source>Install?</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P01</extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_failed_head">
+    <comment>Installation failed note title. Indicates that installation failed.</comment>        
+    <source>Installation failed</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P04</extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_hide">
+    <comment>Hides the progress dialog. Progress note moves into universal indicator.</comment>        
+    <source>Hide</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_softkey_2</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P02</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_uninstall_conf_head">
+    <comment>Uninstall confirmation query title. Asks permission to remove selected application/other content.</comment>        
+    <source>Remove?</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid></extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature></extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_cancel">
+    <comment>Cancels the SW install confirmation query and closes the dialog.</comment>        
+    <source>Cancel</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_softkey_2</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P01</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_complete_head">
+    <comment>Installation complete note title. Indicates that installation was succesfully completed. User has option to launch AppLib.</comment>        
+    <source>Installed</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P03</extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_appsize_b">
+    <comment>Application size in SW install confirmation query, %1 is in bytes</comment>        
+    <source>Size: %1 B</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri3_large_graphic</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P01</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_install_ok">
+    <comment>Accepts the SW install confirmation query and starts installation.</comment>        
+    <source>Ok</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_softkey_2</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P01</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_uninstalling_progress_head">
+    <comment>Progress note title. Uninstallation is going on and progress bar shows how it proceeds.</comment>        
+    <source>Removing</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid></extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature></extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_sisxui_installing_progress_head">
+    <comment>Progress note title. Installation is going on and progress bar shows how it proceeds.</comment>        
+    <source>Installing</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>    
+    <extra-loc-viewid>Installer_P02</extra-loc-viewid>
+    <extra-loc-positionid>title</extra-loc-positionid>
+    <extra-loc-feature>In</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file appinstaller/AppinstUi/sifuidevicedialogplugin/loc/sifuidevicedialogplugin.xls has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/resources/qgn_indi_midp_trusted.svg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg width="16" height="16" viewBox="0 0 16 16">
+<path fill="#496DA2" d="M10.61,7.411H9.651v0.003l-2.188,8.539c0.62-0.047,1.979-0.227,3.015-0.583 c2.477-0.776,2.543-3.669,2.543-3.669c0.02-0.002,0.021-0.004,0-0.004l0.156-5.019L10.61,7.411z"/>
+<path fill="#A2C2DD" d="M10.492,12.252c0-0.011,0-4.838,0-4.838l-9.94-0.557l0.112,4.63c0.053,1.974,1.425,3.954,2.82,4.091 l3.802,0.377C8.292,15.861,10.354,14.993,10.492,12.252z"/>
+<path fill="#496DA2" d="M6.105,10.902c0.613-0.453,0.605-1.24,0.189-1.717C5.977,8.824,5.549,8.795,5.538,8.794 C5.527,8.793,5.239,8.719,4.781,9.022c-0.417,0.387-0.425,1.172,0.189,1.757L4.619,13.23l1.925,0.193L6.105,10.902z"/>
+<path fill="#235487" d="M5.148,10.779c0,0-0.237-0.098-0.444-0.66C4.526,8.994,5.291,8.857,5.279,8.855 c-0.011,0-0.298-0.075-0.756,0.229c-0.417,0.387-0.425,1.172,0.189,1.756l-0.352,2.452l0.521-0.095L5.148,10.779z"/>
+<polygon fill="#CEE1EF" points="13.177,6.66 3.135,6.063 0.552,6.857 10.789,7.411 "/>
+<path fill="#496DA2" d="M5.071,6.567c0-0.49-0.192-1.703,0.785-1.989c1.624-0.475,2.268,0.99,2.268,2.262 c0,0.491,2.336,0.379,2.309-0.17c-0.027-0.548-0.279-3.594-2.84-4.136C2.985,2.016,2.76,6.01,2.906,6.567 C3.033,7.049,5.071,6.878,5.071,6.567z"/>
+</svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/resources/qgn_menu_am_sis.svg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg width="100%" height="100%" viewBox="0 0 88 88">
+<linearGradient id="_12" gradientUnits="userSpaceOnUse" x1="44.68" y1="44.13" x2="62.99" y2="80.2">
+<stop stop-color="#A2C2DD" offset="0.1"/>
+<stop stop-color="#6C83BB" offset="0.71"/>
+<stop stop-color="#003D6D" offset="0.99"/>
+</linearGradient>
+<path fill="url(#_12)" d="M14.475,14.003c0,0,0.809,11.089,0.952,13.061c-5.274-2.117-12.123,2.153-12.088,8.081 c0.032,5.237,6.587,11.975,13.074,9.778l0.983,16.064l19.536,6.212l3.87-3.304c-1.391-1.28-4.237-6.712-0.913-10.679 c1.636,0.074,3.803,1.019,5.318,3.341c-0.755,0.446-2.435,1.438-2.435,1.438l1.769,18.358l15.22,5.217L70.69,74.02 c0,0,0.713-11.908,0.78-13.026c6.92-0.28,10.947-6.543,10.947-11.571c0-6.004-4.893-12.288-12.286-12.695 c0.042-1.229,0.537-15.648,0.537-15.648l-23.381-4.272l-4.885,3.214c3.509,4.846,3.525,10.268,1.019,13.249 c-3.51,2.305-11.719-5.695-4.459-17.366l-20.704-3.978L14.475,14.003z"/>
+<linearGradient id="_13" gradientUnits="userSpaceOnUse" x1="48.4" y1="45.14" x2="26.4" y2="15.64">
+<stop stop-color="#FFFFFF" offset="0"/>
+<stop stop-color="#A2C2DD" offset="0.35"/>
+<stop stop-color="#6C83BB" offset="0.7"/>
+<stop stop-color="#003D6D" offset="1"/>
+</linearGradient>
+<path fill="url(#_13)" d="M24.994,28.365l8.648-9.673l4.228-2.288c-6.905,12.095,2.267,20.532,6.18,17.29 c-0.206,0.233-1.306,5.171-1.306,5.171L24.994,28.365z"/>
+<linearGradient id="_14" gradientUnits="userSpaceOnUse" x1="49.78" y1="73.59" x2="33.78" y2="54.09">
+<stop stop-color="#FFFFFF" offset="0"/>
+<stop stop-color="#A2C2DD" offset="0.35"/>
+<stop stop-color="#6C83BB" offset="0.7"/>
+<stop stop-color="#003D6D" offset="1"/>
+</linearGradient>
+<path fill="url(#_14)" d="M39.571,52.482c-3.281,3.521-1.765,8.89,0.253,11.328l-3.05,2.604L20.548,42.523L39.571,52.482z "/>
+<linearGradient id="_15" gradientUnits="userSpaceOnUse" x1="66.5" y1="18.51" x2="66.79" y2="46.9">
+<stop stop-color="#FFFFFF" offset="0"/>
+<stop stop-color="#A2C2DD" offset="0.35"/>
+<stop stop-color="#6C83BB" offset="0.7"/>
+<stop stop-color="#003D6D" offset="1"/>
+</linearGradient>
+<polygon fill="url(#_15)" points="63.325,42.008 63.278,24.622 69.948,21.658 69.371,38.502 "/>
+<linearGradient id="_16" gradientUnits="userSpaceOnUse" x1="25.65" y1="17.91" x2="27.75" y2="12.21">
+<stop stop-color="#FFFFFF" offset="0.05"/>
+<stop stop-color="#A2C2DD" offset="1"/>
+</linearGradient>
+<polygon fill="url(#_16)" points="15.205,14.4 18.376,12.659 37.964,16.356 33.643,18.692 "/>
+<linearGradient id="_17" gradientUnits="userSpaceOnUse" x1="55.45" y1="24.23" x2="58.18" y2="16.83">
+<stop stop-color="#FFFFFF" offset="0.05"/>
+<stop stop-color="#A2C2DD" offset="1"/>
+</linearGradient>
+<polygon fill="url(#_17)" points="43.376,20.218 47.438,17.545 69.948,21.658 63.807,24.622 "/>
+<linearGradient id="_18" gradientUnits="userSpaceOnUse" x1="9.41" y1="29.03" x2="15.24" y2="32.03">
+<stop stop-color="#FFFFFF" offset="0.05"/>
+<stop stop-color="#A2C2DD" offset="1"/>
+</linearGradient>
+<path fill="url(#_18)" d="M5.168,31.243c3.055-4.432,8.436-4.929,11.075-3.032l0.301,3.842L5.168,31.243z"/>
+<linearGradient id="_19" gradientUnits="userSpaceOnUse" x1="66" y1="32.31" x2="81.16" y2="58.31">
+<stop stop-color="#FFFFFF" offset="0"/>
+<stop stop-color="#A2C2DD" offset="0.35"/>
+<stop stop-color="#6C83BB" offset="0.7"/>
+<stop stop-color="#003D6D" offset="1"/>
+</linearGradient>
+<path fill="url(#_19)" d="M63.479,40.737l5.963-3.383c7.639-1.027,18.434,11.723,8.048,20.789L63.479,40.737z"/>
+<linearGradient id="_20" gradientUnits="userSpaceOnUse" x1="53.27" y1="11.98" x2="36.67" y2="58.23">
+<stop stop-color="#FFFFFF" offset="0.05"/>
+<stop stop-color="#A2C2DD" offset="1"/>
+</linearGradient>
+<path fill="url(#_20)" d="M63.543,40.685c7.758-3.933,16.752,4.756,16.232,11.543c-0.824,10.789-12.64,9.004-16.388,5.077 L45.833,69.03c4.174-3.883,1.91-14.799-4.674-16.367c-6.584-1.569-9.549,7.171-4.385,13.751l-18.709-5.948l-1.01-16.502 c-6.7,3.158-12.989-4.322-13.017-8.823c-0.04-6.581,7.252-8.843,12.437-3.323L15.205,14.4l18.438,4.292 c-4.241,6.53,0.437,15.692,5.636,16.821c5.2,1.128,9.505-7.159,4.098-15.296l20.431,4.404L63.543,40.685z"/>
+<polygon fill="#A15EB6" points="59.654,80.794 45.195,75.838 43.51,58.344 60.175,62.587 "/>
+<polygon fill="#5E1B67" points="59.654,80.794 70.012,73.638 71.094,55.58 59.654,62.587 "/>
+<linearGradient id="_21" gradientUnits="userSpaceOnUse" x1="43.41" y1="57.36" x2="71.04" y2="57.36">
+<stop stop-color="#DEDEED" offset="0"/>
+<stop stop-color="#9646AC" offset="1"/>
+</linearGradient>
+<polygon fill="url(#_21)" points="43.408,58.344 59.654,62.587 71.042,55.58 54.517,52.14 "/>
+<linearGradient id="_22" gradientUnits="userSpaceOnUse" x1="32.16" y1="82.01" x2="58.74" y2="74.55">
+<stop stop-color="#DEDEED" offset="0"/>
+<stop stop-color="#9646AC" offset="1"/>
+</linearGradient>
+<polygon fill="url(#_22)" points="58.806,67.904 59.629,80.923 45.193,75.631 "/>
+<rect fill="none" height="88" width="88"/>
+</svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/rom/sifuidevicedialogplugin.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: ROM image files for SW install notification dialog plugin.
+*
+*/
+
+#ifndef SIFUIDEVICEDIALOGPLUGIN_IBY
+#define SIFUIDEVICEDIALOGPLUGIN_IBY
+
+file=ABI_DIR\UREL\sifuidevicedialogplugin.dll SHARED_LIB_DIR\sifuidevicedialogplugin.dll UNPAGED
+data=DATAZ_\pluginstub\sifuidevicedialogplugin.qtplugin \resource\plugins\devicedialogs\sifuidevicedialogplugin.qtplugin
+
+#endif  // SIFUIDEVICEDIALOGPLUGIN_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/rom/sifuidevicedialogplugin_resources.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: ROM image files for SW install notification dialog plugin.
+*
+*/
+
+#ifndef SIFUIDEVICEDIALOGPLUGIN_RESOURCES_IBY
+#define SIFUIDEVICEDIALOGPLUGIN_RESOURCES_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+data=DATAZ_/APP_RESOURCE_DIR/sifuidevicedialogplugin.rsc APP_RESOURCE_DIR/sifuidevicedialogplugin.rsc 
+data=DATAZ_/QT_TRANSLATIONS_DIR/sifuidevicedialogplugin.qm QT_TRANSLATIONS_DIR/sifuidevicedialogplugin.qm
+
+#endif  // SIFUIDEVICEDIALOGPLUGIN_RESOURCES_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/sifuidevicedialogplugin.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,70 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Software Install Framework (SIF) device dialogs plugin.
+#
+
+TEMPLATE = lib
+TARGET = sifuidevicedialogplugin
+CONFIG += plugin
+CONFIG += hb
+#TRANSLATIONS = sifuidevicedialogplugin.ts
+
+INCLUDEPATH += .
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+INCLUDEPATH += ../sifuiinstallindicatorplugin/inc
+DEPENDPATH += .
+
+LIBS += -lQtPublishSubscribe
+
+HEADERS += inc/sifuidevicedialogplugin.h \
+    inc/sifuidialogdefinitions.h \
+    inc/sifuidialog.h \
+    inc/sifuidialogtitlewidget.h \
+    inc/sifuidialogcontentwidget.h
+
+SOURCES += src/sifuidevicedialogplugin.cpp \
+    src/sifuidialog.cpp \
+    src/sifuidialogtitlewidget.cpp \
+    src/sifuidialogcontentwidget.cpp
+
+RESOURCES += sifuidevicedialogplugin.qrc
+
+symbian: {
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    TARGET.UID3 = 0x2002C3AC
+
+    pluginstub.sources = sifuidevicedialogplugin.dll
+    pluginstub.path = /resource/plugins/devicedialogs
+    DEPLOYMENT += pluginstub
+
+	LIBS += -lfbscli
+}
+
+BLD_INF_RULES.prj_exports += \
+  "$${LITERAL_HASH}include <platform_paths.hrh>" \
+  "qmakepluginstubs/sifuidevicedialogplugin.qtplugin /epoc32/data/z/pluginstub/sifuidevicedialogplugin.qtplugin" \
+  "inc/sifuidialogdefinitions.h MW_LAYER_PLATFORM_EXPORT_PATH(sifuidialogdefinitions.h)" \
+  "rom/sifuidevicedialogplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(sifuidevicedialogplugin.iby)" \
+  "rom/sifuidevicedialogplugin_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(sifuidevicedialogplugin_resources.iby)"
+
+LIBS += -lxqservice
+
+tests {
+    test.depends = sub-src
+    test.commands += cd tsrc && $(MAKE) test
+    autotest.depends = sub-src
+    autotest.commands += cd tsrc && $(MAKE) autotest
+    QMAKE_EXTRA_TARGETS += test autotest
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/sifuidevicedialogplugin.qrc	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,6 @@
+<RCC>
+    <qresource prefix="/" >
+        <file alias="default_app_icon.svg" >resources/qgn_menu_am_sis.svg</file>
+        <file alias="cert_indi_icon.svg" >resources/qgn_indi_midp_trusted.svg</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidevicedialogplugin.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,139 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Software install framework (SIF) device dialog plugin.
+*
+*/
+
+#include "sifuidevicedialogplugin.h"
+#include "sifuidialogdefinitions.h"
+#include "sifuidialog.h"
+
+// This plugin implements one device dialog, SIF UI device dialog.
+static const char* KSifUiDeviceDialog = "com.nokia.sifui/1.0";
+static const struct {
+    const char *mTypeString;
+} dialogInfos[] = {
+    {KSifUiDeviceDialog}
+};
+
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::SifUiDeviceDialogPlugin()
+// ----------------------------------------------------------------------------
+//
+SifUiDeviceDialogPlugin::SifUiDeviceDialogPlugin() : mError(KErrNone)
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::~SifUiDeviceDialogPlugin()
+// ----------------------------------------------------------------------------
+//
+SifUiDeviceDialogPlugin::~SifUiDeviceDialogPlugin()
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::accessAllowed()
+// ----------------------------------------------------------------------------
+//
+bool SifUiDeviceDialogPlugin::accessAllowed(const QString &deviceDialogType,
+    const QVariantMap &parameters, const QVariantMap &securityInfo) const
+{
+    Q_UNUSED(deviceDialogType)
+    Q_UNUSED(parameters)
+    Q_UNUSED(securityInfo)
+
+    // All clients are allowed to use.
+    // TODO: should access be limited to certain clients?
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::createDeviceDialog()
+// ----------------------------------------------------------------------------
+//
+HbDeviceDialogInterface *SifUiDeviceDialogPlugin::createDeviceDialog(
+    const QString &deviceDialogType, const QVariantMap &parameters)
+{
+    //  Create device dialog widget
+    Q_UNUSED(deviceDialogType)
+
+    SifUiDialog *deviceDialog = new SifUiDialog(parameters);
+    mError = deviceDialog->deviceDialogError();
+    if (mError != KErrNone) {
+        delete deviceDialog;
+        deviceDialog = 0;
+    }
+
+    return deviceDialog;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::deviceDialogInfo()
+// ----------------------------------------------------------------------------
+//
+bool SifUiDeviceDialogPlugin::deviceDialogInfo( const QString &deviceDialogType,
+        const QVariantMap &parameters, DeviceDialogInfo *info) const
+{
+    // Return device dialog flags
+    Q_UNUSED(deviceDialogType);
+    Q_UNUSED(parameters);
+
+    info->group = DeviceNotificationDialogGroup;
+    info->flags = NoDeviceDialogFlags;
+    info->priority = DefaultPriority;
+
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::deviceDialogTypes()
+// ----------------------------------------------------------------------------
+//
+QStringList SifUiDeviceDialogPlugin::deviceDialogTypes() const
+{
+    // Return device dialog types this plugin implements
+
+    QStringList types;
+    const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
+    for(int i = 0; i < numTypes; ++i) {
+        types.append(dialogInfos[i].mTypeString);
+    }
+
+    return types;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::pluginFlags()
+// ----------------------------------------------------------------------------
+//
+HbDeviceDialogPlugin::PluginFlags SifUiDeviceDialogPlugin::pluginFlags() const
+{
+    // Return plugin flags
+    return NoPluginFlags;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDeviceDialogPlugin::error()
+// ----------------------------------------------------------------------------
+//
+int SifUiDeviceDialogPlugin::error() const
+{
+    // Return last error
+    return mError;
+}
+
+Q_EXPORT_PLUGIN2(SifUiDeviceDialogPlugin,SifUiDeviceDialogPlugin)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialog.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,474 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Software install notification plugin class.
+*
+*/
+
+#include "sifuidialog.h"
+#include "sifuidialogtitlewidget.h"
+#include "sifuidialogcontentwidget.h"
+#include "sifuiinstallindicatorparams.h"
+#include <hblabel.h>
+#include <hbaction.h>
+#include <hbindicator.h>
+#include <QTranslator>
+#include <QApplication>                     // qApp()
+#include <QFile>
+#include <hbmessagebox.h>
+#include <qvaluespacesubscriber.h>
+
+const QString KTranslationsPath = "resource/qt/translations/";
+const QString KTranslationsFile = "sifuidevicedialogplugin";
+const QString KSwiErrorsFile = "c:\\temp\\swierrors.txt";
+const QString KSwiErrorFormat = " (%1)";
+
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::SifUiDialog()
+// ----------------------------------------------------------------------------
+//
+SifUiDialog::SifUiDialog(const QVariantMap &parameters) : HbDialog(),
+    mLastDialogError(KErrNone), mShowEventReceived(false),
+    mDialogType(SifUiUnspecifiedDialog),
+    mTitle(0), mContent(0), mResultMap(),
+    mIgnoreCloseAction(0), mIndicator(0), mSubscriber(0)
+{
+    // TODO: enable when translations ready
+    //installTranslator();
+    constructDialog(parameters);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::~SifUiDialog()
+// ----------------------------------------------------------------------------
+//
+SifUiDialog::~SifUiDialog()
+{
+    delete mSubscriber;
+
+    // TODO: enable when translations ready
+    //removeTranslator();
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::dialogType()
+// ----------------------------------------------------------------------------
+//
+SifUiDeviceDialogType SifUiDialog::dialogType(const QVariantMap &parameters)
+{
+    SifUiDeviceDialogType type = SifUiUnspecifiedDialog;
+    if (parameters.contains(KeySifUiDialogType)) {
+        type = static_cast<SifUiDeviceDialogType>(parameters.value(KeySifUiDialogType).toInt());
+        Q_ASSERT(type == SifUiConfirmationQuery || type == SifUiProgressNote ||
+            type == SifUiCompleteNote || type == SifUiErrorNote);
+    }
+    return type;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::dialogMode()
+// ----------------------------------------------------------------------------
+//
+SifUiDeviceDialogMode SifUiDialog::dialogMode(const QVariantMap &parameters)
+{
+    SifUiDeviceDialogMode mode = SifUiUnspecified;
+    if (parameters.contains(KSifUiDialogMode)) {
+        mode = static_cast<SifUiDeviceDialogMode>(parameters.value(KSifUiDialogMode).toInt());
+        Q_ASSERT(mode == SifUiInstalling || mode == SifUiUninstalling);
+    }
+    return mode;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::setDeviceDialogParameters()
+// ----------------------------------------------------------------------------
+//
+bool SifUiDialog::setDeviceDialogParameters(const QVariantMap &parameters)
+{
+   return updateFromParameters(parameters);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::deviceDialogError()
+// ----------------------------------------------------------------------------
+//
+int SifUiDialog::deviceDialogError() const
+{
+    return mLastDialogError;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::closeDeviceDialog()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::closeDeviceDialog(bool byClient)
+{
+    Q_UNUSED(byClient);
+    close();
+
+    // If show event has been received, close is signalled from hide event.
+    // If not, hide event does not come and close is signalled from here.
+    if (!mShowEventReceived) {
+        emit deviceDialogClosed();
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::deviceDialogWidget()
+// ----------------------------------------------------------------------------
+//
+HbDialog *SifUiDialog::deviceDialogWidget() const
+{
+    return const_cast<SifUiDialog*>(this);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::closeEvent()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::closeEvent(QCloseEvent *event)
+{
+    if (mIgnoreCloseAction) {
+        HbAction *closingAction = qobject_cast<HbAction *>(sender());
+        if (closingAction == mIgnoreCloseAction) {
+            // Prevents the dialog from begin closed when "Ok" pressed
+            event->ignore();
+            return;
+        }
+    }
+    HbDialog::closeEvent(event);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::hideEvent()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::hideEvent(QHideEvent *event)
+{
+    HbDialog::hideEvent(event);
+    emit deviceDialogClosed();
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::showEvent()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::showEvent(QShowEvent *event)
+{
+    HbDialog::showEvent(event);
+    mShowEventReceived = true;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::installTranslator()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::installTranslator()
+{
+    mTranslator = new QTranslator(this);
+    QString lang = QLocale::system().name();
+    mTranslator->load(KTranslationsFile + lang, KTranslationsPath);
+    qApp->installTranslator(mTranslator);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::removeTranslator()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::removeTranslator()
+{
+    QApplication *app = qApp;
+    if (mTranslator && app) {
+        app->removeTranslator(mTranslator);
+        mTranslator = 0;
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::constructDialog()
+// ----------------------------------------------------------------------------
+//
+bool SifUiDialog::constructDialog(const QVariantMap &parameters)
+    {
+    setTimeout(HbPopup::NoTimeout);
+    setDismissPolicy(HbPopup::NoDismiss);
+    setModal(true);
+
+    mDialogType = dialogType(parameters);
+
+    // Title
+    Q_ASSERT(mTitle == 0);
+    mTitle = new SifUiDialogTitleWidget(this);
+    mTitle->constructFromParameters(parameters);
+    connect(mTitle, SIGNAL(certificatesClicked()),
+            this, SLOT(handleDisplayCertificateDetails()));
+    setHeadingWidget(mTitle);
+
+    // Content
+    Q_ASSERT(mContent == 0);
+    mContent = new SifUiDialogContentWidget(this);
+    mContent->constructFromParameters(parameters);
+    connect(mContent, SIGNAL(memorySelectionChanged(const QString &)),
+            this, SLOT(handleMemorySelectionChanged(const QString &)));
+    setContentWidget(mContent);
+
+    // Buttons
+    // build error in wk10: 
+    // Error: #20: identifier "mConfirmInstallAction" is undefined
+    //Q_ASSERT(mConfirmInstallAction == 0);
+    updateButtons();
+
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::updateFromParameters()
+// ----------------------------------------------------------------------------
+//
+bool SifUiDialog::updateFromParameters(const QVariantMap &parameters)
+{
+    SifUiDeviceDialogType prevDialogType = mDialogType;
+    mDialogType = dialogType(parameters);
+    if (mTitle)
+        {
+        mTitle->updateFromParameters(parameters);
+        }
+    if (mContent)
+        {
+        mContent->updateFromParameters(parameters);
+        }
+    if (prevDialogType != mDialogType) {
+        updateButtons();
+    }
+    if (parameters.contains(KSifUiErrorCode)) {
+        mInstallError = parameters.value(KSifUiErrorCode).toInt();
+    }
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::updateButtons()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::updateButtons()
+{
+    mIgnoreCloseAction = 0;
+
+    HbAction *primaryAction = 0;
+    switch (mDialogType) {
+        case SifUiConfirmationQuery:
+            //: Accepts the SW install confirmation query and starts installation.
+            // TODO: enable when translations ready
+            //primaryAction = new HbAction(hbTrId("txt_sisxui_install_ok"), this);
+            primaryAction = new HbAction(tr("Ok"), this);
+            connect(primaryAction, SIGNAL(triggered()), this, SLOT(handleAccepted()));
+            mIgnoreCloseAction = primaryAction;
+            break;
+        case SifUiProgressNote:
+            //: Hides the progress dialog. Progress note moves into universal indicator.
+            // TODO: enable when translations ready
+            //primaryAction = new HbAction(hbTrId("txt_sisxui_install_hide"), this);
+            primaryAction = new HbAction(tr("Hide"), this);
+            connect(primaryAction, SIGNAL(triggered()), this, SLOT(handleHide()));
+            mIgnoreCloseAction = primaryAction;
+            break;
+        case SifUiCompleteNote:
+            //: Opens Application Library to view the installed application.
+            // TODO: enable when translations ready
+            //primaryAction = new HbAction(hbTrId("txt_sisxui_install_show"), this);
+            primaryAction = new HbAction(tr("Show"), this);
+            connect(primaryAction, SIGNAL(triggered()), this, SLOT(handleShowInstalled()));
+            mIgnoreCloseAction = primaryAction;
+            break;
+        case SifUiErrorNote:
+            //: Shows a dialog with further info about the failure (i.e. why installation failed).
+            // TODO: enable when translations ready
+            //primaryAction = new HbAction(hbTrId("txt_sisxui_install_error_details"), this);
+            primaryAction = new HbAction(tr("Details"), this);
+            connect(primaryAction, SIGNAL(triggered()), this, SLOT(handleErrorDetails()));
+            mIgnoreCloseAction = primaryAction;
+            break;
+        default:
+            break;
+    }
+    setPrimaryAction(primaryAction);
+
+    HbAction *secondaryAction = 0;
+    switch (mDialogType) {
+        case SifUiConfirmationQuery:
+        case SifUiProgressNote:
+            //: Cancels the SW install confirmation query and closes the dialog.
+            // TODO: enable when translations ready
+            //secondaryAction = new HbAction(hbTrId("txt_sisxui_install_cancel"), this);
+            secondaryAction = new HbAction(tr("Cancel"), this);
+            connect(secondaryAction, SIGNAL(triggered()), this, SLOT(handleCancelled()));
+            break;
+        case SifUiCompleteNote:
+        case SifUiErrorNote:
+            //: Closes the dialog. Control returns back to where the installation was started.
+            // TODO: enable when translations ready
+            //secondaryAction = new HbAction(hbTrId("txt_sisxui_install_close"), this);
+            secondaryAction = new HbAction(tr("Close"), this);
+            connect(secondaryAction, SIGNAL(triggered()), this, SLOT(close()));
+            break;
+        default:
+            break;
+    }
+    setSecondaryAction(secondaryAction);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::sendResult()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::sendResult(bool accepted)
+{
+    QVariant acceptedValue(accepted);
+    mResultMap.insert(KSifUiQueryAccepted, acceptedValue);
+    emit deviceDialogData(mResultMap);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::monitorIndicatorActivity()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::monitorIndicatorActivity()
+{
+    if (!mSubscriber) {
+        mSubscriber = new QTM_PREPEND_NAMESPACE(QValueSpaceSubscriber(KSifUiIndicatorPath));
+        connect(mSubscriber, SIGNAL(contentsChanged()),
+            this, SLOT(handleIndicatorActivityChanged()));
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleAccepted()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleAccepted()
+{
+    mContent->changeType(SifUiProgressNote);
+    sendResult(true);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleCancelled()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleCancelled()
+{
+    sendResult(false);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleMemorySelectionChanged()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleMemorySelectionChanged(const QString &text)
+{
+    QVariant memorySelection(text);
+    mResultMap.insert(KSifUiSelectedMemoryIndex, memorySelection);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleDisplayCertificateDetails()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleDisplayCertificateDetails()
+{
+    // TODO: display certificate details dialog
+    HbMessageBox::warning(tr("Not implemented yet"));
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleHidePressed()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleHidePressed()
+{
+    if (!mIndicator) {
+        mIndicator = new HbIndicator(this);
+
+        QVariantMap variantMap;
+        QVariant applicationNameVariant(mContent->applicationName());
+        variantMap.insert(KSifUiIndicatorApplicationName, applicationNameVariant);
+
+        if (!mContent->isDefaultIconUsed()) {
+            int iconHandle = 0;
+            int maskHandle = 0;
+            mContent->iconHandles(iconHandle, maskHandle);
+            QVariant iconHandleVariant(iconHandle);
+            variantMap.insert(KSifUiIndicatorAppIconHandle, iconHandleVariant);
+            QVariant maskHandleVariant(maskHandle);
+            variantMap.insert(KSifUiIndicatorAppIconMaskHandle, maskHandleVariant);
+        }
+
+        int finalValue = 0;
+        int progressValue = 0;
+        mContent->progressInfo(finalValue, progressValue);
+        QVariant finalValueVariant(finalValue);
+        variantMap.insert(KSifUiIndicatorProgressFinal, finalValueVariant);
+        QVariant progressValueVariant(progressValue);
+        variantMap.insert(KSifUiIndicatorProgressValue, progressValueVariant);
+
+        QVariant parameter(variantMap);
+        if (mIndicator->activate(KSifUiIndicatorPlugin, parameter)) {
+            hide();
+            monitorIndicatorActivity();
+        }
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleIndicatorActivityChanged()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleIndicatorActivityChanged()
+{
+    QVariant variant = mSubscriber->value(KSifUiIndicatorActive);
+    if (variant.isValid() && (variant.type() == QVariant::Int)) {
+        bool valueOk = false;
+        int intValue = variant.toInt(&valueOk);
+        if (valueOk && intValue) {
+            show();
+        }
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleShowInstalled()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleShowInstalled()
+{
+    // TODO: launch applib
+    HbMessageBox::warning(tr("Not implemented yet"));
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialog::handleErrorDetails()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialog::handleErrorDetails()
+{
+    // TODO: show proper error details dialog
+    QString messageText;
+    messageText = tr("Not implemented yet.\n\nError code %1").arg(mInstallError);
+
+    if (QFile::exists(KSwiErrorsFile)) {
+        messageText.append(KSwiErrorFormat.arg(mInstallError));
+    }
+    HbMessageBox::warning(messageText);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogcontentwidget.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,475 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Software install notification content widget.
+*
+*/
+
+#include "sifuidialogcontentwidget.h"
+#include <QGraphicsLinearLayout>
+#include <hbstackedwidget.h>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+#include <hbcombobox.h>
+#include <hbprogressbar.h>
+#include <QPixmap>
+#include <QDir>
+#include <QFileInfoList>
+#if defined(Q_OS_SYMBIAN)
+#include <fbs.h>                            // CFbsBitmap
+#endif  // Q_OS_SYMBIAN
+
+// See definitions in sifuidevicedialogplugin.qrc
+const char KSifUiDialogIconAppDefault[] = ":/default_app_icon.svg";
+
+const int KAppNameIndex = 0;
+const int KAppSizeIndex = 1;
+
+
+// ======== LOCAL FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// fbsBitmap()
+// ----------------------------------------------------------------------------
+//
+CFbsBitmap *fbsBitmap(int handle)
+{
+    CFbsBitmap *bitmap = 0;
+#if defined(Q_OS_SYMBIAN)
+    bitmap = new CFbsBitmap;
+    if (bitmap) {
+        if (!bitmap->Duplicate(handle)) {
+            delete bitmap;
+            bitmap = 0;
+        }
+    }
+#endif // Q_OS_SYMBIAN
+    return bitmap;
+}
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::SifUiDialogContentWidget()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogContentWidget::SifUiDialogContentWidget(QGraphicsItem *parent,
+        Qt::WindowFlags flags) : HbWidget(parent, flags),
+        mAppIcon(0), mAppName(0), mAppSize(0),
+        mMainLayout(0), mAppDetailsLayout(0), mStackedWidget(0),
+        mMemorySelection(0), mProgressBar(0), mErrorText(0),
+        mBitmap(0), mMask(0)
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::~SifUiDialogContentWidget()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogContentWidget::~SifUiDialogContentWidget()
+{
+    delete mBitmap;
+    delete mMask;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::constructFromParameters()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::constructFromParameters(const QVariantMap &parameters)
+{
+    Q_ASSERT(mMainLayout == 0);
+    mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    // Application icon
+    QGraphicsLinearLayout *iconAndAppLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+    Q_ASSERT(mAppIcon == 0);
+    mAppIcon = new HbLabel;
+    updateAppIcon(parameters);
+    iconAndAppLayout->addItem(mAppIcon);
+
+    // Application name and version
+    Q_ASSERT(mAppDetailsLayout == 0);
+    mAppDetailsLayout = new QGraphicsLinearLayout(Qt::Vertical);
+    Q_ASSERT(mAppName == 0);
+    mAppName = new HbLabel(applicationName(parameters));
+    mAppDetailsLayout->addItem(mAppName);
+
+    // Application size
+    Q_ASSERT(mAppSize == 0);
+    updateAppSize(parameters);
+
+    // Other application details
+    if (parameters.contains(KSifUiApplicationDetails)) {
+        addDetails(parameters.value(KSifUiApplicationDetails).toStringList());
+    }
+    iconAndAppLayout->addItem(mAppDetailsLayout);
+    mMainLayout->addItem(iconAndAppLayout);
+
+    // Memory selection, progress bar, and error text within a stacked widget
+    Q_ASSERT(mStackedWidget == 0);
+    mStackedWidget = new HbStackedWidget;
+
+    Q_ASSERT(mMemorySelection == 0);
+    mMemorySelection = new HbComboBox;
+    connect(mMemorySelection, SIGNAL(currentIndexChanged(const QString &)),
+            this, SIGNAL(memorySelectionChanged(const QString &)));
+    mStackedWidget->addWidget(mMemorySelection);
+
+    Q_ASSERT(mProgressBar == 0);
+    mProgressBar = new HbProgressBar;
+    mProgressBar->setRange(0,0);    // busy indicator by default
+    mStackedWidget->addWidget(mProgressBar);
+
+    Q_ASSERT(mErrorText == 0);
+    mErrorText = new HbLabel;
+    mStackedWidget->addWidget(mErrorText);
+
+    mMainLayout->addItem(mStackedWidget);
+    updateMemorySelection(parameters);
+    updateProgressBar(parameters);
+    updateErrorText(parameters);
+
+    setLayout(mMainLayout);
+    }
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::updateFromParameters()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::updateFromParameters(const QVariantMap &parameters)
+{
+    // Application icon
+    updateAppIcon(parameters);
+
+    // Application name and version
+    if (parameters.contains(KSifUiApplicationName)) {
+        QString appNameStr = applicationName(parameters);
+        if (mAppName) {
+            if (mAppName->plainText() != appNameStr) {
+                mAppName->setPlainText(appNameStr);
+            }
+        } else {
+            HbLabel *appName = new HbLabel(appNameStr);
+            mAppDetailsLayout->insertItem(KAppNameIndex, appName);
+            mAppName = appName;
+        }
+    }
+
+    // Application size
+    updateAppSize(parameters);
+
+    // Other application details
+    if (parameters.contains(KSifUiApplicationDetails)) {
+        removeDetails();
+        addDetails(parameters.value(KSifUiApplicationDetails).toStringList());
+    }
+
+    // Stacked widgets: memory selection, progress bar and error text
+    updateMemorySelection(parameters);
+    updateProgressBar(parameters);
+    updateErrorText(parameters);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::changeType()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::changeType(SifUiDeviceDialogType type)
+{
+    switch (type) {
+        case SifUiConfirmationQuery:
+            mStackedWidget->setCurrentWidget(mMemorySelection);
+            break;
+        case SifUiProgressNote:
+            mStackedWidget->setCurrentWidget(mProgressBar);
+            break;
+        case SifUiCompleteNote:
+            // TODO: remove mStackedWidget?
+            break;
+        case SifUiErrorNote:
+            mStackedWidget->setCurrentWidget(mErrorText);
+            break;
+        default:
+            break;
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::applicationName()
+// ----------------------------------------------------------------------------
+//
+QString SifUiDialogContentWidget::applicationName() const
+{
+    if (mAppName) {
+        return mAppName->plainText();
+    }
+    return QString();
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::isDefaultIconUsed()
+// ----------------------------------------------------------------------------
+//
+bool SifUiDialogContentWidget::isDefaultIconUsed() const
+{
+    return (mBitmap != 0 && mMask != 0);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::iconHandles()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::iconHandles(int &iconHandle, int &maskHandle) const
+{
+    if (mBitmap && mMask) {
+        iconHandle = mBitmap->Handle();
+        maskHandle = mMask->Handle();
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::progressInfo()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::progressInfo(int &finalValue, int &currentValue) const
+{
+    if (mProgressBar) {
+        finalValue = mProgressBar->maximum();
+        currentValue = mProgressBar->progressValue();
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::applicationName()
+// ----------------------------------------------------------------------------
+//
+QString SifUiDialogContentWidget::applicationName(const QVariantMap &parameters)
+{
+    QString appName = "";
+    if (parameters.contains(KSifUiApplicationName)) {
+        QString nameParam = parameters.value(KSifUiApplicationName).toString();
+        if (parameters.contains(KSifUiApplicationVersion)) {
+            QString versionParam = parameters.value(KSifUiApplicationVersion).toString();
+            //: Template for application name and version in SW install confirmation query.
+            //: %1 is the application name and %2 is the version number.
+            //: Version number consist of major, minor, and build numbers.
+            //: For example: "Chess (v 1.01(123))".
+            // TODO: enable when translations ready
+            //appName = hbTrId("txt_sisxui_install_appname_version").arg(nameParam, versionParam);
+            appName = tr("%1 (v %2)").arg(nameParam, versionParam);
+        } else {
+            appName = nameParam;
+        }
+    }
+    return appName;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::applicationSize()
+// ----------------------------------------------------------------------------
+//
+QString SifUiDialogContentWidget::applicationSize(const QVariantMap &parameters)
+{
+    QString appSize = "";
+    if (parameters.contains(KSifUiApplicationSize)) {
+        uint size = parameters.value(KSifUiApplicationSize).toUInt();
+        if (size > 0) {
+            if (size > KMega) {
+                //: Application size in SW install confirmation query, %1 is in megabytes
+                // TODO: enable when translations ready
+                //appSize = hbTrId("txt_sisxui_install_appsize_mb").arg(size/KMega);
+                appSize = tr("Size: %1 MB").arg(size/KMega);
+            } else if(size > KKilo) {
+                //: Application size in SW install confirmation query, %1 is in kilobytes
+                // TODO: enable when translations ready
+                //appSize = hbTrId("txt_sisxui_install_appsize_kb").arg(size/KKilo);
+                appSize = tr("Size: %1 kB").arg(size/KKilo);
+            } else {
+                //: Application size in SW install confirmation query, %1 is in bytes
+                // TODO: enable when translations ready
+                //appSize = hbTrId("txt_sisxui_install_appsize_b").arg(size);
+                appSize = tr("Size: %1 B").arg(size);
+            }
+        }
+    }
+    return appSize;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::removeDetails()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::removeDetails()
+{
+    int firstDetailsItemIndex = ( mAppName ? 1 : 0 ) + ( mAppSize ? 1 : 0 );
+    QGraphicsLayoutItem *item = 0;
+    for (int i = 0; i < mAppDetailsLayout->count(); ++i) {
+        if (i >= firstDetailsItemIndex) {
+            item = mAppDetailsLayout->itemAt(i);
+            mAppDetailsLayout->removeAt(i);
+            delete item;
+            item = 0;
+        }
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::addDetails()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::addDetails(const QStringList &detailList)
+{
+    QStringListIterator detailsIter(detailList);
+    while (detailsIter.hasNext())
+        {
+        addDetail(detailsIter.next());
+        }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::addDetail()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::addDetail(const QString &detailText)
+{
+    Q_ASSERT(mAppDetailsLayout != 0);
+    HbLabel *detailItem = new HbLabel(detailText);
+    mAppDetailsLayout->addItem(detailItem);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::updateAppIcon()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::updateAppIcon(const QVariantMap &parameters)
+{
+    Q_ASSERT(mAppIcon != 0);
+    if (parameters.contains(KSifUiApplicationIconHandle) &&
+        parameters.contains(KSifUiApplicationIconMaskHandle)) {
+        int iconHandle = parameters.value(KSifUiApplicationIconHandle).toInt();
+        int maskHandle = parameters.value(KSifUiApplicationIconMaskHandle).toInt();
+        QPixmap pixmap;
+        delete mBitmap;
+        mBitmap = fbsBitmap(iconHandle);
+        delete mMask;
+        mMask = fbsBitmap(maskHandle);
+        if (mBitmap && mMask) {
+            pixmap = QPixmap::fromSymbianCFbsBitmap(mBitmap);
+            pixmap.setAlphaChannel(QPixmap::fromSymbianCFbsBitmap(mMask));
+        }
+        mAppIcon->setIcon(HbIcon(pixmap));
+    } else {
+        if (mAppIcon->icon().isNull()) {
+            mAppIcon->setIcon(HbIcon(KSifUiDialogIconAppDefault));
+        }
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::updateAppSize()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::updateAppSize(const QVariantMap &parameters)
+{
+    if (parameters.contains(KSifUiApplicationSize)) {
+        QString appSizeStr = applicationSize(parameters);
+        if (appSizeStr.length() > 0) {
+            if (mAppSize) {
+                if (mAppSize->plainText() != appSizeStr) {
+                    mAppSize->setPlainText(appSizeStr);
+                }
+            } else {
+                HbLabel *appSize = new HbLabel(appSizeStr);
+                mAppDetailsLayout->insertItem(KAppSizeIndex, appSize);
+                mAppSize = appSize;
+            }
+        }
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::updateMemorySelection()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::updateMemorySelection(const QVariantMap &parameters)
+{
+    if (parameters.contains(KSifUiMemorySelection)) {
+
+        // TODO: get user visible drives, icons for them, and free sizes
+        // it might be better to get this list from Symbian-side via SifUi API
+        QStringList driveList;
+        QFileInfoList driveInfoList = QDir::drives();
+        foreach(const QFileInfo &driveInfo, driveInfoList) {
+            const QChar driveName = driveInfo.absolutePath()[0];
+            switch (driveName.toAscii()) {
+                case 'C':
+                    driveList << "C: Phone memory";
+                    break;
+                case 'E':
+                    driveList << "E: Mass memory";
+                    break;
+                case 'F':
+                    driveList << "F: Memory card";
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        mMemorySelection->setItems(driveList);
+        mStackedWidget->setCurrentWidget(mMemorySelection);
+
+        // TODO: set selected item, read the default from cenrep
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::updateProgressBar()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::updateProgressBar(const QVariantMap &parameters)
+{
+    bool progressBarChanged = false;
+    if (parameters.contains(KSifUiProgressNoteFinalValue)) {
+        mProgressBar->setMaximum(parameters.value(KSifUiProgressNoteFinalValue).toInt());
+        progressBarChanged = true;
+    }
+    if (parameters.contains(KSifUiProgressNoteValue)) {
+        int newValue = mProgressBar->progressValue();
+        newValue += parameters.value(KSifUiProgressNoteValue).toInt();
+        mProgressBar->setProgressValue(newValue);
+        progressBarChanged = true;
+    }
+    if (progressBarChanged) {
+        mStackedWidget->setCurrentWidget(mProgressBar);
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogContentWidget::updateErrorText()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogContentWidget::updateErrorText(const QVariantMap &parameters)
+{
+    if (parameters.contains(KSifUiErrorCode)) {
+        // TODO: proper error texts
+        QString errorText = tr("Error %1").arg(parameters.value(KSifUiErrorCode).toInt());
+        mErrorText->setPlainText(errorText);
+        mStackedWidget->setCurrentWidget(mErrorText);
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogtitlewidget.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,213 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: SIF UI dialog title widget.
+*
+*/
+
+#include "sifuidialogtitlewidget.h"
+#include "sifuidialog.h"                    // dialogType, dialogMode
+#include <QGraphicsLinearLayout>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+
+// See definitions in sifuidevicedialogplugin.qrc
+const char KSifUiDialogIconCertificates[] = ":/cert_indi_icon.svg";
+
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::SifUiDialogTitleWidget()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogTitleWidget::SifUiDialogTitleWidget(QGraphicsItem *parent,
+        Qt::WindowFlags flags): HbWidget(parent, flags),
+        mLayout(0), mTitle(0), mCertButton(0)
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::~SifUiDialogTitleWidget()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogTitleWidget::~SifUiDialogTitleWidget()
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::constructFromParameters()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::constructFromParameters(const QVariantMap &parameters)
+{
+    mLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+
+    Q_ASSERT(mTitle == 0);
+    HbLabel *titleLabel = 0;
+    if (parameters.contains(KSifUiDialogTitle)) {
+        QString titleText = parameters.value(KSifUiDialogTitle).toString();
+        titleLabel = new HbLabel(titleText);
+    } else {
+        SifUiDeviceDialogType type = SifUiDialog::dialogType(parameters);
+        SifUiDeviceDialogMode mode = SifUiDialog::dialogMode(parameters);
+        titleLabel = new HbLabel(defaultTitle(type, mode));
+    }
+    titleLabel->setFontSpec(HbFontSpec(HbFontSpec::Title));
+    mLayout->addItem(titleLabel);
+    mTitle = titleLabel;
+
+    createCertButton();
+
+    setLayout(mLayout);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::updateFromParameters()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::updateFromParameters(const QVariantMap &parameters)
+{
+    Q_ASSERT(mTitle != 0);
+
+    QString titleText;
+    if (parameters.contains(KSifUiDialogTitle)) {
+        titleText = parameters.value(KSifUiDialogTitle).toString();
+    } else {
+        SifUiDeviceDialogType type = SifUiDialog::dialogType(parameters);
+        SifUiDeviceDialogMode mode = SifUiDialog::dialogMode(parameters);
+        titleText = defaultTitle(type, mode);
+    }
+    if (titleText != mTitle->plainText()) {
+        mTitle->setPlainText(titleText);
+    }
+
+    if (parameters.contains(KSifUiCertificates)) {
+        createCertButton();
+    } else {
+        removeCertButton();
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::defaultTitle()
+// ----------------------------------------------------------------------------
+//
+QString SifUiDialogTitleWidget::defaultTitle(SifUiDeviceDialogType type,
+    SifUiDeviceDialogMode mode)
+{
+    QString title;
+    switch (mode) {
+        case SifUiInstalling:
+            switch (type) {
+                case SifUiConfirmationQuery:
+                    //: Install confirmation query title. Installation starts if
+                    //: the user accepts the query.
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_install_conf_head");
+                    title = tr("Install?");
+                    break;
+                case SifUiProgressNote:
+                    //: Progress note title. Installation is going on and progress
+                    //: bar shows how it proceeds.
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_installing_progress_head");
+                    title = tr("Installing");
+                    break;
+                case SifUiCompleteNote:
+                    //: Installation complete note title. Indicates that installation
+                    //: was succesfully completed. User has option to launch AppLib
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_install_complete_head");
+                    title = tr("Installed");
+                    break;
+                case SifUiErrorNote:
+                    //: Installation failed note title. Indicates that installation failed.
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_install_failed_head");
+                    title = tr("Install failed");
+                    break;
+                case SifUiUnspecifiedDialog:
+                default:
+                    break;
+            }
+            break;
+        case SifUiUninstalling:
+            switch (type) {
+                case SifUiConfirmationQuery:
+                    //: Uninstall confirmation query title. Asks permission to
+                    //: remove selected application/other content.
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_uninstall_conf_head");
+                    title = tr("Remove?");
+                    break;
+                case SifUiProgressNote:
+                    //: Progress note title. Uninstallation is going on and progress
+                    //: bar shows how it proceeds.
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_uninstalling_progress_head");
+                    title = tr("Removing");
+                    break;
+                case SifUiCompleteNote:
+                    //: Uninstallation complete note title. Indicates that application
+                    //: was succesfully removed.
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_uninstall_complete_head");
+                    title = tr("Removed");
+                    break;
+                case SifUiErrorNote:
+                    //: Uninstallation failed note title. Indicates that uninstallation failed.
+                    // TODO: enable when translations ready
+                    //title = hbTrId("txt_sisxui_uninstall_failed_head");
+                    title = tr("Uninstall failed");
+                    break;
+                case SifUiUnspecifiedDialog:
+                default:
+                    break;
+            }
+            break;
+        case SifUiUnspecified:
+        default:
+            break;
+    }
+    return title;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::createCertButton()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::createCertButton()
+{
+    if (!mCertButton) {
+        HbPushButton *certButton = new HbPushButton;
+        certButton->setIcon(HbIcon(KSifUiDialogIconCertificates));
+        connect(certButton,SIGNAL(clicked()),this,SIGNAL(certificatesClicked()));
+        mLayout->addStretch();
+        mLayout->addItem(certButton);
+        mLayout->setAlignment(certButton, Qt::AlignRight|Qt::AlignVCenter);
+        mCertButton = certButton;
+    }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::removeCertButton()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::removeCertButton()
+{
+    if (mCertButton && mLayout) {
+        mLayout->removeItem(mCertButton);
+        delete mCertButton;
+        mCertButton = 0;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/tsrc.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description: Test components for SIF UI device dialog plugin.
+#
+
+TEMPLATE = subdirs
+SUBDIRS += ut_sifuidevicedialog
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/ut_sifuidevicedialog/ut_sifuidevicedialog.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Unit test implementation for SIF UI device dialog.
+*
+*/
+
+#include "ut_sifuidevicedialog.h"
+#include <sifuidialog.h>
+
+
+// ---------------------------------------------------------------------------
+// TestSifUiDeviceDialog::initTestCase()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiDeviceDialog::initTestCase()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// TestSifUiDeviceDialog::init()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiDeviceDialog::init()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// TestSifUiDeviceDialog::cleanup()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiDeviceDialog::cleanup()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// TestSifUiDeviceDialog::cleanupTestCase()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiDeviceDialog::cleanupTestCase()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// TestSifUiDeviceDialog::showInfoNote()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiDeviceDialog::showInfoNote()
+    {
+    QVariantMap params;
+    SifUiDialog dlg(params);
+    bool isConstructOk = dlg.constructDialog(params);
+    QVERIFY(isConstructOk);
+    }
+
+// ---------------------------------------------------------------------------
+// main()
+// ---------------------------------------------------------------------------
+//
+QTEST_MAIN(TestSifUiDeviceDialog)
+#include "moc_ut_sifuidevicedialog.cpp"
+
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/ut_sifuidevicedialog/ut_sifuidevicedialog.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Unit test definitions for SIF UI device dialog.
+*
+*/
+
+#ifndef UT_SIFUIDEVICEDIALOG_H
+#define UT_SIFUIDEVICEDIALOG_H
+
+#include <QtTest/QtTest>
+
+class TestSifUiDeviceDialog : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    // Called first before first test case
+    void initTestCase();
+    // Called before each test case
+    void init();
+    // Called after every test case
+    void cleanup();
+    // Called after the last test case
+    void cleanupTestCase();
+
+    // Test cases
+    void showInfoNote();
+
+private:
+    
+
+};
+
+
+#endif  //  UT_SIFUIDEVICEDIALOG_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/tsrc/ut_sifuidevicedialog/ut_sifuidevicedialog.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Unit test project for SIF UI device dialog.
+#
+
+CONFIG += qtestlib hb
+TEMPLATE = app
+TARGET = ut_sifuidevicedialog
+DEPENDPATH += .
+INCLUDEPATH += . ../../inc
+
+HEADERS += ut_sifuidevicedialog.h
+SOURCES += ut_sifuidevicedialog.cpp
+
+symbian: {
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = CAP_APPLICATION
+    TARGET.UID3 = 0xE7DB7B81
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/inc/sifuiinstallindicator.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Software install progress indicator
+*
+*/
+
+#ifndef SIFUIINSTALLINDICATOR_H
+#define SIFUIINSTALLINDICATOR_H
+
+#include <hbindicatorinterface.h>
+#include <qmobilityglobal.h>            // QTM namespace macros
+
+QTM_BEGIN_NAMESPACE
+class QValueSpacePublisher;
+QTM_END_NAMESPACE
+
+
+/**
+ * Software install progress indicator for the status indicator area
+ * and/or in universal indicator popup.
+ */
+class SifUiInstallIndicator : public HbIndicatorInterface
+{
+    Q_OBJECT
+
+public:     // constructor and destructor
+    SifUiInstallIndicator(const QString &indicatorType);
+    virtual ~SifUiInstallIndicator();
+
+public:     // from HbIndicatorInterface
+    virtual bool handleInteraction(InteractionType type);
+    virtual QVariant indicatorData(int role) const;
+
+protected:  // from HbIndicatorInterface
+    bool handleClientRequest(RequestType type, const QVariant &parameter);
+
+private:    // new functions
+    void processParameters(const QVariant &parameter);
+    void publishActivityStatus(bool status);
+
+private:    // data
+    QString mAppName;
+    QTM_PREPEND_NAMESPACE(QValueSpacePublisher) *mPublisher;
+};
+
+#endif  // SIFUIINSTALLINDICATOR_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/inc/sifuiinstallindicatorparams.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Definitions for software install progress indicator
+*
+*/
+
+#ifndef SIFUIINSTALLINDICATORPARAMS_H
+#define SIFUIINSTALLINDICATORPARAMS_H
+
+// Install indicator plugin type string
+const QString KSifUiIndicatorPlugin = "com.nokia.sifui.indi/1.0";
+
+// Variant map keys for install indicator
+const QString KSifUiIndicatorApplicationName = "app";       // string
+const QString KSifUiIndicatorAppIconHandle = "icon";        // integer, bitmap handle
+const QString KSifUiIndicatorAppIconMaskHandle = "mask";    // integer, bitmap handle
+const QString KSifUiIndicatorProgressValue = "pval";        // integer
+const QString KSifUiIndicatorProgressFinal = "pfin";        // integer
+
+// Path and value name for QValueSpacePublisher/QValueSpaceSubscriber.
+const QString KSifUiIndicatorPath = "/sifui";
+const QString KSifUiIndicatorActive = "indicator_active";
+
+#endif // SIFUIINSTALLINDICATORPARAMS_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/inc/sifuiinstallindicatorplugin.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Software install progress indicator
+*
+*/
+
+#ifndef SIFUIINSTALLINDICATORPLUGIN_H
+#define SIFUIINSTALLINDICATORPLUGIN_H
+
+#include <QObject>
+#include <hbindicatorplugininterface.h>
+
+
+/**
+ * Software install progress indicator plugin for the status indicator area
+ * and/or in universal indicator popup.
+ */
+class SifUiInstallIndicatorPlugin : public QObject, public HbIndicatorPluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(HbIndicatorPluginInterface)
+
+public:     // constructor and destructor
+     SifUiInstallIndicatorPlugin();
+    ~SifUiInstallIndicatorPlugin();
+
+public:     // from HbIndicatorPluginInterface
+    QStringList indicatorTypes() const;
+    bool accessAllowed(const QString &indicatorType, const QVariantMap &securityInfo) const;
+    HbIndicatorInterface* createIndicator(const QString &indicatorType);
+    int error() const;
+
+private:    // new functions
+    Q_DISABLE_COPY(SifUiInstallIndicatorPlugin)
+
+private:    // data
+    int mError;
+};
+
+#endif  // SIFUIINSTALLINDICATORPLUGIN_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/rom/sifuiinstallindicatorplugin.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Software install progress indicator
+*
+*/
+
+#ifndef SIFUIINSTALLINDICATORPLUGIN_IBY
+#define SIFUIINSTALLINDICATORPLUGIN_IBY
+
+REM DLL
+file=ABI_DIR\UREL\sifuiinstallindicatorplugin.dll SHARED_LIB_DIR\sifuiinstallindicatorplugin.dll UNPAGED
+data=\epoc32\data\z\resource\plugins\indicators\sifuiinstallindicatorplugin.qtplugin \resource\plugins\indicators\sifuiinstallindicatorplugin.qtplugin
+data=\epoc32\winscw\c\resource\qt\crml\sifuiinstallindicatorplugin.qcrml \resource\qt\crml\sifuiinstallindicatorplugin.qcrml \resource\qt\crml\sifuiinstallindicatorplugin.qcrml
+
+#endif  // SIFUIINSTALLINDICATORPLUGIN_IBY
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/sifuiinstallindicatorplugin.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,52 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  Software install progress indicator
+#
+
+TEMPLATE = lib
+TARGET = sifuiinstallindicatorplugin
+CONFIG += plugin
+CONFIG += hb
+
+INCLUDEPATH += .
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+DEPENDPATH += .
+
+LIBS += -lQtPublishSubscribe
+
+HEADERS += inc/sifuiinstallindicatorplugin.h \
+    inc/sifuiinstallindicator.h \
+    inc/sifuiinstallindicatorparams.h
+
+SOURCES += src/sifuiinstallindicatorplugin.cpp \
+    src/sifuiinstallindicator.cpp
+
+symbian {
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    TARGET.UID3 = 0x2002E690
+
+    pluginstub.sources = sifuiinstallindicatorplugin.dll
+    pluginstub.path = /resource/plugins/indicators
+    DEPLOYMENT += pluginstub
+
+	crmlFiles.sources = sifuiinstallindicatorplugin.qcrml
+	crmlFiles.path = /resource/qt/crml
+	DEPLOYMENT += crmlFiles
+}
+
+BLD_INF_RULES.prj_exports += \
+    "$${LITERAL_HASH}include <platform_paths.hrh>" \
+    "rom/sifuiinstallindicatorplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(sifuiinstallindicatorplugin.iby)"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/sifuiinstallindicatorplugin.qcrml	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<repository target="RProperty" uidValue="0x2002E690">
+<key ref="/sifui/indicator_active" int="0x00000001"/>
+</repository>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/src/sifuiinstallindicator.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,135 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Software install progress indicator
+*
+*/
+
+#include "sifuiinstallindicator.h"
+#include "sifuiinstallindicatorparams.h"
+#include <QVariant>
+#include <qvaluespacepublisher.h>
+
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicator::SifUiInstallIndicator()
+// ---------------------------------------------------------------------------
+//
+SifUiInstallIndicator::SifUiInstallIndicator(const QString &indicatorType) :
+    HbIndicatorInterface(indicatorType, HbIndicatorInterface::GroupPriorityHigh,
+            InteractionActivated), mAppName(), mPublisher(0)
+{
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicator::~SifUiInstallIndicator()
+// ---------------------------------------------------------------------------
+//
+SifUiInstallIndicator::~SifUiInstallIndicator()
+{
+    delete mPublisher;
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicator::handleInteraction()
+// ---------------------------------------------------------------------------
+//
+bool SifUiInstallIndicator::handleInteraction(InteractionType type)
+{
+    bool handled = false;
+
+    if (type == InteractionActivated) {
+        emit deactivate();
+        handled = true;
+    }
+
+    return handled;
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicator::indicatorData()
+// ---------------------------------------------------------------------------
+//
+QVariant SifUiInstallIndicator::indicatorData(int role) const
+{
+    QVariant data;
+
+    switch(role) {
+        case IconNameRole:
+        case DecorationNameRole:
+            // TODO: use proper icon when available
+            data = QString("note_info.svg");
+            break;
+        case PrimaryTextRole:
+            //: Primary text for application installation progress displayed in
+            //: universal indicator menu. Secondary text is the application name.
+            // TODO: use localised UI string when available
+            data = tr("Installing...");
+            break;
+        case SecondaryTextRole:
+            data = mAppName;
+        default:
+            break;
+    }
+
+    return data;
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicator::prepareDisplayName()
+// ---------------------------------------------------------------------------
+//
+bool SifUiInstallIndicator::handleClientRequest(RequestType type, const QVariant &parameter)
+{
+    bool indicatorDisplayed = false;
+
+    switch (type) {
+        case RequestActivate:
+            processParameters(parameter);
+            indicatorDisplayed = true;
+            emit dataChanged();
+            break;
+        case RequestDeactivate:
+            break;
+        default:
+            break;
+    }
+
+    publishActivityStatus(indicatorDisplayed);
+    return indicatorDisplayed;
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicator::processParameters()
+// ---------------------------------------------------------------------------
+//
+void SifUiInstallIndicator::processParameters(const QVariant &parameter)
+{
+    if (parameter.isValid() && (parameter.type() == QVariant::Map)) {
+        QVariantMap map = parameter.toMap();
+        mAppName = map.value(KSifUiIndicatorApplicationName).toString();
+    }
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicator::publishActivityStatus()
+// ---------------------------------------------------------------------------
+//
+void SifUiInstallIndicator::publishActivityStatus(bool status)
+{
+    if (!mPublisher) {
+        mPublisher = new QTM_PREPEND_NAMESPACE(QValueSpacePublisher(KSifUiIndicatorPath));
+    }
+    mPublisher->setValue(KSifUiIndicatorActive, QVariant(status));
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/src/sifuiinstallindicatorplugin.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Software install progress indicator
+*
+*/
+
+#include "sifuiinstallindicatorplugin.h"
+#include "sifuiinstallindicator.h"
+#include "sifuiinstallindicatorparams.h"
+
+Q_EXPORT_PLUGIN(SifUiInstallIndicatorPlugin)
+
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicatorPlugin::SifUiInstallIndicatorPlugin
+// ---------------------------------------------------------------------------
+//
+SifUiInstallIndicatorPlugin::SifUiInstallIndicatorPlugin() : mError(0)
+{
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicatorPlugin::~SifUiInstallIndicatorPlugin
+// ---------------------------------------------------------------------------
+//
+SifUiInstallIndicatorPlugin::~SifUiInstallIndicatorPlugin()
+{
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicatorPlugin::indicatorTypes
+// ---------------------------------------------------------------------------
+//
+QStringList SifUiInstallIndicatorPlugin::indicatorTypes() const
+{
+    QStringList types;
+    types << KSifUiIndicatorPlugin;
+    return types;
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicatorPlugin::accessAllowed
+// ---------------------------------------------------------------------------
+//
+bool SifUiInstallIndicatorPlugin::accessAllowed(const QString &indicatorType,
+    const QVariantMap &securityInfo) const
+{
+    Q_UNUSED(indicatorType)
+    Q_UNUSED(securityInfo)
+
+    return true;    // All clients are allowed to use.
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicatorPlugin::createIndicator
+// ---------------------------------------------------------------------------
+//
+HbIndicatorInterface* SifUiInstallIndicatorPlugin::createIndicator(
+        const QString &indicatorType)
+{
+    HbIndicatorInterface *indicator = new SifUiInstallIndicator(indicatorType);
+    return indicator;
+}
+
+// ---------------------------------------------------------------------------
+// SifUiInstallIndicatorPlugin::error
+// ---------------------------------------------------------------------------
+//
+int SifUiInstallIndicatorPlugin::error() const
+{
+    return mError;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_compile_tests.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,26 @@
+@echo off
+rem
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:  Module tests for SW install progress indicator.
+rem
+
+echo ----------------------------------------------------------------------
+echo.
+echo Compiling module tests
+echo.
+echo ----------------------------------------------------------------------
+echo.
+call qmake
+call make debug-winscw
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_instrument_code.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,32 @@
+@echo off
+rem
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:  Module tests for SW install progress indicator.
+rem
+
+echo ----------------------------------------------------------------------
+echo.
+echo Instrumenting code (winscw udeb, function coverage)
+echo.
+echo ----------------------------------------------------------------------
+echo.
+pushd ..\..
+if exist MON.sym del MON.sym
+if exist MON.dat del MON.dat
+call qmake
+call bldmake bldfiles
+call abld reallyclean winscw udeb
+call ctcwrap -i f -C "EXCLUDE+moc_*.cpp" -C "EXCLUDE+*.UID.CPP" -C "SKIP_FUNCTION_NAME+qt_plugin_query_verification_data" -C "SKIP_FUNCTION_NAME+qt_plugin_instance" abld build winscw udeb
+popd
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_remove_instrumentation.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,30 @@
+@echo off
+rem
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:  Module tests for SW install progress indicator.
+rem
+
+echo ----------------------------------------------------------------------
+echo.
+echo Removing instrumentation
+echo.
+echo ----------------------------------------------------------------------
+echo.
+pushd ..\..
+call qmake
+call make distclean
+call qmake
+call make
+popd
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/ctc_run_tests.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,42 @@
+@echo off
+rem
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:  Module tests for SW install progress indicator.
+rem
+
+echo ----------------------------------------------------------------------
+echo.
+echo Running module tests
+echo.
+echo ----------------------------------------------------------------------
+echo.
+call make run
+
+echo.
+echo.
+echo ----------------------------------------------------------------------
+echo.
+echo Processing test results
+echo.
+echo ----------------------------------------------------------------------
+echo.
+find "[QTestLib]" %TEMP%\epocwind.out > mt_results.txt
+start mt_results.txt
+type mt_results.txt
+echo.
+pushd ..\..
+call ctcpost MON.sym MON.dat -p profile.txt
+call ctc2html -i profile.txt
+popd
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/mt_sifuiinstallindicator.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Module tests for SW install progress indicator.
+*
+*/
+
+#include "mt_sifuiinstallindicator.h"
+#include "sifuiinstallindicatorparams.h"
+#include <hbindicator.h>
+#include <QTest>
+
+
+// ---------------------------------------------------------------------------
+// TestSifUiInstallIndicator::activateWithoutParams()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiInstallIndicator::activateWithoutParams()
+{
+    HbIndicator *indicator = new HbIndicator();
+    QVERIFY(indicator != 0);
+    QVERIFY(indicator->error() == 0);
+    QVERIFY(indicator->activate(KSifUiIndicatorPlugin));
+    QTest::qWait(3000);
+    QVERIFY(indicator->deactivate(KSifUiIndicatorPlugin));
+    delete indicator;
+}
+
+// ---------------------------------------------------------------------------
+// TestSifUiInstallIndicator::activateWithAppName()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiInstallIndicator::activateWithAppName()
+{
+    HbIndicator *indicator = new HbIndicator();
+    QVERIFY(indicator != 0);
+    QVERIFY(indicator->error() == 0);
+
+    QVariantMap map;
+    map.insert(KSifUiIndicatorApplicationName, QString("Application name"));
+    QVariant params(map);
+    QVERIFY(indicator->activate(KSifUiIndicatorPlugin, params));
+    QTest::qWait(3000);
+    QVERIFY(indicator->deactivate(KSifUiIndicatorPlugin));
+    delete indicator;
+}
+
+// ---------------------------------------------------------------------------
+// TestSifUiInstallIndicator::activateWithInvalidParam()
+// ---------------------------------------------------------------------------
+//
+void TestSifUiInstallIndicator::activateWithInvalidParam()
+{
+    HbIndicator *indicator = new HbIndicator();
+    QVERIFY(indicator != 0);
+    QVERIFY(indicator->error() == 0);
+
+    QVariant params(QByteArray("test"));
+    QVERIFY(indicator->activate(KSifUiIndicatorPlugin, params));
+    QTest::qWait(3000);
+    QVERIFY(indicator->deactivate(KSifUiIndicatorPlugin));
+    delete indicator;
+}
+
+// ---------------------------------------------------------------------------
+// Main QTestLib definitions
+// ---------------------------------------------------------------------------
+//
+QTEST_MAIN(TestSifUiInstallIndicator)
+#include "moc_mt_sifuiinstallindicator.cpp"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/mt_sifuiinstallindicator.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Module tests for SW install progress indicator.
+*
+*/
+
+
+#ifndef MT_SIFUIINSTALLINDICATOR_H
+#define MT_SIFUIINSTALLINDICATOR_H
+
+
+#include <QtTest/QtTest>
+
+class TestSifUiInstallIndicator: public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void activateWithoutParams();
+    void activateWithAppName();
+    void activateWithInvalidParam();
+};
+
+
+#endif  // MT_SIFUIINSTALLINDICATOR_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/mt_sifuiinstallindicator/mt_sifuiinstallindicator.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description:  Module tests for SW install progress indicator.
+#
+
+TEMPLATE = app
+TARGET =
+CONFIG += qtestlib hb
+DEPENDPATH += .
+INCLUDEPATH += . ../../inc
+
+HEADERS += mt_sifuiinstallindicator.h
+SOURCES += mt_sifuiinstallindicator.cpp
+
+symbian {
+    TARGET.CAPABILITY = CAP_APPLICATION
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/run_module_tests.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,23 @@
+@echo off
+rem
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:  Module tests for SW install progress indicator.
+rem
+
+pushd mt_sifuiinstallindicator
+call ctc_instrument_code.bat
+call ctc_compile_tests.bat
+call ctc_run_tests.bat
+call ctc_remove_instrumentation.bat
+popd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindiapp.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test applicaiton for SW install indicator plugin
+*
+*/
+
+#include "testindiapp.h"
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <QGraphicsLinearLayout>
+#include <hbtextitem.h>
+#include <hbcheckbox.h>
+#include <hbpushbutton.h>
+#include <hbindicator.h>
+
+const QString KInstallIndicator = "com.nokia.sifui.indi/1.0";
+
+TestInstallIndicator::TestInstallIndicator(int& argc, char* argv[]) : HbApplication(argc, argv),
+    mMainWindow(0), mMainView(0), mIndicator(0)
+{
+    mMainWindow = new HbMainWindow();
+    mMainView = new HbView();
+    mMainView->setTitle(tr("TestInstIndi"));
+
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    HbTextItem *infoText = new HbTextItem;
+    infoText->setText("Enable/disable SW install progress indicator in status indicator area and/or in universal indicator popup.");
+    infoText->setTextWrapping(Hb::TextWordWrap);
+    layout->addItem(infoText);
+
+    HbCheckBox *enableCheckBox = new HbCheckBox;
+    enableCheckBox->setText("Activate install indicator");
+    connect(enableCheckBox, SIGNAL(stateChanged(int)), this, SLOT(activateStateChanged(int)));
+    layout->addItem(enableCheckBox);
+
+    HbPushButton *closeButton = new HbPushButton("Close");
+    connect(closeButton, SIGNAL(clicked()), qApp, SLOT(quit()));
+    layout->addItem(closeButton);
+
+    mMainView->setLayout(layout);
+    mMainWindow->addView(mMainView);
+    mMainWindow->show();
+}
+
+TestInstallIndicator::~TestInstallIndicator()
+{
+    delete mIndicator;
+    delete mMainView;
+    delete mMainWindow;
+}
+
+void TestInstallIndicator::activateStateChanged(int state)
+{
+    if (!mIndicator) {
+        mIndicator = new HbIndicator;
+    }
+
+    Qt::CheckState s = static_cast<Qt::CheckState>(state);
+    if (s == Qt::Checked) {
+        mIndicator->activate(KInstallIndicator);
+    } else {
+        mIndicator->deactivate(KInstallIndicator);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindiapp.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test applicaiton for SW install indicator plugin
+*
+*/
+
+#ifndef TESTINDICAPPLICATION_H
+#define TESTINDICAPPLICATION_H
+
+#include <hbapplication.h>
+
+class HbMainWindow;
+class HbView;
+class HbIndicator;
+
+
+class TestInstallIndicator : public HbApplication
+{
+    Q_OBJECT
+
+public:     // constructor and destructor
+    TestInstallIndicator(int& argc, char* argv[]);
+    ~TestInstallIndicator();
+
+private slots:  // new functions
+    void activateStateChanged(int state);
+
+private:    // data
+    HbMainWindow *mMainWindow;
+    HbView       *mMainView;
+    HbIndicator  *mIndicator;
+};
+
+#endif  // TESTINDICAPPLICATION_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindiapp.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description:  Test applicaiton for SW install indicator plugin
+#
+
+TEMPLATE = app
+TARGET = testindiapp
+CONFIG += hb
+DEPENDPATH += .
+INCLUDEPATH += .
+
+HEADERS += testindiapp.h
+SOURCES += testindimain.cpp testindiapp.cpp
+
+symbian {
+    TARGET.CAPABILITY = CAP_APPLICATION
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/testindiapp/testindimain.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test applicaiton for SW install indicator plugin
+*
+*/
+
+#include "testindiapp.h"
+
+int main(int argc, char *argv[])
+{
+    TestInstallIndicator app(argc, argv);
+    return app.exec();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuiinstallindicatorplugin/tsrc/tsrc.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description:  Module tests for SW install progress indicator.
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS += mt_sifuiinstallindicator/mt_sifuiinstallindicator.pro \
+    testindiapp/testindiapp.pro
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/data/20022FC1.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ECOM resource definition for Sisx SIF plugin.
+*
+*/
+
+#include <ecom/registryinfov2.rh>
+#include <SWInstUid.h>
+
+
+RESOURCE REGISTRY_INFO registry_info
+    {
+    resource_format_version = RESOURCE_FORMAT_VERSION_2;
+    dll_uid = 0x20022FC1;
+
+    interfaces =
+        {
+         INTERFACE_INFO
+             {
+             interface_uid = 0x10285BC2;
+             implementations =
+                 {
+                 IMPLEMENTATION_INFO
+                     {
+                     implementation_uid  =  0x20022EE3;
+                     version_no          =  1;
+                     display_name        =  "Sisx SIF plugin";
+                     default_data        =  "";
+                     opaque_data         =  "";
+                     }
+                 };
+              }
+        };
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/data/sisxsifuidata.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Resource definitions for SISX SIF plugin.
+*
+*/
+
+#include <uikon.rh>                 // RSS_SIGNATURE
+#include <e32lang.h>                // TLanguage enum
+#include <languages.hrh>            // S60 added language codes
+#include "sisxsiflangname.rh"       // LANG_NAME
+#include <sisxsifui.loc>            // Localised UI strings
+
+
+// ---------------------------------------------------------------------------
+// Resource headers
+// ---------------------------------------------------------------------------
+//
+NAME SXUI
+RESOURCE RSS_SIGNATURE { }
+
+
+// ---------------------------------------------------------------------------
+// Language names array
+// ---------------------------------------------------------------------------
+//
+RESOURCE ARRAY r_sisxui_languages_array
+    {
+    items =
+        {
+		LANG_NAME { id = ELangTest; txt = qtn_swins_lqi_unknow; },
+		LANG_NAME { id = ELangEnglish; txt = qtn_swins_lqi_uk; },
+		LANG_NAME { id = ELangFrench; txt = qtn_swins_lqi_french; },
+		LANG_NAME { id = ELangGerman; txt = qtn_swins_lqi_german; },
+		LANG_NAME { id = ELangSpanish; txt = qtn_swins_lqi_span; },
+		LANG_NAME { id = ELangItalian; txt = qtn_swins_lqi_ital; },
+		LANG_NAME { id = ELangSwedish; txt = qtn_swins_lqi_swedish; },
+		LANG_NAME { id = ELangDanish; txt = qtn_swins_lqi_danish; },
+		LANG_NAME { id = ELangNorwegian; txt = qtn_swins_lqi_norweg; },
+		LANG_NAME { id = ELangFinnish; txt = qtn_swins_lqi_finnish; },
+		LANG_NAME { id = ELangAmerican; txt = qtn_swins_lqi_us; },
+		LANG_NAME { id = ELangSwissFrench; txt = qtn_swins_lqi_swissfre; },
+		LANG_NAME { id = ELangSwissGerman; txt = qtn_swins_lqi_swissger; },
+		LANG_NAME { id = ELangPortuguese; txt = qtn_swins_lqi_portug; },
+		LANG_NAME { id = ELangTurkish; txt = qtn_swins_lqi_turk; },
+		LANG_NAME { id = ELangIcelandic; txt = qtn_swins_lqi_ice; },
+		LANG_NAME { id = ELangRussian; txt = qtn_swins_lqi_russ; },
+		LANG_NAME { id = ELangHungarian; txt = qtn_swins_lqi_hung; },
+		LANG_NAME { id = ELangDutch; txt = qtn_swins_lqi_dutch; },
+		LANG_NAME { id = ELangBelgianFlemish; txt = qtn_swins_lqi_belgdutch; },
+		LANG_NAME { id = ELangAustralian; txt = qtn_swins_lqi_austeng; },
+		LANG_NAME { id = ELangBelgianFrench; txt = qtn_swins_lqi_belgfrench; },
+		LANG_NAME { id = ELangAustrian; txt = qtn_swins_lqi_austrger; },
+		LANG_NAME { id = ELangNewZealand; txt = qtn_swins_lqi_nzeng; },
+		LANG_NAME { id = ELangInternationalFrench; txt = qtn_swins_lqi_intfrench; },
+		LANG_NAME { id = ELangCzech; txt = qtn_swins_lqi_czech; },
+		LANG_NAME { id = ELangSlovak; txt = qtn_swins_lqi_slovak; },
+		LANG_NAME { id = ELangPolish; txt = qtn_swins_lqi_polish; },
+		LANG_NAME { id = ELangSlovenian; txt = qtn_swins_lqi_sloven; },
+		LANG_NAME { id = ELangTaiwanChinese; txt = qtn_swins_lqi_taiwchin; },
+		LANG_NAME { id = ELangHongKongChinese; txt = qtn_swins_lqi_hkchin; },
+		LANG_NAME { id = ELangPrcChinese; txt = qtn_swins_lqi_prcchin; },
+		LANG_NAME { id = ELangJapanese; txt = qtn_swins_lqi_japan; },
+		LANG_NAME { id = ELangThai; txt = qtn_swins_lqi_thai; },
+		LANG_NAME { id = ELangAfrikaans; txt = qtn_swins_lqi_afrik; },
+		LANG_NAME { id = ELangAlbanian; txt = qtn_swins_lqi_alb; },
+		LANG_NAME { id = ELangAmharic; txt = qtn_swins_lqi_amhar; },
+		LANG_NAME { id = ELangArabic; txt = qtn_swins_lqi_arabic; },
+		LANG_NAME { id = ELangArmenian; txt = qtn_swins_lqi_armenian; },
+		LANG_NAME { id = ELangTagalog; txt = qtn_swins_lqi_taga; },
+		LANG_NAME { id = ELangBelarussian; txt = qtn_swins_lqi_belarus; },
+		LANG_NAME { id = ELangBengali; txt = qtn_swins_lqi_beng; },
+		LANG_NAME { id = ELangBulgarian; txt = qtn_swins_lqi_bulg; },
+		LANG_NAME { id = ELangBurmese; txt = qtn_swins_lqi_burm; },
+		LANG_NAME { id = ELangCatalan; txt = qtn_swins_lqi_catalan; },
+		LANG_NAME { id = ELangCroatian; txt = qtn_swins_lqi_croat; },
+		LANG_NAME { id = ELangCanadianEnglish; txt = qtn_swins_lqi_caneng; },
+		LANG_NAME { id = ELangInternationalEnglish; txt = qtn_swins_lqi_inteng; },
+		LANG_NAME { id = ELangSouthAfricanEnglish; txt = qtn_swins_lqi_saeng; },
+		LANG_NAME { id = ELangEstonian; txt = qtn_swins_lqi_estonia; },
+		LANG_NAME { id = ELangFarsi; txt = qtn_swins_lqi_farsi; },
+		LANG_NAME { id = ELangCanadianFrench; txt = qtn_swins_lqi_canfrench; },
+		LANG_NAME { id = ELangScotsGaelic; txt = qtn_swins_lqi_scotgael; },
+		LANG_NAME { id = ELangGeorgian; txt = qtn_swins_lqi_georg; },
+		LANG_NAME { id = ELangGreek; txt = qtn_swins_lqi_greek; },
+		LANG_NAME { id = ELangCyprusGreek; txt = qtn_swins_lqi_cygreek; },
+		LANG_NAME { id = ELangGujarati; txt = qtn_swins_lqi_gujarat; },
+		LANG_NAME { id = ELangHebrew; txt = qtn_swins_lqi_hebr; },
+		LANG_NAME { id = ELangHindi; txt = qtn_swins_lqi_hindi; },
+		LANG_NAME { id = ELangIndonesian; txt = qtn_swins_lqi_indon; },
+		LANG_NAME { id = ELangIrish; txt = qtn_swins_lqi_irish; },
+		LANG_NAME { id = ELangSwissItalian; txt = qtn_swins_lqi_swissital; },
+		LANG_NAME { id = ELangKannada; txt = qtn_swins_lqi_kannada; },
+		LANG_NAME { id = ELangKazakh; txt = qtn_swins_lqi_kazakh; },
+		LANG_NAME { id = ELangKhmer; txt = qtn_swins_lqi_khmer; },
+		LANG_NAME { id = ELangKorean; txt = qtn_swins_lqi_korean; },
+		LANG_NAME { id = ELangLao; txt = qtn_swins_lqi_lao; },
+		LANG_NAME { id = ELangLatvian; txt = qtn_swins_lqi_latv; },
+		LANG_NAME { id = ELangLithuanian; txt = qtn_swins_lqi_lith; },
+		LANG_NAME { id = ELangMacedonian; txt = qtn_swins_lqi_maced; },
+		LANG_NAME { id = ELangMalay; txt = qtn_swins_lqi_malay; },
+		LANG_NAME { id = ELangMalayalam; txt = qtn_swins_lqi_malyalam; },
+		LANG_NAME { id = ELangMarathi; txt = qtn_swins_lqi_marath; },
+		LANG_NAME { id = ELangMoldavian; txt = qtn_swins_lqi_molda; },
+		LANG_NAME { id = ELangMongolian; txt = qtn_swins_lqi_mong; },
+		LANG_NAME { id = ELangNorwegianNynorsk; txt = qtn_swins_lqi_nornynorsk; },
+		LANG_NAME { id = ELangBrazilianPortuguese; txt = qtn_swins_lqi_brazport; },
+		LANG_NAME { id = ELangPunjabi; txt = qtn_swins_lqi_punj; },
+		LANG_NAME { id = ELangRomanian; txt = qtn_swins_lqi_roman; },
+		LANG_NAME { id = ELangSerbian; txt = qtn_swins_lqi_serb; },
+		LANG_NAME { id = ELangSinhalese; txt = qtn_swins_lqi_sinhal; },
+		LANG_NAME { id = ELangSomali; txt = qtn_swins_lqi_somal; },
+		LANG_NAME { id = ELangInternationalSpanish; txt = qtn_swins_lqi_intspan; },
+		LANG_NAME { id = ELangLatinAmericanSpanish; txt = qtn_swins_lqi_latspan; },
+		LANG_NAME { id = ELangSwahili; txt = qtn_swins_lqi_swahil; },
+		LANG_NAME { id = ELangFinlandSwedish; txt = qtn_swins_lqi_finswe; },
+		LANG_NAME { id = ELangReserved1; txt = qtn_swins_lqi_tajik; },
+		LANG_NAME { id = ELangTamil; txt = qtn_swins_lqi_tamil; },
+		LANG_NAME { id = ELangTelugu; txt = qtn_swins_lqi_telugu; },
+		LANG_NAME { id = ELangTibetan; txt = qtn_swins_lqi_tibet; },
+		LANG_NAME { id = ELangTigrinya; txt = qtn_swins_lqi_tigrin; },
+		LANG_NAME { id = ELangCyprusTurkish; txt = qtn_swins_lqi_cyturk; },
+		LANG_NAME { id = ELangTurkmen; txt = qtn_swins_lqi_turkmen; },
+		LANG_NAME { id = ELangUkrainian; txt = qtn_swins_lqi_ukran; },
+		LANG_NAME { id = ELangUrdu; txt = qtn_swins_lqi_urdu; },
+		LANG_NAME { id = ELangReserved2; txt = qtn_swins_lqi_uzbek; },
+		LANG_NAME { id = ELangVietnamese; txt = qtn_swins_lqi_viet; },
+		LANG_NAME { id = ELangWelsh; txt = qtn_swins_lqi_welsh; },
+		LANG_NAME { id = ELangZulu; txt = qtn_swins_lqi_zulu; },
+		LANG_NAME { id = ELangBasque; txt = qtn_swins_lqi_basque; },
+		LANG_NAME { id = ELangGalician; txt = qtn_swins_lqi_galic; },
+		LANG_NAME { id = ELangEnglish_Apac; txt = qtn_swins_lqi_apaceng; },
+		LANG_NAME { id = ELangEnglish_Taiwan; txt = qtn_swins_lqi_tweng; },
+		LANG_NAME { id = ELangEnglish_HongKong; txt = qtn_swins_lqi_hkeng; },
+		LANG_NAME { id = ELangEnglish_Prc; txt = qtn_swins_lqi_prceng; },
+		LANG_NAME { id = ELangEnglish_Japan; txt = qtn_swins_lqi_jpneng; },
+		LANG_NAME { id = ELangEnglish_Thailand; txt = qtn_swins_lqi_thaieng; },
+		LANG_NAME { id = ELangMalay_Apac; txt = qtn_swins_lqi_apacmalay; },
+
+		// Additional S60 language codes (not defined in TLanguage enum)
+		LANG_NAME { id = KLangApacIndonesian; txt = qtn_swins_lqi_apacind; },
+
+		// Old language IDs (used in S60 3.2 products):
+		LANG_NAME { id = 401; txt = qtn_swins_lqi_basque; },
+		LANG_NAME { id = 402; txt = qtn_swins_lqi_galic; }
+		};
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Build information file for SISX SIF Plugin
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../loc/sisxsifui.loc    MW_LAYER_LOC_EXPORT_PATH( sisxsifui.loc )
+
+PRJ_MMPFILES
+sisxsifplugin.mmp
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Native SISX SIF (Software Install Framework) plugin.
+*
+*/
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+TARGET          sisxsifplugin.dll
+TARGETTYPE      PLUGIN
+UID             0x10009D8D 0x20022FC1
+
+CAPABILITY      CAP_ECOM_PLUGIN DRM
+VENDORID        VID_DEFAULT
+
+START RESOURCE  ../data/20022FC1.rss
+TARGET          sisxsifplugin.rsc
+END
+
+START RESOURCE  ../data/sisxsifuidata.rss
+HEADER
+TARGET          sisxsifuidata.rsc
+TARGETPATH      RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END
+
+SOURCEPATH      ../src
+SOURCE          sisxsifpluginmain.cpp
+SOURCE          sisxsifplugin.cpp
+SOURCE          sisxsifpluginactiveimpl.cpp
+SOURCE          sisxsifpluginuihandler.cpp
+SOURCE          sisxsifuilangname.cpp
+SOURCE          sisxsifuiselectioncache.cpp
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../../../installationservices/swi/inc
+USERINCLUDE     ../../../../installationservices/swi/inc/swi
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib				// User
+LIBRARY         ecom.lib				// ECom
+LIBRARY         sif.lib                 // USIF
+LIBRARY         scrclient.lib           // SCR
+LIBRARY         sifui.lib               // CSifUi
+LIBRARY         sisregistryclient.lib   // Swi::RSisRegistrySession
+LIBRARY         sishelper.lib           // Swi::CAsyncLauncher
+LIBRARY         bafl.lib                // TResourceReader
+LIBRARY         efsrv.lib				// TDriveUnit
+LIBRARY         featmgr.lib				// FeatureManager
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifcleanuputils.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Defines CleanupResetAndDestroyPushL
+*
+*/
+
+
+#ifndef SISXUICLEANUPUTILS_H
+#define SISXUICLEANUPUTILS_H
+
+template <class T>
+class CleanupResetAndDestroy
+    {
+public:
+    inline static void PushL( T& aRef );
+private:
+    static void ResetAndDestroy( TAny *aPtr );
+    };
+
+template <class T>
+inline void CleanupResetAndDestroyPushL( T& aRef );
+
+template <class T>
+inline void CleanupResetAndDestroy<T>::PushL( T& aRef )
+    {
+    CleanupStack::PushL( TCleanupItem( &ResetAndDestroy, &aRef ) );
+    }
+
+template <class T>
+void CleanupResetAndDestroy<T>::ResetAndDestroy( TAny *aPtr )
+    {
+    if( aPtr )
+        {
+        static_cast<T*>( aPtr )->ResetAndDestroy();
+        }
+    }
+
+template <class T>
+inline void CleanupResetAndDestroyPushL( T& aRef )
+    {
+    CleanupResetAndDestroy<T>::PushL( aRef );
+    }
+
+#endif // SISXUICLEANUPUTILS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsiflangname.rh	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   LANG_NAME resource header for SISX SIF plugin
+*
+*/
+
+
+#ifndef SISXSIFLANGNAME_RH
+#define SISXSIFLANGNAME_RH
+
+STRUCT LANG_NAME
+    {
+    WORD id = 0;
+    LTEXT txt;
+    }
+
+#endif // SISXSIFLANGNAME_RH
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugin.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Header file of the CSisxSifPlugin class. CSisxSifPlugin
+*               implements ECom SIF::CSifPlugin interface for native
+*               SISX installation.
+*
+*/
+
+#ifndef C_SISXSIFPLUGIN_H
+#define C_SISXSIFPLUGIN_H
+
+#include <usif/sif/sifplugin.h>     // CSifPlugin
+
+namespace Usif
+{
+    class CSisxSifPluginActiveImpl;
+
+
+    /**
+     *  SISX SIF plugin
+     *  Universal Software Install Framework (USIF) plugin for native SISX
+     *  installation. CSisxSifPlugin is an ECom plugin that provides native
+     *  SISX install/uninstall functionality for USIF.
+     */
+    class CSisxSifPlugin : public CSifPlugin
+        {
+    public:     // constructors and destructor
+        static CSisxSifPlugin* NewL();
+        ~CSisxSifPlugin();
+
+    public:     // from CSifPlugin
+        void GetComponentInfo( const TDesC& aFileName, const TSecurityContext& aSecurityContext,
+                CComponentInfo& aComponentInfo, TRequestStatus& aStatus );
+        void GetComponentInfo( RFile& aFileHandle, const TSecurityContext& aSecurityContext,
+                CComponentInfo& aComponentInfo, TRequestStatus& aStatus );
+        void Install( const TDesC& aFileName, const TSecurityContext& aSecurityContext,
+                const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults,
+                TRequestStatus& aStatus );
+        void Install( RFile& aFileHandle, const TSecurityContext& aSecurityContext,
+                const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults,
+                TRequestStatus& aStatus );
+        void Uninstall( TComponentId aComponentId, const TSecurityContext& aSecurityContext,
+                const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults,
+                TRequestStatus& aStatus );
+        void Activate( TComponentId aComponentId, const TSecurityContext& aSecurityContext,
+                TRequestStatus& aStatus );
+        void Deactivate( TComponentId aComponentId, const TSecurityContext& aSecurityContext,
+                TRequestStatus& aStatus );
+        void CancelOperation();
+
+    private:    // new functions
+        CSisxSifPlugin();
+        void ConstructL();
+
+    private:    // data
+        CSisxSifPluginActiveImpl* iImpl;
+        };
+}
+
+#endif      // C_SISXSIFPLUGIN_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugin.pan	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  SISX SIF plugin panic codes
+*
+*/
+
+
+#ifndef SISXSIFPLUGIN_PAN
+#define SISXSIFPLUGIN_PAN
+
+#include <e32std.h>     // User
+
+/**
+ * Native SISX SIF (Software Install Framework) plugin panic codes
+ */
+enum TSisxSifPanicCode
+    {
+    ESisxSifInternalError = 1,
+    ESisxSifNotInitialized,
+    ESisxSifNullPointer
+    };
+
+inline void Panic( TSisxSifPanicCode aReason )
+    {
+    _LIT( category, "SisxSif" );
+    User::Panic( category, aReason );
+    }
+
+#endif // SISXSIFPLUGIN_PAN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginactiveimpl.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  CSisxSifPluginActiveImpl implements active object that
+*               handles installation operations requested via
+*               CSisxSifPlugin interface.
+*
+*/
+
+#ifndef C_SISXSIFPLUGINIMPL_H
+#define C_SISXSIFPLUGINIMPL_H
+
+#include <e32base.h>                    // CActive
+#include <swi/msisuihandlers.h>         // MUiHandler
+#include <usif/sif/sifcommon.h>         // TSecurityContext, COpaqueNamedParams
+#include <f32file.h>                    // RFs, RFile
+#include <barsc.h>                      // RResourceFile
+
+namespace Swi
+{
+    class CAsyncLauncher;
+    class CInstallPrefs;
+}
+
+namespace Usif
+{
+    class CSisxSifPluginUiHandler;
+
+    /**
+     *  SISX SIF plugin active implementation
+     *  Universal Software Install Framework (USIF) plugin for native SISX
+     *  installation. CSisxSifPluginActiveImpl is active object that takes
+     *  care of SISX installation operations.
+     */
+    class CSisxSifPluginActiveImpl : public CActive
+        {
+    public:     // constructors and destructor
+        static CSisxSifPluginActiveImpl* NewL();
+        ~CSisxSifPluginActiveImpl();
+
+    public:     // from CActive
+        void DoCancel();
+        void RunL();
+        TInt RunError( TInt aError );
+
+    public:     // new functions
+        void GetComponentInfo( const TDesC& aFileName, const TSecurityContext& aSecurityContext,
+                CComponentInfo& aComponentInfo, TRequestStatus& aStatus );
+        void GetComponentInfo( RFile& aFileHandle, const TSecurityContext& aSecurityContext,
+                CComponentInfo& aComponentInfo, TRequestStatus& aStatus );
+        void Install( const TDesC& aFileName, const TSecurityContext& aSecurityContext,
+                const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults,
+                TRequestStatus& aStatus );
+        void Install( RFile& aFileHandle, const TSecurityContext& aSecurityContext,
+                const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults,
+                TRequestStatus& aStatus );
+        void Uninstall( TComponentId aComponentId, const TSecurityContext& aSecurityContext,
+                const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults,
+                TRequestStatus& aStatus );
+        void Activate( TComponentId aComponentId, const TSecurityContext& aSecurityContext,
+                TRequestStatus& aStatus );
+        void Deactivate( TComponentId aComponentId, const TSecurityContext& aSecurityContext,
+                TRequestStatus& aStatus );
+
+    private:    // new functions
+        CSisxSifPluginActiveImpl();
+        void ConstructL();
+        void CompleteRequest( TRequestStatus& aStatus, TInt aResult );
+        void CommonRequestPreamble( const TSecurityContext& aSecurityContext,
+                const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams,
+                TRequestStatus& aStatus );
+        void DoInstallL( const TDesC& aFileName );
+        void DoUninstallL( TComponentId aComponentId, TRequestStatus& aStatus );
+        void DoActivateL( TComponentId aComponentId );
+        void DoDeactivateL( TComponentId aComponentId );
+        TInt ConvertToSifErrorCode( TInt aSwiErrorCode );
+        TComponentId GetLastInstalledComponentIdL();
+        TBool NeedUserCapabilityL();
+        void ProcessSilentInstallL();
+        void SetSilentInstallFileL( const TDesC& aFileName );
+        void SetSilentInstallFile( RFile& aFileHandle );
+        static TInt GrantCapabilitiesHelpCallback( TAny* aPtr );
+
+    private:    // data
+        RFs iFs;
+        Swi::CAsyncLauncher* iAsyncLauncher;
+        CSisxSifPluginUiHandler* iUiHandler;
+        Swi::CInstallPrefs* iInstallPrefs;
+        TRequestStatus* iClientStatus;
+        const COpaqueNamedParams* iInputParams;
+        COpaqueNamedParams* iOutputParams;
+        CComponentInfo* iComponentInfo;
+        HBufC* iFileName;
+        RFile* iFileHandle;         // not owned
+        TBool iSilentInstall;       // ETrue when silent install has been requested
+        TBool iInstallRequest;      // ETrue when install requestes has been made
+        };
+
+}   // namespace Usif
+
+#endif      // C_SISXSIFPLUGINIMPL_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  MUiHandler for SISX SIF plugin.
+*
+*/
+
+#ifndef C_SISXSIFPLUGUIHANDLER_H
+#define C_SISXSIFPLUGUIHANDLER_H
+
+#include <e32base.h>                    // CBase
+#include <swi/msisuihandlers.h>         // MUiHandler
+#include <f32file.h>                    // RFs
+#include <barsc.h>                      // RResourceFile
+#include <sifui.h>                      // CSifUi::TMode
+
+class CSifUi;
+class CSisxSifUiSelectionCache;
+
+
+namespace Usif
+{
+    /**
+     *  SISX SIF plugin UI handler
+     *  Universal Software Install Framework (USIF) plugin for native SISX
+     *  installation. CSisxSifPluginActiveImpl is active object that takes
+     *  care of SISX installation operations.
+     */
+    class CSisxSifPluginUiHandler : public CBase, public Swi::MUiHandler
+        {
+    public:     // constructors and destructor
+        static CSisxSifPluginUiHandler* NewL( RFs& aFs );
+        ~CSisxSifPluginUiHandler();
+
+    public:     // from MUiHandler
+        // from MCommonDialogs
+        TBool DisplayTextL( const Swi::CAppInfo& aAppInfo, Swi::TFileTextOption aOption,
+                const TDesC& aText );
+        void DisplayErrorL( const Swi::CAppInfo& aAppInfo, Swi::TErrorDialog aType,
+                const TDesC& aParam );
+        TBool DisplayDependencyBreakL( const Swi::CAppInfo& aAppInfo,
+                const RPointerArray<TDesC>& aComponents );
+        TBool DisplayApplicationsInUseL( const Swi::CAppInfo& aAppInfo,
+                const RPointerArray<TDesC>& aAppNames );
+        TBool DisplayQuestionL( const Swi::CAppInfo& aAppInfo, Swi::TQuestionDialog aQuestion,
+                const TDesC& aDes );
+
+        // from MInstallerUiHandler
+        TBool DisplayInstallL( const Swi::CAppInfo& aAppInfo, const CApaMaskedBitmap* aLogo,
+                const RPointerArray<Swi::CCertificateInfo>& aCertificates );
+        TBool DisplayGrantCapabilitiesL( const Swi::CAppInfo& aAppInfo,
+                const TCapabilitySet& aCapabilitySet );
+        TInt DisplayLanguageL( const Swi::CAppInfo& aAppInfo,
+                const RArray<TLanguage>& aLanguages );
+        TInt DisplayDriveL( const Swi::CAppInfo& aAppInfo, TInt64 aSize,
+                const RArray<TChar>& aDriveLetters, const RArray<TInt64>& aDriveSpaces );
+        TBool DisplayUpgradeL( const Swi::CAppInfo& aAppInfo,
+                const Swi::CAppInfo& aExistingAppInfo );
+        TBool DisplayOptionsL( const Swi::CAppInfo& aAppInfo,
+                const RPointerArray<TDesC>& aOptions, RArray<TBool>& aSelections );
+        TBool HandleInstallEventL( const Swi::CAppInfo& aAppInfo, Swi::TInstallEvent aEvent,
+                TInt aValue, const TDesC& aDes );
+        void HandleCancellableInstallEventL( const Swi::CAppInfo& aAppInfo,
+                Swi::TInstallCancellableEvent aEvent, Swi::MCancelHandler& aCancelHandler,
+                TInt aValue, const TDesC& aDes );
+        TBool DisplaySecurityWarningL( const Swi::CAppInfo& aAppInfo,
+                Swi::TSignatureValidationResult aSigValidationResult,
+                RPointerArray<CPKIXValidationResultBase>& aPkixResults,
+                RPointerArray<Swi::CCertificateInfo>& aCertificates, TBool aInstallAnyway );
+        TBool DisplayOcspResultL( const Swi::CAppInfo& aAppInfo,
+                Swi::TRevocationDialogMessage aMessage,
+                RPointerArray<TOCSPOutcome>& aOutcomes,
+                RPointerArray<Swi::CCertificateInfo>& aCertificates, TBool aWarningOnly );
+        void DisplayCannotOverwriteFileL( const Swi::CAppInfo& aAppInfo,
+                const Swi::CAppInfo& aInstalledAppInfo, const TDesC& aFileName );
+        TBool DisplayMissingDependencyL( const Swi::CAppInfo& aAppInfo,
+                const TDesC& aDependencyName, TVersion aWantedVersionFrom,
+                TVersion aWantedVersionTo, TVersion aInstalledVersion );
+
+        // from MUninstallerUiHandler
+        TBool DisplayUninstallL( const Swi::CAppInfo& aAppInfo );
+
+    public:     // new functions
+        void DisplayCompleteL();
+        void DisplayFailedL( TInt aErrorCode );
+
+    private:    // new functions
+        CSisxSifPluginUiHandler( RFs& aFs );
+        void ConstructL();
+        void OpenResourceFileL();
+        HBufC* ReadStringResourceL( TInt aResourceId );
+        void CloseResourceFile();
+
+    private:    // data
+        RFs& iFs;
+        RResourceFile iResourceFile;
+        CSisxSifUiSelectionCache* iSelectionCache;
+        CSifUi* iSifUi;
+        CApaMaskedBitmap* iLogo;
+        TBool iQuestionIncompatibleDisplayed;
+        };
+
+}   // namespace Usif
+
+#endif      // C_SISXSIFPLUGUIHANDLER_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifuilangname.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Defines class for language id amd name pairs
+*
+*/
+
+
+#ifndef SISXUILANGNAME_H
+#define SISXUILANGNAME_H
+
+#include <e32base.h>        // CBase
+
+class TResourceReader;
+
+
+class CLangName : public CBase
+    {
+public:     // constructors and destructor
+    static CLangName* NewL( TResourceReader& aReader );
+    ~CLangName();
+    
+public:     // new functions
+    TLanguage Id() const;
+    TPtrC Name() const;
+
+private:    // new functions
+    CLangName();
+    void ConstructFromResourceL( TResourceReader& aReader );
+
+private:    // data
+    TLanguage iId;
+    HBufC* iName;
+    };
+
+#endif // SISXUILANGNAME_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifuiselectioncache.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   CSisxSifUiSelectionCache saves user selections during
+*                installation. Cached selections can be re-used, to avoid
+*                displaying the same dialogs again.
+*/
+
+#ifndef C_SISXSIFUISELECTIONCACHE_H
+#define C_SISXSIFUISELECTIONCACHE_H
+
+#include <e32base.h>
+#include <f32file.h>
+
+
+/**
+ * Saves user selections during installation. Installer may re-use
+ * cached selections in order to avoid displaying the same prompts
+ * several times.
+ */
+class CSisxSifUiSelectionCache : public CBase
+    {
+    public:     // constructor and destructor
+        static CSisxSifUiSelectionCache* NewL();
+        ~CSisxSifUiSelectionCache();
+
+    public:     // new functions
+        /**
+         * Returns ETrue if language selection is currently cached, and
+         * EFalse otherwise. Language selection can be cached by using
+         * SetLanguage() method.
+         * @return TBool -- ETrue if language is cached
+         */
+        TBool LanguageCached() const;
+        
+        /**
+         * Returns the language code saved earlier with SetLanguage() method.
+         * If no language has been set, then returns language code 0 (ELangTest).
+         * @return TLanguage -- the cached language, or ELangTest
+         */
+        TLanguage Language() const;
+        
+        /**
+        * Caches the given language code.
+        * @param aLanguage - language to be cached
+        */
+        void SetLanguage( const TLanguage& aLanguage );
+
+        /**
+        * Returns ETrue if drive selection is currently cacehed, and EFalse
+        * otherwise. Drive selection can be cached by using SetDrive() method.
+        * @return TBool -- ETrue if drive is cached
+        */
+        TBool DriveCached() const;
+        
+        /**
+        * Returns the drive saved earlier with SetDrive() method.
+        * @return TDriveUnit -- the cached drive
+        */
+        TDriveUnit Drive() const;
+        
+        /**
+        * Caches the given drive.
+        * @param aLanguage -- drive to be cached
+        */
+        void SetDrive( TDriveUnit aDrive );
+
+        /**
+        * Returns ETrue if all options in aOptions array are cached, and EFalse
+        * otherwise. Options can be cached using SetOptions() method.
+        * @param aOptions -- array of options names
+        * @return TBool -- ETrue if all aOptions are cached
+        */
+        TBool OptionsCached( const RPointerArray<TDesC>& aOptions ) const;
+
+        /**
+        * Returns the options saved earlier with SetOptions() method.
+        * @param aSelections -- the cached option selections
+        */
+        void Options( RArray<TBool>& aSelections );
+        
+        /**
+        * Caches the given options.
+        * @param aOptions -- array of options names
+        * @param aSelections -- array of option selections
+        */
+        void SetOptionsL( const RPointerArray<TDesC>& aOptions, const RArray<TBool>& aSelections );    
+        
+    private:    // new functions
+        CSisxSifUiSelectionCache();
+        void ConstructL();
+
+    private:    // data
+        TBool iLanguageCached;
+        TLanguage iLanguage;
+        TDriveUnit iDrive;        
+        RPointerArray<HBufC> iOptions;        
+        RArray<TBool> iSelections;       
+    };
+
+
+#endif      // C_SISXSIFUISELECTIONCACHE_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/loc/sisxsifui.loc	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,682 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Localised strings for SISX installer (SISX SIF plugin)
+*
+*/
+
+//--------------------------------------------------------
+// LANGUAGES
+//--------------------------------------------------------
+
+// d: Heading of the language list query
+// d: Indicates that list is meant to be shown the possible language alternatives.
+// l: qtl_dialog_pri_heading
+// r: 3.0
+#define qtn_swins_lqh_lang_sel "Select language:"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language code was not known for the installer.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_unknow "Unknown language"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is UK English.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_uk "UK English"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is French.
+// l: qtl_list_popup_sec_add
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_french "French"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is German.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_german "German"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Spanish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_span "Spanish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Italian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_ital "Italian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Swedish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_swedish "Swedish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Danish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_danish "Danish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Norwegian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_norweg "Norwegian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Finnish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_finnish "Finnish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is US English.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_us "US English"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is swiss French.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_swissfre "Swiss French"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Swiss German.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_swissger "Swiss German"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Portuguese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_portug "Portuguese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Turkish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_turk "Turkish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Icelandic.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_ice "Icelandic"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Russian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_russ "Russian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Hungarian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_hung "Hungarian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Dutch.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_dutch "Dutch"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Belgian Dutch.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_belgdutch "Belgian Dutch"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Australian English.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_austeng "Australian English"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Belgian French.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_belgfrench "Belgian French"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Austrian German.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_austrger "Austrian German"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is New Zealand English.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_nzeng "New Zealand English"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is International French.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_intfrench "International French"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Czech.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_czech "Czech"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Slovak.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_slovak "Slovak"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Polish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_polish "Polish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Slovenian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_sloven "Slovenian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Taiwan Chinese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_taiwchin "Taiwan Chinese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Honk Kong Chinese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_hkchin "Honk Kong Chinese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Prc Chinese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_prcchin "Prc Chinese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Japanese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_japan "Japanese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Thai.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_thai "Thai"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Afrikaans.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_afrik "Afrikaans"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Albanian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_alb "Albanian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Amharic.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_amhar "Amharic"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Arabic.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_arabic "Arabic"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Armenian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_armenian "Armenian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Belarussian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_belarus "Belarussian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Bengali.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_beng "Bengali"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Bulgarian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_bulg "Bulgarian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Burmese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_burm "Burmese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Catalan.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_catalan "Catalan"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Croatian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_croat "Croatian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Canadian English.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_caneng "Canadian English"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is International English.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_inteng "International English"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is South African English.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_saeng "South African English"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Estonian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_estonia "Estonian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Farsi.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_farsi "Farsi"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Canadian French.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_canfrench "Canadian French"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Scots gaelic.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_scotgael "Scots gaelic"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Georgian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_georg "Georgian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Greek.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_greek "Greek"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Cyprus Greek.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_cygreek "Cyprus Greek"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Gujarati.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_gujarat "Gujarati"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Hebrew.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_hebr "Hebrew"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Hindi.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_hindi "Hindi"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Indonesian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_indon "Indonesian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Irish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_irish "Irish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Swiss Italian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_swissital "Swiss Italian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Kannada.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_kannada "Kannada"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Kazakh.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_kazakh "Kazakh"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Khmer.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_khmer "Khmer"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Korean.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_korean "Korean"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Lao.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_lao "Lao"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Latvian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_latv "Latvian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Lithuanian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_lith "Lithuanian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Macedonian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_maced "Macedonian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Malay.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_malay "Malay"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Malyalam.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_malyalam "Malyalam"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Marathi.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_marath "Marathi"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Moldavian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_molda "Moldavian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Mongolianh.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_mong "Mongolian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Norwegian nynorsk.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_nornynorsk "Norwegian nynorsk"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Brazilian Portuguese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_brazport "Brazilian Portuguese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Punjabi.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_punj "Punjabi"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Romanian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_roman "Romanian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Serbian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_serb "Serbian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Sinhalese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_sinhal "Sinhalese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Somali.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_somal "Somali"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is International Spanish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_intspan "International Spanish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Latin American Spanish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_latspan "Latin American Spanish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Swahili.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_swahil "Swahili"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Finland Swedish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_finswe "Finland Swedish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Tajik.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_tajik "Tajik"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Tamil.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_tamil "Tamil"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Telugu.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_telugu "Telugu"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Tibetan.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_tibet "Tibetan"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Tigrinya.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_tigrin "Tigrinya"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Cyprus Turkish.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_cyturk "Cyprus Turkish"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Turkmen.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_turkmen "Turkmen"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Ukranian.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_ukran "Ukranian"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Urdu.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_urdu "Urdu"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Uzbek.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_uzbek "Uzbek"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Vietnamese.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_viet "Vietnamese"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Welsh.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_welsh "Welsh"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Zulu.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_zulu "Zulu"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Tagalog.
+// l: qtl_list_popup_sec_add
+// r: 3.0
+#define qtn_swins_lqi_taga "Tagalog"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Basque.
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_basque "Basque"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Galician.
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_galic "Galician"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is English (APAC).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_apaceng "English (APAC)"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is English (Taiwan).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_tweng "English (Taiwan)"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is English (Hongkong).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_hkeng "English (Hongkong)"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is English (PrcChina).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_prceng "English (PrcChina)"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is English (Japanese).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_jpneng "English (Japanese)"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is English (Thai).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_thaieng "English (Thai)"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Malay (APAC).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_apacmalay "Malay (APAC)"
+
+// d: One of the items in the language selection list.
+// d: Indicates that the language in question in the selection list is Indonesian (APAC).
+// l: qtl_list_popup_sec_add
+// r: 5.0
+#define qtn_swins_lqi_apacind "Indonesian (APAC)"
+
Binary file appinstaller/AppinstUi/sisxsifplugin/loc/sisxsifui.xls has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugin.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Native SISX SIF (Software Install Framework) plugin.
+*
+*/
+
+#include "sisxsifplugin.h"              // CSisxSifPlugin
+#include "sisxsifpluginactiveimpl.h"    // CSisxSifPluginActiveImpl
+
+using namespace Usif;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::NewL()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPlugin* CSisxSifPlugin::NewL()
+	{
+	CSisxSifPlugin *self = new( ELeave ) CSisxSifPlugin;
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::~CSisxSifPlugin()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPlugin::~CSisxSifPlugin()
+	{
+	delete iImpl;
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::GetComponentInfo()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::GetComponentInfo( const TDesC& aFileName,
+        const TSecurityContext& aSecurityContext,
+        CComponentInfo& aComponentInfo,
+        TRequestStatus& aStatus )
+	{
+	iImpl->GetComponentInfo( aFileName, aSecurityContext, aComponentInfo, aStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::GetComponentInfo()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::GetComponentInfo( RFile& aFileHandle,
+        const TSecurityContext& aSecurityContext,
+        CComponentInfo& aComponentInfo,
+        TRequestStatus& aStatus )
+	{
+	iImpl->GetComponentInfo( aFileHandle, aSecurityContext, aComponentInfo, aStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::Install()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::Install( const TDesC& aFileName,
+        const TSecurityContext& aSecurityContext,
+        const COpaqueNamedParams& aInputParams,
+        COpaqueNamedParams& aOutputParams,
+        TRequestStatus& aStatus )
+	{
+	iImpl->Install( aFileName, aSecurityContext, aInputParams, aOutputParams, aStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::Install()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::Install( RFile& aFileHandle,
+        const TSecurityContext& aSecurityContext,
+        const COpaqueNamedParams& aInputParams,
+        COpaqueNamedParams& aOutputParams,
+        TRequestStatus& aStatus )
+	{
+	iImpl->Install( aFileHandle, aSecurityContext, aInputParams, aOutputParams, aStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::Uninstall()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::Uninstall( TComponentId aComponentId,
+        const TSecurityContext& aSecurityContext,
+        const COpaqueNamedParams& aInputParams,
+        COpaqueNamedParams& aOutputParams,
+        TRequestStatus& aStatus )
+	{
+	iImpl->Uninstall( aComponentId, aSecurityContext, aInputParams, aOutputParams, aStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::Activate()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::Activate( TComponentId aComponentId,
+        const TSecurityContext& aSecurityContext,
+        TRequestStatus& aStatus )
+	{
+	iImpl->Activate( aComponentId, aSecurityContext, aStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::Deactivate()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::Deactivate( TComponentId aComponentId,
+        const TSecurityContext& aSecurityContext,
+        TRequestStatus& aStatus )
+	{
+	iImpl->Deactivate( aComponentId, aSecurityContext, aStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::CancelOperation()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::CancelOperation()
+    {
+    iImpl->Cancel();
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::CSisxSifPlugin()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPlugin::CSisxSifPlugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPlugin::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPlugin::ConstructL()
+    {
+    iImpl = CSisxSifPluginActiveImpl::NewL();
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,734 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Native SISX SIF (Software Install Framework) plugin.
+*
+*/
+
+#include "sisxsifpluginactiveimpl.h"    // CSisxSifPluginActiveImpl
+#include "sisxsifpluginuihandler.h"     // CSisxSifPluginUiHandler
+#include "sisxsifcleanuputils.h"        // CleanupResetAndDestroyPushL
+#include "sisxsifplugin.pan"            // Panic codes
+#include <usif/sif/sifcommon.h>         // Usif::CComponentInfo
+#include <usif/scr/scr.h>               // RSoftwareComponentRegistry
+#include <usif/usiferror.h>             // SIF error codes
+#include <swi/sisinstallerrors.h>       // SWI error codes
+#include <swi/asynclauncher.h>          // Swi::CAsyncLauncher
+#include <swi/sisregistrysession.h>     // RSisRegistrySession
+#include "sisregistrywritablesession.h" // RSisRegistryWritableSession
+#include <e32property.h>                // RProperty
+#include <sacls.h>                      // KUidSwiLatestInstallation
+
+// TODO: replace with proper logging
+#ifdef _DEBUG
+#define FLOG(x)         RDebug::Print(x);
+#define FLOG_1(x,y)     RDebug::Print(x, y);
+#define FLOG_2(x,y,z)   RDebug::Print(x, y, z);
+#else
+#define FLOG(x)
+#define FLOG_1(x,y)
+#define FLOG_2(x,y,z)
+#endif
+
+using namespace Usif;
+
+_LIT( KCompUid, "CompUid" );
+
+const TInt KSystemWideErrorsBoundary = -100;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::NewL()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPluginActiveImpl* CSisxSifPluginActiveImpl::NewL()
+	{
+	FLOG( _L("Constructing CSisxSifPluginActiveImpl") );
+	CSisxSifPluginActiveImpl *self = new( ELeave ) CSisxSifPluginActiveImpl;
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::~CSisxSifPluginActiveImpl()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPluginActiveImpl::~CSisxSifPluginActiveImpl()
+	{
+	FLOG( _L("Destructing CSisxSifPluginActiveImpl") );
+	Cancel();
+    delete iAsyncLauncher;
+    delete iUiHandler;
+    delete iInstallPrefs;
+    delete iComponentInfo;
+    delete iFileName;
+    iFs.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::DoCancel()
+    {
+    if( iClientStatus )
+        {
+        if( iAsyncLauncher )
+            {
+            iAsyncLauncher->CancelOperation();
+            delete iAsyncLauncher;
+            iAsyncLauncher = NULL;
+            }
+
+        User::RequestComplete( iClientStatus, KErrCancel );
+        iClientStatus = NULL;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::RunL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::RunL()
+    {
+    TInt result = iStatus.Int();
+    FLOG_1( _L("CSisxSifPluginActiveImpl::RunL(), result %d"), result );
+
+    if( iSilentInstall )
+        {
+        FLOG( _L("CSisxSifPluginActiveImpl::RunL, silent install") );
+        ProcessSilentInstallL();
+        }
+    else
+        {
+        if( iOutputParams )
+            {
+            iOutputParams->AddIntL( KSifOutParam_ExtendedErrCode, result );
+
+            if( iInstallRequest && result == KErrNone )
+                {
+                TComponentId resultComponentId = 0;
+                TRAPD( getLastIdErr, resultComponentId = GetLastInstalledComponentIdL() );
+                if( getLastIdErr == KErrNone )
+                    {
+                    iOutputParams->AddIntL( KSifOutParam_ComponentId, resultComponentId );
+                    }
+                }
+            }
+
+        TInt errorCode = ConvertToSifErrorCode( result );
+        if( !iSilentInstall )
+            {
+            if( errorCode == KErrNone )
+                {
+                iUiHandler->DisplayCompleteL();
+                }
+            else
+                {
+                if( errorCode != KErrCancel )
+                    {
+                    iUiHandler->DisplayFailedL( errorCode );
+                    }
+                }
+            }
+        User::RequestComplete( iClientStatus, errorCode );
+        iClientStatus = NULL;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CSisxSifPluginActiveImpl::RunError( TInt aError )
+    {
+    if( iClientStatus )
+        {
+        User::RequestComplete( iClientStatus, aError );
+        iClientStatus = NULL;
+        }
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::GetComponentInfo()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::GetComponentInfo(
+        const TDesC& aFileName,
+        const TSecurityContext& /*aSecurityContext*/,
+        CComponentInfo& aComponentInfo,
+        TRequestStatus& aStatus )
+	{
+    aStatus = KRequestPending;
+    iClientStatus = &aStatus;
+
+    TRAPD( err, iAsyncLauncher->GetComponentInfoL( *iUiHandler, aFileName,
+            *iInstallPrefs, aComponentInfo, iStatus ) );
+    FLOG_1( _L("CSisxSifPluginActiveImpl::GetComponentInfo, err = %d"), err );
+    if( err != KErrNone )
+        {
+        CompleteRequest( aStatus, err );
+        return;
+        }
+
+    SetActive();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::GetComponentInfo()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::GetComponentInfo(
+        RFile& aFileHandle,
+        const TSecurityContext& /*aSecurityContext*/,
+        CComponentInfo& aComponentInfo,
+        TRequestStatus& aStatus )
+	{
+    aStatus = KRequestPending;
+    iClientStatus = &aStatus;
+
+    TRAPD( err, iAsyncLauncher->GetComponentInfoL( *iUiHandler, aFileHandle,
+            *iInstallPrefs, aComponentInfo, iStatus ) );
+    FLOG_1( _L("CSisxSifPluginActiveImpl::GetComponentInfo, err = %d"), err );
+    if( err != KErrNone )
+        {
+        CompleteRequest( aStatus, err );
+        return;
+        }
+
+    SetActive();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::Install()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::Install(
+        const TDesC& aFileName,
+        const TSecurityContext& aSecurityContext,
+        const COpaqueNamedParams& aInputParams,
+        COpaqueNamedParams& aOutputParams,
+        TRequestStatus& aStatus )
+	{
+    CommonRequestPreamble( aSecurityContext, aInputParams, aOutputParams, aStatus );
+
+    FLOG_2( _L("CSisxSifPluginActiveImpl::Install: %S, iSilentInstall=%d"),
+            &aFileName, iSilentInstall );
+
+    TRAPD( err, DoInstallL( aFileName ) );
+    FLOG_2( _L("CSisxSifPluginActiveImpl::Install, iInstallRequest=%d, err=%d"),
+            iInstallRequest, err );
+    if( err != KErrNone )
+        {
+        CompleteRequest( aStatus, err );
+        return;
+        }
+
+    SetActive();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::Install()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::Install(
+        RFile& aFileHandle,
+        const TSecurityContext& aSecurityContext,
+        const COpaqueNamedParams& aInputParams,
+        COpaqueNamedParams& aOutputParams,
+        TRequestStatus& aStatus )
+	{
+    CommonRequestPreamble( aSecurityContext, aInputParams, aOutputParams, aStatus );
+
+    FLOG_1( _L("CSisxSifPluginActiveImpl::Install, iSilentInstall=%d"), iSilentInstall );
+
+    TInt err;
+    if( iSilentInstall )
+        {
+        // Silent install does a few addtional checks on the package to see if is
+        // signed and had the required capabilities. So we need to the get the
+        // package component information without installing it. Real silent install
+        // operation is started in RunL() after this GetComponentInfoL() completes.
+        SetSilentInstallFile( aFileHandle );
+        TRAP( err, iAsyncLauncher->GetComponentInfoL( *iUiHandler, aFileHandle, *iInstallPrefs,
+                *iComponentInfo, iStatus ) );
+        }
+    else
+        {
+        // Proceed with the normal installation.
+        TRAP( err, iAsyncLauncher->InstallL( *iUiHandler, aFileHandle, *iInstallPrefs, iStatus ) );
+        iInstallRequest = ETrue;
+        }
+
+    FLOG_2( _L("CSisxSifPluginActiveImpl::Install, iInstallRequest=%d, err=%d"),
+            iInstallRequest, err );
+    if( err != KErrNone )
+        {
+        CompleteRequest( aStatus, err );
+        return;
+        }
+
+    SetActive();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::Uninstall()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::Uninstall(
+        TComponentId aComponentId,
+        const TSecurityContext& aSecurityContext,
+        const COpaqueNamedParams& aInputParams,
+        COpaqueNamedParams& aOutputParams,
+        TRequestStatus& aStatus )
+	{
+    CommonRequestPreamble( aSecurityContext, aInputParams, aOutputParams, aStatus );
+
+    TRAPD( err, DoUninstallL( aComponentId, aStatus ) );
+    FLOG_1( _L("CSisxSifPluginActiveImpl::Uninstall, err=%d"), err );
+    if( err != KErrNone )
+        {
+        CompleteRequest( aStatus, err );
+        return;
+        }
+
+    SetActive();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::Activate()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::Activate(
+        TComponentId aComponentId,
+        const TSecurityContext& /*aSecurityContext*/,
+        TRequestStatus& aStatus )
+	{
+    aStatus = KRequestPending;
+    iClientStatus = &aStatus;
+
+    TRAPD( err, DoActivateL( aComponentId ) );
+    FLOG_2( _L("CSisxSifPluginActiveImpl::Activate, component %d, err=%d"), aComponentId, err );
+    if( err != KErrNone )
+        {
+        CompleteRequest( aStatus, err );
+        return;
+        }
+
+    iStatus = KRequestPending;
+    CompleteRequest( iStatus, KErrNone );
+    SetActive();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::Deactivate()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::Deactivate(
+        TComponentId aComponentId,
+        const TSecurityContext& /*aSecurityContext*/,
+        TRequestStatus& aStatus )
+	{
+    aStatus = KRequestPending;
+    iClientStatus = &aStatus;
+
+    Swi::RSisRegistryWritableSession sisRegSession;
+    TRAPD( err, DoDeactivateL( aComponentId ) );
+    FLOG_2( _L("CSisxSifPluginActiveImpl::Deactivate, component %d, err=%d"), aComponentId, err );
+    if( err != KErrNone )
+        {
+        CompleteRequest( aStatus, err );
+        return;
+        }
+
+    iStatus = KRequestPending;
+    CompleteRequest( iStatus, KErrNone );
+    SetActive();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::CSisxSifPluginActiveImpl()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPluginActiveImpl::CSisxSifPluginActiveImpl() : CActive( CActive::EPriorityStandard )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::ConstructL()
+    {
+    User::LeaveIfError( iFs.Connect() );
+
+    iUiHandler = CSisxSifPluginUiHandler::NewL( iFs );
+    iAsyncLauncher = Swi::CAsyncLauncher::NewL();
+    iInstallPrefs = Swi::CInstallPrefs::NewL();
+    iComponentInfo = CComponentInfo::NewL();
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::Complete()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::CompleteRequest( TRequestStatus& aStatus, TInt aResult )
+    {
+    TRequestStatus* statusPtr = &aStatus;
+    User::RequestComplete( statusPtr, aResult );
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::CommonRequestPreamble()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::CommonRequestPreamble(
+        const TSecurityContext& aSecurityContext,
+        const COpaqueNamedParams& aInputParams,
+        COpaqueNamedParams& aOutputParams,
+        TRequestStatus& aStatus )
+    {
+    aStatus = KRequestPending;
+    iClientStatus = &aStatus;
+
+    iInputParams = &aInputParams;
+    iOutputParams = &aOutputParams;
+
+    // Check InstallSilently opaque input argument
+    TInt silentInstall = 0;
+    TRAP_IGNORE( aInputParams.GetIntByNameL( KSifInParam_InstallSilently, silentInstall ) );
+    if( silentInstall )
+        {
+        iSilentInstall = ETrue;
+        if( !aSecurityContext.HasCapability( ECapabilityTrustedUI ) )
+            {
+            FLOG( _L("CSisxSifPluginActiveImpl: missing ECapabilityTrustedUI ERROR") );
+            CompleteRequest( aStatus, KErrPermissionDenied );
+            iClientStatus = NULL;
+            }
+        }
+
+    // TODO: KSifInParam_InstallInactive
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::DoInstallL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::DoInstallL( const TDesC& aFileName )
+    {
+    if( iSilentInstall )
+        {
+        // Silent install does a few addtional checks on the package to see if is
+        // signed and had the required capabilities. So we need to the get the
+        // package component information without installing it. Real silent install
+        // operation is started in RunL() after this GetComponentInfoL() completes.
+        SetSilentInstallFileL( aFileName );
+        iAsyncLauncher->GetComponentInfoL( *iUiHandler, aFileName, *iInstallPrefs,
+                *iComponentInfo, iStatus );
+        }
+    else
+        {
+        // Proceed with the normal installation.
+        iAsyncLauncher->InstallL( *iUiHandler, aFileName, *iInstallPrefs, iStatus );
+        iInstallRequest = ETrue;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::DoUninstallL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::DoUninstallL( TComponentId aComponentId, TRequestStatus& /*aStatus*/ )
+    {
+    RSoftwareComponentRegistry scrSession;
+    User::LeaveIfError( scrSession.Connect() );
+    CleanupClosePushL( scrSession );
+
+    CPropertyEntry* propertyEntry = scrSession.GetComponentPropertyL( aComponentId, KCompUid );
+    CleanupStack::PushL( propertyEntry );
+    CIntPropertyEntry* intPropertyEntry = dynamic_cast< CIntPropertyEntry* >( propertyEntry );
+    FLOG_2( _L("CSisxSifPluginActiveImpl::DoUninstallL, component %d, property 0x%08x"),
+            aComponentId, intPropertyEntry );
+    if( !intPropertyEntry )
+        {
+        FLOG( _L("CSisxSifPluginActiveImpl: UID property not found ERROR") );
+        User::Leave( KErrNotFound );
+        }
+
+    TUid objectId = TUid::Uid( intPropertyEntry->IntValue() );
+    CleanupStack::PopAndDestroy( 2, &scrSession );      // propertyEntry, scrSession
+
+    iAsyncLauncher->UninstallL( *iUiHandler, objectId, iStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::DoActivateL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::DoActivateL( TComponentId aComponentId )
+    {
+    Swi::RSisRegistryWritableSession sisRegSession;
+    User::LeaveIfError( sisRegSession.Connect() );
+    sisRegSession.ActivateComponentL( aComponentId );
+    sisRegSession.Close();
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::DoDeactivateL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::DoDeactivateL( TComponentId aComponentId )
+    {
+    Swi::RSisRegistryWritableSession sisRegSession;
+    User::LeaveIfError( sisRegSession.Connect() );
+    sisRegSession.DeactivateComponentL( aComponentId );
+    sisRegSession.Close();
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::ConvertToSifErrorCode()
+// ---------------------------------------------------------------------------
+//
+TInt CSisxSifPluginActiveImpl::ConvertToSifErrorCode( TInt aSwiErrorCode )
+    {
+    // TODO: need to show also SWI error code in UI somehow when necessary
+
+    if( aSwiErrorCode > KSystemWideErrorsBoundary )
+        {
+        return aSwiErrorCode;
+        }
+
+    switch( aSwiErrorCode )
+        {
+        case KErrSISFieldIdMissing:
+        case KErrSISFieldLengthMissing:
+        case KErrSISFieldLengthInvalid:
+        case KErrSISStringInvalidLength:
+        case KErrSISSignedControllerSISControllerMissing:
+        case KErrSISControllerSISInfoMissing:
+        case KErrSISInfoSISUidMissing:
+        case KErrSISInfoSISNamesMissing:
+        case KErrSISFieldBufferTooShort:
+        case KErrSISStringArrayInvalidElement:
+        case KErrSISInfoSISVendorNamesMissing:
+        case KErrSISInfoSISVersionMissing:
+        case KErrSISControllerSISSupportedLanguagesMissing:
+        case KErrSISSupportedLanguagesInvalidElement:
+        case KErrSISLanguageInvalidLength:
+        case KErrSISContentsSISSignedControllerMissing:
+        case KErrSISContentsSISDataMissing:
+        case KErrSISDataSISFileDataUnitMissing:
+        case KErrSISFileDataUnitTargetMissing:
+        case KErrSISFileOptionsMissing:
+        case KErrSISFileDataUnitDescriptorMissing:
+        case KErrSISFileDataDescriptionMissing:
+        case KErrSISContentsMissing:
+        case KErrSISEmbeddedControllersMissing:
+        case KErrSISEmbeddedDataUnitsMissing:
+        case KErrSISControllerOptionsMissing:
+        case KErrSISExpressionMissing:
+        case KErrSISExpressionStringValueMissing:
+        case KErrSISOptionsStringMissing:
+        case KErrSISFileOptionsExpressionMissing:
+        case KErrSISExpressionHeadValueMissing:
+        case KErrSISEmbeddedSISOptionsMissing:
+        case KErrSISInfoSISUpgradeRangeMissing:
+        case KErrSISDependencyMissingUid:
+        case KErrSISDependencyMissingVersion:
+        case KErrSISDependencyMissingNames:
+        case KErrSISControllerMissingPrerequisites:
+        case KErrSISUpgradeRangeMissingVersion:
+        case KErrSISUnexpectedFieldType:
+        case KErrSISExpressionUnknownOperator:
+        case KErrSISArrayReadError:
+        case KErrSISArrayTypeMismatch:
+        case KErrSISInvalidStringLength:
+        case KErrSISCompressionNotSupported:
+        case KErrSISTooDeeplyEmbedded:
+        case KErrWrongHeaderFormat:
+        case KErrExpressionToComplex:
+        case KErrInvalidExpression:
+        case KErrInvalidType:
+            return KErrSifCorruptedPackage;
+
+        case KErrBadUsage:
+        case KErrInstallerLeave:
+            return KErrSifUnknown;
+
+        case KErrSISPrerequisitesMissingDependency:
+            return KErrSifMissingDependencies;
+
+        case KErrMissingBasePackage:
+            return KErrSifMissingBasePackage;
+
+        case KErrCapabilitiesMismatch:
+        case KErrInvalidEclipsing:
+        case KErrSecurityError:
+        case KErrBadHash:
+        case KErrDigestNotSupported:
+        case KErrSignatureSchemeNotSupported:
+        case KErrSISWouldOverWrite:
+        case KErrSISInvalidTargetFile:
+            return KErrPermissionDenied;
+
+        case KErrPolicyFileCorrupt:
+            return KErrSifBadInstallerConfiguration;
+
+        case KErrInvalidUpgrade:
+        case KErrLegacySisFile:
+            return KErrSifPackageCannotBeInstalledOnThisDevice;
+
+        case KErrSISNotEnoughSpaceToInstall:
+            return KErrSifNotEnoughSpace;
+
+        default:
+            return KErrSifUnknown;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::GetLastInstalledComponentIdL()
+// ---------------------------------------------------------------------------
+//
+TComponentId CSisxSifPluginActiveImpl::GetLastInstalledComponentIdL()
+    {
+    ASSERT( iInstallRequest );
+
+    // Find the id of the last installed component and return it
+    TInt uid;
+    User::LeaveIfError( RProperty::Get( KUidSystemCategory, KUidSwiLatestInstallation, uid ) );
+
+    Swi::RSisRegistrySession sisRegistrySession;
+    User::LeaveIfError( sisRegistrySession.Connect() );
+    CleanupClosePushL( sisRegistrySession );
+
+    TUid tuid( TUid::Uid( uid ) );
+    TComponentId componentId = sisRegistrySession.GetComponentIdForUidL( tuid );
+    CleanupStack::PopAndDestroy( &sisRegistrySession );
+
+    return componentId;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::NeedUserCapabilityL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginActiveImpl::NeedUserCapabilityL()
+    {
+    // Silent install is not allowed when the package requires additional capabilities
+    // than what it is signed for (Package may request for some capability that is not
+    // granted by the certificate used to sign it).
+    const TCapabilitySet& componentUserCaps( iComponentInfo->RootNodeL().UserGrantableCaps() );
+    for( TInt cap = 0; cap < ECapability_Limit; cap++ )
+        {
+        if( componentUserCaps.HasCapability( TCapability( cap ) ) )
+            {
+            FLOG_1( _L("Package requires additional capability - %d"), cap );
+            return ETrue;
+            }
+        }
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::ProcessSilentInstallL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::ProcessSilentInstallL()
+    {
+    // We need to do this only once per installation request
+    iSilentInstall = EFalse;
+    iInstallRequest = ETrue;
+
+    // TODO: should self-signed packages that do not contain executables be allowed?
+    //TBool hasExecutable = iComponentInfo->RootNodeL().HasExecutable();
+
+    TBool isNotAuthenticated = ( iComponentInfo->RootNodeL().Authenticity() == ENotAuthenticated );
+    TBool reqUserCap = NeedUserCapabilityL();
+    if( isNotAuthenticated || reqUserCap )
+        {
+        if( isNotAuthenticated )
+            {
+            FLOG( _L("Silent Install is not allowed on unsigned or self-signed packages") );
+            }
+        if( reqUserCap )
+            {
+            FLOG( _L("Silent Install is not allowed when user capabilities are required") );
+            }
+        User::RequestComplete( iClientStatus, KErrPermissionDenied );
+        iClientStatus = NULL;
+        }
+    else
+        {
+        TInt err = KErrNone;
+        if( iFileHandle )
+            {
+            TRAP( err, iAsyncLauncher->InstallL( *iUiHandler, *iFileHandle, *iInstallPrefs, iStatus ) );
+            }
+        else if( iFileName )
+            {
+            TRAP( err, iAsyncLauncher->InstallL( *iUiHandler, *iFileName, *iInstallPrefs, iStatus ) );
+            }
+        else
+            {
+            Panic( ESisxSifInternalError );
+            }
+
+        if( !err )
+            {
+            SetActive();
+            }
+        else
+            {
+            User::RequestComplete( iClientStatus, err );
+            iClientStatus = NULL;
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::SetSilentInstallFileL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::SetSilentInstallFileL( const TDesC& aFileName )
+    {
+    if( iFileName )
+        {
+        delete iFileName;
+        iFileName = NULL;
+        }
+    iFileName = aFileName.AllocL();
+    iFileHandle = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginActiveImpl::SetSilentInstallFile()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginActiveImpl::SetSilentInstallFile( RFile& aFileHandle )
+    {
+    if( iFileName )
+        {
+        delete iFileName;
+        iFileName = NULL;
+        }
+    iFileHandle = &aFileHandle;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginmain.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Native SISX SIF (Software Install Framework) plugin.
+*
+*/
+
+#include <ecom/implementationproxy.h>   // TImplementationProxy
+#include "sisxsifplugin.h"              // CSisxSifPlugin
+
+using namespace Usif;
+
+const TImplementationProxy KImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( 0x20022EE3, CSisxSifPlugin::NewL )
+    };
+
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// ImplementationGroupProxy
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+    {
+    aTableCount = sizeof( KImplementationTable ) / sizeof( TImplementationProxy );
+    return KImplementationTable;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,466 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Native SISX SIF (Software Install Framework) plugin.
+*
+*/
+
+#include "sisxsifpluginuihandler.h"     // CSisxSifPluginUiHandler
+#include "sisxsifplugin.pan"            // Panic codes
+#include "sisxsifcleanuputils.h"        // CleanupResetAndDestroyPushL
+#include "sisxsifuiselectioncache.h"    // CSisxUISelectionCache
+#include "sisxsifuilangname.h"          // CLangName
+#include <data_caging_path_literals.hrh> // KDC_RESOURCE_FILES_DIR
+#include <sisxsifuidata.rsg>            // Resource IDs
+#include <sifui.h>                      // CSifUi
+#include <bautils.h>                    // BaflUtils
+#include <featmgr.h>                    // FeatureManager
+//#include <csxhelp/am.hlp.hrh>           // Help IDs
+#include <hb/hbcore/hbsymbiandevicedialog.h> // CHbDeviceDialog
+#include <hb/hbcore/hbsymbianvariant.h> // CHbSymbianVariantMap
+
+using namespace Usif;
+
+_LIT( KSisxUIResourceFileName, "sisxsifuidata.rsc" );
+
+// TODO: replace with proper tracing support
+#ifdef _DEBUG
+#define FLOG(x)         RDebug::Print(x);
+#define FLOG_1(x,y)     RDebug::Print(x, y);
+#define FLOG_2(x,y,z)   RDebug::Print(x, y, z);
+#else
+#define FLOG(x)
+#define FLOG_1(x,y)
+#define FLOG_2(x,y,z)
+#endif
+
+
+// ======== LOCAL FUNCTIONS =========
+
+TBool HasLangId( const TLanguage* aId, const CLangName& aLang )
+    {
+    return( *aId == aLang.Id() );
+    }
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::NewL()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPluginUiHandler* CSisxSifPluginUiHandler::NewL( RFs& aFs )
+	{
+    FLOG( _L("CSisxSifPluginUiHandler::NewL") );
+	CSisxSifPluginUiHandler *self = new( ELeave ) CSisxSifPluginUiHandler( aFs );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::~CSisxSifPluginUiHandler()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPluginUiHandler::~CSisxSifPluginUiHandler()
+	{
+    FLOG( _L("CSisxSifPluginUiHandler::~CSisxSifPluginUiHandler") );
+    delete iSelectionCache;
+    delete iSifUi;
+    CloseResourceFile();
+	}
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayTextL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayTextL( const Swi::CAppInfo& /*aAppInfo*/,
+        Swi::TFileTextOption /*aOption*/, const TDesC& /*aText*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayTextL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayErrorL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::DisplayErrorL( const Swi::CAppInfo& /*aAppInfo*/,
+        Swi::TErrorDialog /*aType*/, const TDesC& /*aParam*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayErrorL") );
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayDependencyBreakL( const Swi::CAppInfo& /*aAppInfo*/,
+        const RPointerArray<TDesC>& /*aComponents*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayDependencyBreakL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayApplicationsInUseL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayApplicationsInUseL( const Swi::CAppInfo& /*aAppInfo*/,
+        const RPointerArray<TDesC>& /*aAppNames*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayApplicationsInUseL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayQuestionL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayQuestionL( const Swi::CAppInfo& /*aAppInfo*/,
+        Swi::TQuestionDialog aQuestion, const TDesC& /*aDes*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayQuestionL") );
+
+    TBool result = ETrue;
+    switch( aQuestion )
+        {
+        case Swi::EQuestionIncompatible:
+            if( !iQuestionIncompatibleDisplayed )
+                {
+                // TODO: show dialog
+                iQuestionIncompatibleDisplayed = ETrue;
+                }
+            break;
+        case Swi::EQuestionOverwriteFile:
+        default:
+            // silently accepted
+            break;
+        }
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayInstallL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayInstallL( const Swi::CAppInfo& /*aAppInfo*/,
+        const CApaMaskedBitmap* /*aLogo*/,
+        const RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayInstallL") );
+
+    iSifUi->SetMode( CSifUi::EInstalling );
+
+    // TODO: show preparing note -- unless it can be displayed already earlier.
+    // Preparing note should not have any buttons yet, but it might display some
+    // application details already.
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayGrantCapabilitiesL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayGrantCapabilitiesL( const Swi::CAppInfo& /*aAppInfo*/,
+        const TCapabilitySet& /*aCapabilitySet*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayGrantCapabilitiesL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayLanguageL()
+// ---------------------------------------------------------------------------
+//
+TInt CSisxSifPluginUiHandler::DisplayLanguageL( const Swi::CAppInfo& /*aAppInfo*/,
+        const RArray<TLanguage>& /*aLanguages*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayLanguageL") );
+
+    return 0;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayDriveL()
+// ---------------------------------------------------------------------------
+//
+TInt CSisxSifPluginUiHandler::DisplayDriveL( const Swi::CAppInfo& /*aAppInfo*/,
+        TInt64 /*aSize*/, const RArray<TChar>& /*aDriveLetters*/,
+        const RArray<TInt64>& /*aDriveSpaces*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayDriveL") );
+
+    return 0;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayUpgradeL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayUpgradeL( const Swi::CAppInfo& /*aAppInfo*/,
+        const Swi::CAppInfo& /*aExistingAppInfo*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayUpgradeL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayOptionsL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayOptionsL( const Swi::CAppInfo& /*aAppInfo*/,
+        const RPointerArray<TDesC>& /*aOptions*/, RArray<TBool>& /*aSelections*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayOptionsL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::HandleInstallEventL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::HandleInstallEventL( const Swi::CAppInfo& aAppInfo,
+        Swi::TInstallEvent aEvent, TInt aValue, const TDesC& /*aDes*/ )
+    {
+    FLOG_2( _L("CSisxSifPluginUiHandler::HandleInstallEventL: aEvent %d, aValue %d"), aEvent, aValue );
+
+    // TODO: application size?
+    TInt appSize = 0;
+
+    switch( aEvent )
+        {
+        case Swi::EEventSetProgressBarFinalValue:
+            iSifUi->ShowProgressL( aAppInfo, appSize, aValue );
+            break;
+
+        case Swi::EEventUpdateProgressBar:
+            iSifUi->IncreaseProgressBarValueL( aValue );
+            break;
+
+        case Swi::EEventOcspCheckEnd:
+            // TODO: do something
+            break;
+
+        case Swi::EEventDevCert:
+            // TODO: show "developer certificate" warning note
+            break;
+
+        case Swi::EEventAbortedInstall:
+        case Swi::EEventAbortedUnInstall:
+        case Swi::EEventCompletedInstall:
+        case Swi::EEventCompletedUnInstall:
+        case Swi::EEventCompletedNoMessage:
+        case Swi::EEventLeave:
+        default:
+            break;
+        }
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::HandleCancellableInstallEventL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::HandleCancellableInstallEventL( const Swi::CAppInfo& /*aAppInfo*/,
+        Swi::TInstallCancellableEvent /*aEvent*/, Swi::MCancelHandler& /*aCancelHandler*/,
+        TInt /*aValue*/,const TDesC& /*aDes*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::HandleCancellableInstallEventL") );
+
+    // TODO: Swi::EEventOcspCheckStart
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplaySecurityWarningL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplaySecurityWarningL( const Swi::CAppInfo& aAppInfo,
+        Swi::TSignatureValidationResult aSigValidationResult,
+        RPointerArray<CPKIXValidationResultBase>& /*aPkixResults*/,
+        RPointerArray<Swi::CCertificateInfo>& aCertificates,
+        TBool aInstallAnyway )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplaySecurityWarningL") );
+    TBool result = EFalse;
+
+    // TODO: add application size
+    TInt appSize = 0;
+
+    switch( aSigValidationResult )
+        {
+        case Swi::EValidationSucceeded:
+            result = iSifUi->ShowConfirmationL( aAppInfo, appSize, iLogo, aCertificates );
+            break;
+
+        case Swi::ESignatureSelfSigned:
+        case Swi::ENoCertificate:
+        case Swi::ECertificateValidationError:
+        case Swi::ESignatureNotPresent:
+        case Swi::ESignatureCouldNotBeValidated:
+        case Swi::ENoCodeSigningExtension:
+        case Swi::ENoSupportedPolicyExtension:
+        case Swi::EMandatorySignatureMissing:
+            if( aInstallAnyway )
+                {
+                result = iSifUi->ShowConfirmationL( aAppInfo, appSize, iLogo, aCertificates );
+                }
+            break;
+
+        default:
+            break;
+        }
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayOcspResultL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayOcspResultL( const Swi::CAppInfo& /*aAppInfo*/,
+        Swi::TRevocationDialogMessage /*aMessage*/, RPointerArray<TOCSPOutcome>& /*aOutcomes*/,
+        RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/,TBool /*aWarningOnly*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayOcspResultL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayCannotOverwriteFileL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::DisplayCannotOverwriteFileL( const Swi::CAppInfo& /*aAppInfo*/,
+        const Swi::CAppInfo& /*aInstalledAppInfo*/,const TDesC& /*aFileName*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayCannotOverwriteFileL") );
+
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayMissingDependencyL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayMissingDependencyL( const Swi::CAppInfo& /*aAppInfo*/,
+        const TDesC& /*aDependencyName*/, TVersion /*aWantedVersionFrom*/,
+        TVersion /*aWantedVersionTo*/, TVersion /*aInstalledVersion*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayMissingDependencyL") );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayUninstallL()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandler::DisplayUninstallL( const Swi::CAppInfo& /*aAppInfo*/ )
+    {
+    FLOG( _L("CSisxSifPluginUiHandler::DisplayUninstallL") );
+
+    iSifUi->SetMode( CSifUi::EUninstalling );
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayCompleteL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::DisplayCompleteL()
+    {
+    if( iSifUi )
+        {
+        iSifUi->ShowCompleteL();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::DisplayFailedL
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::DisplayFailedL( TInt aErrorCode )
+    {
+    if( iSifUi )
+        {
+        iSifUi->ShowFailedL( aErrorCode );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::CSisxSifPluginUiHandler()
+// ---------------------------------------------------------------------------
+//
+CSisxSifPluginUiHandler::CSisxSifPluginUiHandler( RFs& aFs ) : iFs( aFs )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::ConstructL()
+    {
+    OpenResourceFileL();
+    iSifUi = CSifUi::NewL();
+    iSelectionCache = CSisxSifUiSelectionCache::NewL();
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::OpenResourceFileL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::OpenResourceFileL()
+    {
+    TFileName fileName;
+    fileName.Copy( KDC_RESOURCE_FILES_DIR );
+    fileName.Append( KSisxUIResourceFileName );
+    BaflUtils::NearestLanguageFile( iFs, fileName );
+    iResourceFile.OpenL( iFs, fileName );
+    iResourceFile.ConfirmSignatureL();
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::ReadStringResourceL()
+// ---------------------------------------------------------------------------
+//
+HBufC* CSisxSifPluginUiHandler::ReadStringResourceL( TInt aResourceId )
+    {
+    HBufC8* buffer = iResourceFile.AllocReadLC( aResourceId );
+    TResourceReader reader;
+    reader.SetBuffer( buffer );
+    const TPtrC ptr( reader.ReadTPtrC() );
+    HBufC* string = ptr.AllocL();
+    CleanupStack::PopAndDestroy( buffer );
+    return string;
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::CloseResourceFile()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::CloseResourceFile()
+    {
+    iResourceFile.Close();
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifuilangname.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   CLangName class contains language id amd name
+*
+*/
+
+
+#include "sisxsifuilangname.h"          // CLangName
+#include <barsread.h>                   // TResourceReader
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CLangName::NewL()
+// ---------------------------------------------------------------------------
+//
+CLangName* CLangName::NewL( TResourceReader& aReader )
+    {
+    CLangName* self = new (ELeave) CLangName;
+    CleanupStack::PushL( self );
+    self->ConstructFromResourceL( aReader );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CLangName::~CLangName()
+// ---------------------------------------------------------------------------
+//
+CLangName::~CLangName()
+    {
+    delete iName;
+    }
+
+// ---------------------------------------------------------------------------
+// CLangName::Id()
+// ---------------------------------------------------------------------------
+//
+TLanguage CLangName::Id() const
+    {
+    return iId;
+    }
+
+// ---------------------------------------------------------------------------
+// CLangName::Name()
+// ---------------------------------------------------------------------------
+//
+TPtrC CLangName::Name() const
+    {
+    return *iName;
+    }
+
+// ---------------------------------------------------------------------------
+// CLangName::CLangName()
+// ---------------------------------------------------------------------------
+//
+CLangName::CLangName()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CLangName::ConstructFromResourceL()
+// ---------------------------------------------------------------------------
+//
+void CLangName::ConstructFromResourceL( TResourceReader& aReader )
+    {
+    iId = static_cast< TLanguage >( aReader.ReadInt16() );
+    iName = aReader.ReadHBufC16L();
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifuiselectioncache.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,184 @@
+/*
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: CSisxSifUiSelectionCache saves user-selections so that
+*              they can be re-used without displaying the same UI
+*              dialog again.
+*/
+
+
+#include "sisxsifuiselectioncache.h"        // CSisxSifUiSelectionCache
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// -----------------------------------------------------------------------------
+// CSisxSifUiSelectionCache::CSisxSifUiSelectionCache()
+// -----------------------------------------------------------------------------
+//
+CSisxSifUiSelectionCache::CSisxSifUiSelectionCache()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxSifUiSelectionCache::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CSisxSifUiSelectionCache::ConstructL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxSifUiSelectionCache::NewL()
+// -----------------------------------------------------------------------------
+//
+CSisxSifUiSelectionCache* CSisxSifUiSelectionCache::NewL()
+    {
+    CSisxSifUiSelectionCache* self = new( ELeave ) CSisxSifUiSelectionCache();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;    
+    }
+    
+// -----------------------------------------------------------------------------
+// CSisxSifUiSelectionCache::~CSisxSifUiSelectionCache()
+// -----------------------------------------------------------------------------
+//
+CSisxSifUiSelectionCache::~CSisxSifUiSelectionCache()
+    {
+    iOptions.ResetAndDestroy();
+    iSelections.Reset(); 
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::LanguageCached()
+// -----------------------------------------------------------------------------
+//
+TBool CSisxSifUiSelectionCache::LanguageCached() const
+    {
+    return iLanguageCached;    
+    }
+       
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::Language()
+// -----------------------------------------------------------------------------
+//
+TLanguage CSisxSifUiSelectionCache::Language() const
+    {
+    return iLanguage;    
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::SetLanguage()
+// -----------------------------------------------------------------------------
+//
+void CSisxSifUiSelectionCache::SetLanguage( const TLanguage& aLanguage )
+    {
+    iLanguage = aLanguage;   
+    iLanguageCached = ETrue;    
+    }
+     
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::DriveCached()
+// -----------------------------------------------------------------------------
+//
+TBool CSisxSifUiSelectionCache::DriveCached() const
+    {
+    TBool result( EFalse );
+    
+    if( iDrive != 0 )
+        {
+        result = ETrue;        
+        }
+    return result;    
+    }
+  
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::Drive()
+// -----------------------------------------------------------------------------
+//
+TDriveUnit CSisxSifUiSelectionCache::Drive() const
+    {
+    return iDrive;    
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::SetDrive()
+// -----------------------------------------------------------------------------
+//
+void CSisxSifUiSelectionCache::SetDrive( TDriveUnit aDrive )
+    {
+    iDrive = aDrive;    
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::OptionsCached()
+// -----------------------------------------------------------------------------
+//
+TBool CSisxSifUiSelectionCache::OptionsCached( const RPointerArray<TDesC>& aOptions ) const
+    {
+    TBool result( EFalse );
+    
+    if( iOptions.Count() > 0 && aOptions.Count() == iOptions.Count() )
+        {        
+        for( TInt index = 0; index < iOptions.Count(); ++index )
+            {
+            if( aOptions[ index ] != iOptions[ index ] )
+                {
+                result = EFalse;
+                break;                
+                }            
+            }        
+        result = ETrue;        
+        }    
+
+    return result;    
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::Options()
+// -----------------------------------------------------------------------------
+//
+void CSisxSifUiSelectionCache::Options( RArray<TBool>& aSelections )
+    {
+    for( TInt index = 0; index < aSelections.Count(); ++index )
+        {
+        aSelections[ index ] = iSelections[ index ];
+        }    
+    }
+
+// -----------------------------------------------------------------------------
+// CSisxUISelectionCacheAppInfo::SetOptionsL()
+// -----------------------------------------------------------------------------
+//
+void CSisxSifUiSelectionCache::SetOptionsL( const RPointerArray<TDesC>& aOptions,
+        const RArray<TBool>& aSelections )
+    {
+    TInt index( 0 );
+    
+    iOptions.ResetAndDestroy();
+    iSelections.Reset();    
+
+    for( index = 0; index < aOptions.Count(); ++index )
+        {
+        HBufC* tmp = aOptions[ index ]->AllocLC();
+        iOptions.Append( tmp );        
+        }
+    
+    for( index = 0; index < aSelections.Count(); ++index )
+        {
+        iSelections.Append( aSelections[ index ] );
+        }
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test installer that uses Usif::RSoftwareInstall API.
+*
+*/
+
+#include "activerunner.h"
+#include "activerunner_symbian.h"
+
+
+ActiveRunner::ActiveRunner(bool useSif)
+{
+    d_ptr = new ActiveRunnerPrivate(this);
+    if (d_ptr) {
+        d_ptr->Initialize(useSif);
+    }
+}
+
+ActiveRunner::~ActiveRunner()
+{
+    delete d_ptr;
+}
+
+void ActiveRunner::install(const QString &fileName, bool silent)
+{
+    if (d_ptr) {
+        d_ptr->Install(fileName, silent);
+    }
+}
+
+void ActiveRunner::handleCompletion()
+{
+    emit opCompleted();
+}
+
+void ActiveRunner::handleError(int error)
+{
+    emit opFailed(error);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test installer that uses Usif::RSoftwareInstall API.
+*
+*/
+
+#ifndef ACTIVERUNNER_H
+#define ACTIVERUNNER_H
+
+#include <QObject>
+
+class ActiveRunnerPrivate;
+
+
+class ActiveRunner : public QObject
+{
+    Q_OBJECT
+
+public:     // constructor and destructor
+    ActiveRunner(bool useSif);
+    ~ActiveRunner();
+
+signals:
+    void opCompleted();
+    void opFailed(int error);
+
+public:     // new functions
+    void install(const QString &fileName, bool silent);
+
+protected:
+    void handleCompletion();
+    void handleError(int error);
+
+private:    // data
+    friend class ActiveRunnerPrivate;
+    ActiveRunnerPrivate *d_ptr;
+};
+
+#endif  // ACTIVERUNNER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test installer that uses Usif::RSoftwareInstall API.
+*
+*/
+
+#include "activerunner_symbian.h"
+#include "activerunner.h"
+
+
+ActiveRunnerPrivate::ActiveRunnerPrivate(ActiveRunner *aRunner) :
+        CActive( CActive::EPriorityStandard ), q_ptr( aRunner )
+{
+    CActiveScheduler::Add(this);
+}
+
+ActiveRunnerPrivate::~ActiveRunnerPrivate()
+{
+    Cancel();
+    if( iUseSif )
+        {
+        iSoftwareInstall.Close();
+        }
+    else
+        {
+        iSWInstLauncher.Close();
+        }
+    delete iFileName;
+    delete iArguments;
+    delete iResults;
+}
+
+TInt ActiveRunnerPrivate::Initialize( bool aUseSif )
+{
+    iUseSif = aUseSif;
+    TInt ret = KErrNone;
+    if( iUseSif )
+        {
+        ret = iSoftwareInstall.Connect();
+        }
+    else
+        {
+        ret = iSWInstLauncher.Connect();
+        }
+    return ret;
+}
+
+TInt ActiveRunnerPrivate::Install( const QString& aFileName, bool aSilent )
+{
+    TRAPD( err, DoInstallL( aFileName, aSilent ) );
+    return err;
+}
+
+void ActiveRunnerPrivate::DoCancel()
+{
+    if( iUseSif )
+        {
+        iSoftwareInstall.CancelOperation();
+        }
+    else
+        {
+        iSWInstLauncher.CancelAsyncRequest( SwiUI::ERequestInstall );
+        }
+}
+
+void ActiveRunnerPrivate::RunL()
+{
+    User::LeaveIfError( iStatus.Int() );
+
+    RDebug::Printf( "USIFTestInstaller: Installation completed" );
+    if( q_ptr ) {
+        q_ptr->handleCompletion();
+    }
+}
+
+TInt ActiveRunnerPrivate::RunError( TInt aError )
+{
+    RDebug::Printf( "USIFTestInstaller: Error %d", aError );
+    if( q_ptr ) {
+        q_ptr->handleError( aError );
+    }
+    return KErrNone;
+}
+
+void ActiveRunnerPrivate::DoInstallL( const QString& aFileName, bool aSilent )
+    {
+    if( iFileName )
+        {
+        delete iFileName;
+        iFileName = NULL;
+        }
+    iFileName = HBufC16::NewL( aFileName.length() );
+    TPtr16 fileName( iFileName->Des() );
+    fileName.Copy( reinterpret_cast<const TText*>( aFileName.constData() ) );
+
+    // Convert forward-slashes to backward-slashes
+    const TChar KBackSlash = '\\';
+    const TChar KSlash = '/';
+    for( TInt i = 0; i < fileName.Length(); ++i )
+        {
+        if( fileName[i] == KSlash )
+            {
+            fileName[i] = KBackSlash;
+            }
+        }
+
+    if( iUseSif )
+        {
+        if( aSilent )
+            {
+            delete iArguments;
+            iArguments = NULL;
+            iArguments = Usif::COpaqueNamedParams::NewL();
+            iArguments->AddIntL( Usif::KSifInParam_InstallSilently, 1 );
+
+            delete iResults;
+            iResults = NULL;
+            iResults = Usif::COpaqueNamedParams::NewL();
+
+            iSoftwareInstall.Install( fileName, *iArguments, *iResults, iStatus );
+            }
+        else
+            {
+            iSoftwareInstall.Install( fileName, iStatus );
+            }
+        }
+    else
+        {
+        if( aSilent )
+            {
+            SwiUI::TInstallOptions defaultOptions;
+            SwiUI::TInstallOptionsPckg optPckg( defaultOptions );
+            iSWInstLauncher.SilentInstall( iStatus, fileName, optPckg );
+            }
+        else
+            {
+            iSWInstLauncher.Install( iStatus, fileName );
+            }
+        }
+    SetActive();
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test installer that uses Usif::RSoftwareInstall API.
+*
+*/
+
+#ifndef ACTIVERUNNERPRIVATE_H
+#define ACTIVERUNNERPRIVATE_H
+
+#include <e32base.h>            // CActive
+#include <usif/sif/sif.h>       // Usif::RSoftwareInstall
+#include <usif/sif/sif.h>       // Usif::RSoftwareInstall
+#include <SWInstApi.h>          // RSWInstLauncher
+
+class ActiveRunner;
+class QString;
+
+
+class ActiveRunnerPrivate : public CActive
+{
+public:     // constructor and destructor
+    ActiveRunnerPrivate(ActiveRunner *aRunner);
+    ~ActiveRunnerPrivate();
+
+public:     // new functions
+    TInt Initialize( bool aUseSif );
+    TInt Install( const QString& aFileName, bool aSilent );
+
+protected:  // from CActive
+    void DoCancel();
+    void RunL();
+    TInt RunError(TInt aError);
+
+private:    // new functions
+    void DoInstallL( const QString& aFileName, bool aSilent );
+
+private:    // data
+    ActiveRunner *q_ptr;
+    HBufC* iFileName;
+    TBool iUseSif;
+    Usif::COpaqueNamedParams *iArguments;
+    Usif::COpaqueNamedParams *iResults;
+    Usif::RSoftwareInstall iSoftwareInstall;
+    SwiUI::RSWInstLauncher iSWInstLauncher;
+};
+
+#endif  // ACTIVERUNNERPRIVATE_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/main.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test installer that uses Usif::RSoftwareInstall API.
+*
+*/
+
+#include "testinstaller.h"
+
+int main(int argc, char *argv[]) {
+    TestInstaller testInstaller(argc, argv);
+    testInstaller.setApplicationName("TestInstaller");
+    return testInstaller.exec();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,195 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test installer that uses Usif::RSoftwareInstall API.
+*
+*/
+
+#include "testinstaller.h"
+#include "activerunner.h"
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hbpushbutton.h>
+#include <hbcheckbox.h>
+#include <hbcombobox.h>
+#include <hblabel.h>
+#include <hbmessagebox.h>
+#include <QGraphicsLinearLayout>
+#include <QDir>
+
+#define INSTALLS_PATH "C:\\Data\\Installs\\"
+
+
+TestInstaller::TestInstaller(int& argc, char* argv[]) : HbApplication(argc, argv),
+    mMainWindow(0), mMainView(0), mFileNames(), mSelectableFiles(0),
+    mUseSilentInstall(false), mRunner(0)
+{
+    mMainWindow = new HbMainWindow();
+    mMainView = new HbView();
+    mMainView->setTitle(tr("Test Installer"));
+
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    mSelectableFiles = new HbComboBox;
+    mSelectableFiles->setEditable(false);
+    connect(mSelectableFiles, SIGNAL(currentIndexChanged(int)),
+            this, SLOT(selectedFileChanged(int)));
+    layout->addItem(mSelectableFiles);
+
+    HbCheckBox *silentInstallCheckBox = new HbCheckBox;
+    silentInstallCheckBox->setText(tr("Silent install"));
+    connect(silentInstallCheckBox, SIGNAL(stateChanged(int)), this, SLOT(silentCheckChanged(int)));
+    layout->addItem(silentInstallCheckBox);
+
+    HbPushButton *installNew = new HbPushButton(tr("Install using new API"));
+    layout->addItem(installNew);
+    HbPushButton *installOld = new HbPushButton(tr("Install using old API"));
+    layout->addItem(installOld);
+    HbPushButton *quit = new HbPushButton(tr("Exit"));
+    layout->addItem(quit);
+
+    connect(installNew, SIGNAL(clicked()), this, SLOT(installUsingNewApi()));
+    connect(installOld, SIGNAL(clicked()), this, SLOT(installUsingOldApi()));
+    connect(quit, SIGNAL(clicked()), this, SLOT(closeApp()));
+
+    mMainView->setLayout(layout);
+    mMainWindow->addView(mMainView);
+    mMainWindow->show();
+
+    changeDir(INSTALLS_PATH);
+}
+
+TestInstaller::~TestInstaller()
+{
+    delete mRunner;
+    delete mMainView;
+    delete mMainWindow;
+}
+
+void TestInstaller::selectedFileChanged(int /*index*/)
+{
+    if (mSelectableFiles) {
+        mFileNames.clear();
+        QString selectedFile(mDirPath);
+        selectedFile.append(mSelectableFiles->currentText());
+        mFileNames.append(selectedFile);
+    }
+}
+
+void TestInstaller::silentCheckChanged(int state)
+{
+    Qt::CheckState s = static_cast<Qt::CheckState>(state);
+    mUseSilentInstall = (s == Qt::Checked);
+}
+
+void TestInstaller::installUsingNewApi()
+{
+    createRunner(true);
+}
+
+void TestInstaller::installUsingOldApi()
+{
+    createRunner(false);
+}
+
+void TestInstaller::handleComplete()
+{
+    HbMessageBox::information(tr("Installed"));
+
+    delete mRunner;
+    mRunner = 0;
+}
+
+void TestInstaller::handleError(int error)
+{
+    QString messageText;
+    if (error == KErrCancel) {
+        messageText = tr("Cancelled");
+    } else {
+        messageText = tr("Error %1").arg(error);
+    }
+    HbMessageBox::warning(messageText);
+
+    delete mRunner;
+    mRunner = 0;
+}
+
+void TestInstaller::closeApp()
+{
+    qApp->exit();
+}
+
+void TestInstaller::changeDir(const QString& dirPath)
+{
+    bool filesFound = false;
+
+    QDir dir(dirPath);
+    if (dir.exists()) {
+        mDirPath = dirPath;
+        mSelectableFiles->clear();
+
+        QFileInfoList list = dir.entryInfoList(QDir::Files);
+        QListIterator<QFileInfo> iter(list);
+        while (iter.hasNext()) {
+            const QFileInfo &info(iter.next());
+            mSelectableFiles->addItem(info.fileName());
+        }
+        filesFound = (mSelectableFiles->count() > 0);
+
+        mFileNames.clear();
+        if (filesFound) {
+            QString fileSelectedByDefault(dirPath);
+            fileSelectedByDefault.append(mSelectableFiles->currentText());
+            mFileNames.append(fileSelectedByDefault);
+        }
+    }
+
+    if (!filesFound) {
+        HbMessageBox::warning(tr("No files in '%1'").arg(dirPath));
+    }
+}
+
+void TestInstaller::createRunner(bool useSif)
+{
+    if (!mFileNames.count()) {
+        HbMessageBox::warning(tr("No files selected"));
+        changeDir(INSTALLS_PATH);
+    } else {
+        if (!mRunner) {
+            mRunner = new ActiveRunner(useSif);
+            connect(mRunner, SIGNAL(opCompleted()), this, SLOT(handleComplete()));
+            connect(mRunner, SIGNAL(opFailed(int)), this, SLOT(handleError(int)));
+            installSelected();
+        } else {
+            HbMessageBox::warning(tr("Already running"));
+        }
+    }
+}
+
+void TestInstaller::installSelected()
+{
+    if (mFileNames.count()) {
+        QStringListIterator fileNamesIterator(mFileNames);
+        while (fileNamesIterator.hasNext()) {
+            doInstall(fileNamesIterator.next());
+        }
+    }
+}
+
+void TestInstaller::doInstall(const QString &fileName)
+{
+    if (mRunner) {
+        mRunner->install(fileName, mUseSilentInstall);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Test installer that uses Usif::RSoftwareInstall API.
+*
+*/
+
+#ifndef TESTINSTALLER_H
+#define TESTINSTALLER_H
+
+#include <hbapplication.h>
+#include <QStringList>
+
+class HbMainWindow;
+class HbView;
+class HbLabel;
+class HbComboBox;
+class ActiveRunner;
+
+
+class TestInstaller : public HbApplication
+{
+    Q_OBJECT
+
+public:     // constructor and destructor
+    TestInstaller(int& argc, char* argv[]);
+    ~TestInstaller();
+
+private slots:
+    void selectedFileChanged(int index);
+    void silentCheckChanged(int state);
+    void installUsingNewApi();
+    void installUsingOldApi();
+    void handleComplete();
+    void handleError(int error);
+    void closeApp();
+
+private:    // functions
+    void changeDir(const QString& dirPath);
+    void createRunner(bool useSif);
+    void installSelected();
+    void doInstall(const QString &fileName);
+
+private:    // data
+    HbMainWindow *mMainWindow;
+    HbView       *mMainView;
+    QStringList  mFileNames;
+    HbComboBox   *mSelectableFiles;
+    bool         mUseSilentInstall;
+    QString      mDirPath;
+    ActiveRunner *mRunner;
+};
+
+#endif  // TESTINSTALLER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Package info file for test installer
+*
+*/
+
+#ifndef __TESTINSTALLER_IBY__
+#define __TESTINSTALLER_IBY__
+
+#include <data_caging_paths_for_iby.hrh>
+
+S60_APP_EXE( testinstaller )
+S60_APP_AIF_RSC( testinstaller )
+S60_APP_RESOURCE( testinstaller )
+
+#endif  // __TESTINSTALLER_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,42 @@
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: Package info file for test installer
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"testinstaller"},(0x0fe91d97),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Manual PKG pre-rules from PRO files
+; Default HW/platform dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+ 
+; Default dependency to Qt libraries
+(0x2001E61C), *, *, *, {"Qt"}
+
+; Executable and default resource files
+"/epoc32/release/armv5/urel/testinstaller.exe" - "!:\sys\bin\testinstaller.exe"
+"/epoc32/data/z/resource/apps/testinstaller.rsc" - "!:\resource\apps\testinstaller.rsc"
+"/epoc32/data/z/private/10003a3f/import/apps/testinstaller_reg.rsc" - "!:\private\10003a3f\import\apps\testinstaller_reg.rsc"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,52 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  Test installer that uses Usif::RSoftwareInstall API.
+#
+#
+
+
+TEMPLATE = app
+TARGET = testinstaller
+DEPENDPATH += .
+INCLUDEPATH += .
+
+HEADERS +=  testinstaller.h \
+		activerunner.h
+SOURCES +=  testinstaller.cpp \
+		activerunner.cpp \
+        main.cpp
+
+symbian {
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.UID2 = 0x100039ce
+    TARGET.UID3 = 0x0fe91d97      // random UID
+    TARGET.VID = VID_DEFAULT
+
+    INCLUDEPATH += /epoc32/include/platform/mw \
+        /epoc32/include/mw/hb/hbcore \
+        /epoc32/include/mw/hb/hbwidgets
+    LIBS += -lHbCore -lHbWidgets -lsif -lswinstcli
+
+	HEADERS += activerunner_symbian.h
+	SOURCES += activerunner_symbian.cpp
+	
+    rssrules = \
+        "newfile = KAppDoesNotSupportNewFile;"
+    RSS_RULES += rssrules
+}
+
+BLD_INF_RULES.prj_exports += \
+  "$${LITERAL_HASH}include <platform_paths.hrh>" \
+  "testinstaller.iby CORE_APP_LAYER_IBY_EXPORT_PATH(testinstaller.iby)"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/appinstaller.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = subdirs
+
+SYMBIAN_PLATFORMS = WINSCW ARMV5
+
+SUBDIRS += AppinstUi/appinstui.pro
+
--- a/appinstaller/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/appinstaller/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -23,7 +23,6 @@
 
 PRJ_MMPFILES
 
-#include "../AppMngr2/group/bld.inf"
 #include "../AppinstUi/group/bld.inf"
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/bgcindicatorplugin.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,48 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description:
+#
+
+TEMPLATE = lib
+TARGET = bgcindicatorplugin
+CONFIG += plugin
+CONFIG += hb
+
+INCLUDEPATH += .
+DEPENDPATH += .
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+INCLUDEPATH += ../../../../inc
+
+
+HEADERS += inc/bgcindicatorplugin.h \
+					 inc/bgcindicator.h
+SOURCES += src/bgcindicatorplugin.cpp \
+		   		 src/bgcindicator.cpp
+		   
+
+symbian {
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    TARGET.UID3 = 0x2002E696
+
+    pluginstub.sources = bgcindicatorplugin.dll
+    pluginstub.path = /resource/plugins/indicators
+    DEPLOYMENT += pluginstub
+}
+
+BLD_INF_RULES.prj_exports += \
+  "$${LITERAL_HASH}include <platform_paths.hrh>" \
+  "rom/bgcindicatorplugin.iby             CORE_APP_LAYER_IBY_EXPORT_PATH(bgcindicatorplugin.iby)" 
+  
+ LIBS += -lxqservice
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Message Indicator class
+ *
+ */
+
+#ifndef BGCINDICATOR_H
+#define BGCINDICATOR_H
+
+#include <QObject>
+
+#include <hbindicatorinterface.h>
+
+/**
+ * Message indicator class. 
+ * Handles client request and showing the indications. 
+ */
+class BgcIndicator : public HbIndicatorInterface
+{
+public:
+    /**
+     * Constructor
+     */
+    BgcIndicator(const QString &indicatorType);
+    
+    /**
+     * Destructor
+     */
+    ~BgcIndicator();
+    
+    /**
+     * @see HbIndicatorInterface
+     */
+    bool handleInteraction(InteractionType type);
+    
+    /**
+     * @see HbIndicatorInterface
+     */
+    QVariant indicatorData(int role) const;
+    
+protected:
+    /**
+     * @see HbIndicatorInterface
+     */
+    bool handleClientRequest(RequestType type, const QVariant &parameter);
+    
+private: 
+    /**
+     * Prepares the display name from stream.
+     * @param dataStream data stream. 
+     */
+    //void prepareDisplayName(QDataStream& dataStream);
+    
+    //HLa
+    void StartIaupdateL() const;
+    
+private:
+    /**
+     * Nr of updates
+     */
+    int mNrOfUpdates;
+    
+};
+
+#endif // BGCINDICATOR_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/inc/bgcindicatorplugin.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Message Indicator Plugin Class 
+ *
+ */
+
+#ifndef BGCINDICATORPLUGIN_H
+#define BGCINDICATORPLUGIN_H
+
+#include <QObject>
+#include <QStringList>
+#include <QVariant>
+
+#include <hbindicatorplugininterface.h>
+#include <hbindicatorinterface.h>
+
+/**
+ * Message indicator plugin class. 
+ * Main class of message indicator plugin. 
+ */
+class BgcIndicatorPlugin : public QObject, public HbIndicatorPluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(HbIndicatorPluginInterface)
+
+public:
+    /**
+     * Constructor
+     */
+     BgcIndicatorPlugin();
+     
+     /**
+      * Destructor
+      */
+    ~BgcIndicatorPlugin();
+    
+    /**
+     * @see HbIndicatorPluginInterface
+     */
+    QStringList indicatorTypes() const;
+    
+    /**
+     * @see HbIndicatorPluginInterface
+     */
+    bool accessAllowed(const QString &indicatorType,
+                               const HbSecurityInfo *securityInfo) const;   
+    /**
+     * @see HbIndicatorPluginInterface
+     */
+    HbIndicatorInterface* createIndicator(const QString &indicatorType);
+    
+    /**
+     * @see HbIndicatorPluginInterface
+     */
+    int error() const;
+    
+private:
+    Q_DISABLE_COPY(BgcIndicatorPlugin)
+    
+    /**
+     * Error value
+     */
+    int mError;
+    
+    
+    /**
+     * Indicator types 
+     * supported indicator types. 
+     */
+    QStringList mIndicatorTypes;
+};
+
+#endif // BGCINDICATORPLUGIN_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/moc_bgcindicatorplugin.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,73 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'bgcindicatorplugin.h'
+**
+** Created: Tue 9. Mar 13:36:17 2010
+**      by: The Qt Meta Object Compiler version 62 (Qt 4.6.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include "inc/bgcindicatorplugin.h"
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'bgcindicatorplugin.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 62
+#error "This file was generated using the moc from 4.6.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+static const uint qt_meta_data_BgcIndicatorPlugin[] = {
+
+ // content:
+       4,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       0,    0, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       0,       // signalCount
+
+       0        // eod
+};
+
+static const char qt_meta_stringdata_BgcIndicatorPlugin[] = {
+    "BgcIndicatorPlugin\0"
+};
+
+const QMetaObject BgcIndicatorPlugin::staticMetaObject = {
+    { &QObject::staticMetaObject, qt_meta_stringdata_BgcIndicatorPlugin,
+      qt_meta_data_BgcIndicatorPlugin, 0 }
+};
+
+#ifdef Q_NO_DATA_RELOCATION
+const QMetaObject &BgcIndicatorPlugin::getStaticMetaObject() { return staticMetaObject; }
+#endif //Q_NO_DATA_RELOCATION
+
+const QMetaObject *BgcIndicatorPlugin::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
+}
+
+void *BgcIndicatorPlugin::qt_metacast(const char *_clname)
+{
+    if (!_clname) return 0;
+    if (!strcmp(_clname, qt_meta_stringdata_BgcIndicatorPlugin))
+        return static_cast<void*>(const_cast< BgcIndicatorPlugin*>(this));
+    if (!strcmp(_clname, "HbIndicatorPluginInterface"))
+        return static_cast< HbIndicatorPluginInterface*>(const_cast< BgcIndicatorPlugin*>(this));
+    if (!strcmp(_clname, "com.nokia.hb.HbIndicatorPluginInterface/1.0"))
+        return static_cast< HbIndicatorPluginInterface*>(const_cast< BgcIndicatorPlugin*>(this));
+    return QObject::qt_metacast(_clname);
+}
+
+int BgcIndicatorPlugin::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    return _id;
+}
+QT_END_MOC_NAMESPACE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/qmakepluginstubs/bgcindicatorplugin.qtplugin	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,1 @@
+This file is a Qt plugin stub file. The real Qt plugin is located in /sys/bin. Created:2010-03-09T13:36:13
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/resources/message.svg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 30 40" width="30px" x="0px" y="0px">
+<g>
+<path d="M27.458,17.31l-0.81-0.416l0.81-0.418c0.624-0.317,0.62-1.024,0.405-1.392l-0.881-1.512   c-0.251-0.43-0.877-0.683-1.406-0.336l-0.748,0.484l0.051-0.892c0.025-0.453-0.309-1.056-0.998-1.056h-1.764   c-0.57,0-1.031,0.48-0.998,1.056l0.051,0.892l-0.748-0.484c-0.402-0.263-1.08-0.22-1.406,0.336l-0.879,1.512   c-0.219,0.376-0.126,0.735-0.049,0.916H6C4.346,16,3,17.345,3,19v12c0,1.621,1.293,2.944,2.901,2.997v2.695   c0,1.407,1.723,2.251,2.869,1.029l3.063-3.723h11.165C24.654,33.999,26,32.653,26,31V20.706c0.185,0.031,0.699-0.003,0.982-0.487   l0.881-1.516C28.278,17.989,27.701,17.435,27.458,17.31z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M27,15.588l-0.882-1.512c0,1.023-6.239,1.58-6.239,0L19,15.588l7.118,4.126L27,18.199l-2.536-1.305   L27,15.588z" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M4,26.718V31c0,1.101,0.9,2,2,2h0.901v3.692c0,0.517,0.646,0.86,1.098,0.394L11.362,33H23c1.1,0,2-0.899,2-2   v-4.282c0-0.004-0.001-0.007-0.001-0.011L4,26.718z" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 -1530 0)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="1544.5" x2="1544.5" y1="13.4609" y2="38.8497">
+<stop offset="0" style="stop-color:#FFE23D"/>
+<stop offset="0.2239" style="stop-color:#FAD337"/>
+<stop offset="0.6537" style="stop-color:#EFAB26"/>
+<stop offset="1" style="stop-color:#E48717"/>
+</linearGradient>
+<path d="M23,16H6c-1.1,0-2,0.9-2,2v12c0,1.101,0.9,2,2,2h0.901v3.692c0,0.438,0.599,0.907,1.098,0.394   L11.362,32H23c1.1,0,2-0.899,2-2V18C25,16.9,24.1,16,23,16z" fill="url(#SVGID_1_)"/>
+<rect fill="#A55B11" height="1" width="10" x="9.5" y="20.5"/>
+<rect fill="#A55B11" height="1" width="10" x="9.5" y="23.5"/>
+<rect fill="#A55B11" height="1" width="6.25" x="9.5" y="26.5"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="14.7773" x2="14.7773" y1="17" y2="32.9845">
+<stop offset="0" style="stop-color:#FFE23D"/>
+<stop offset="0.2239" style="stop-color:#FAD337"/>
+<stop offset="0.6537" style="stop-color:#EFAB26"/>
+<stop offset="1" style="stop-color:#E48717"/>
+</linearGradient>
+<path d="M25,18c0-0.572-0.243-1.089-0.631-1.454l-0.706,0.705C23.869,17.435,24,17.702,24,18   v11.999c0,0.554-0.5,1.002-1,1.002H10.891l-2.989,3.627v-3.627H6c-0.263,0-0.499-0.107-0.678-0.274   c0.009,0.009,0.013,0.021,0.022,0.03l-0.79,0.616C4.92,31.757,5.432,32,6,32h0.901v3.692c0.005,0.61,0.755,0.782,1.098,0.394   L11.362,32H23c1.172,0,2-0.947,2-2V18z" fill="url(#SVGID_2_)" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M7.901,34.628v-3.627l-1,0.999v3.692c0,0.262,0.164,0.494,0.411,0.583L7.901,34.628z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M5.345,30.757c-0.212-0.184-0.347-0.455-0.347-0.758V18c0-0.552,0.449-1.001,1.002-1.001h17   c0.254,0,0.457,0.069,0.663,0.252l0.706-0.705C24.011,16.208,23.528,16,23,16H6c-1.1,0-2,0.9-2,2v12   c0,0.532,0.211,1.017,0.552,1.376L5.345,30.757z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<path d="M7.901,31.001H6c-0.263,0-0.499-0.107-0.678-0.274c0.009,0.009,0.013,0.021,0.022,0.03l-0.79,0.616   C4.92,31.757,5.432,32,6,32h0.901L7.901,31.001z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M25,18c0-0.572-0.243-1.089-0.631-1.454l-0.706,0.705C23.869,17.435,24,17.702,24,18v11.999   c0,0.585-0.562,1.002-1,1.002H10.891l-2.989,3.627l-0.589,1.647c0.067,0.024,0.422,0.105,0.687-0.189L11.362,32H23   c0.984,0,2-0.775,2-2V18z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M25,16.619L24.25,16h-5.518c0.014,0.009,1.713,0.894,1.713,0.894l-1.675,0.86   c-0.317,0.205-0.271,0.577-0.204,0.694l0.879,1.515c0.352,0.402,0.623,0.224,0.705,0.171l1.574-1.017l-0.105,1.856   c0.021,0.438,0.361,0.527,0.498,0.527h1.764c0.4,0,0.508-0.391,0.498-0.527l-0.104-1.856L25,19.587V16.619z" fill-opacity="0.3" stroke-opacity="0.3"/>
+<polygon fill="#EA2227" points="27,17.199 26.118,18.714 23.722,17.162 23.881,20 22.117,20 22.277,17.162 19.879,18.714    19,17.199 21.537,15.895 19,14.588 19.879,13.076 22.277,14.625 22.117,11.771 23.881,11.771 23.722,14.625 26.118,13.076    27,14.588 24.464,15.895  "/>
+<rect fill="none" height="40" width="30"/>
+</g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/rom/bgcindicatorplugin.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef __BGCINDICATORPLUGIN_IBY__
+#define __BGCINDICATORPLUGIN_IBY__
+
+REM DLL
+file=ABI_DIR\UREL\bgcindicatorplugin.dll               SHARED_LIB_DIR\bgcindicatorplugin.dll UNPAGED
+data=\epoc32\data\z\resource\plugins\indicators\bgcindicatorplugin.qtplugin   \resource\plugins\indicators\bgcindicatorplugin.qtplugin
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#include <w32std.h>
+#include <apgtask.h>
+#include <apacmdln.h>
+#include <xqservicerequest.h>
+
+// #include "debugtraces.h"
+#include "bgcindicator.h" 
+
+//----------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------------
+// BgcIndicator::BgcIndicator
+// @see bgcindicator.h
+// ----------------------------------------------------------------------------
+BgcIndicator::BgcIndicator(const QString &indicatorType) :
+HbIndicatorInterface(indicatorType,
+        HbIndicatorInterface::GroupPriorityHigh,
+        InteractionActivated),
+        mNrOfUpdates(0)
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// BgcIndicator::~BgcIndicator
+// @see bgcindicator.h
+// ----------------------------------------------------------------------------
+BgcIndicator::~BgcIndicator()
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// BgcIndicator::handleInteraction
+// @see bgcindicator.h
+// ----------------------------------------------------------------------------
+bool BgcIndicator::handleInteraction(InteractionType type)
+    {
+    bool handled = false;
+    
+    if (type == InteractionActivated) 
+        {
+        StartIaupdateL();
+        handled = true;   
+        
+        emit deactivate(); 
+        }
+    return handled;
+    }
+
+// ----------------------------------------------------------------------------
+// BgcIndicator::indicatorData
+// @see bgcindicator.h
+// ----------------------------------------------------------------------------
+QVariant BgcIndicator::indicatorData(int role) const
+{
+    
+switch(role)
+    {
+    case TextRole: 
+        {
+        QString text("");
+        if ( mNrOfUpdates == 1 )
+            text.append(QString("Updates available"));
+        else
+            text.append(QString("Check for updates?"));
+        return text;        
+        }
+    case SecondaryTextRole:
+        {
+        QString text("Tap to view");
+        return text; 
+        }
+    case IconNameRole:
+        {
+        // QString iconName("z:/resource/messaging/message.svg");
+        QString iconName("c:/qgn_note_swupdate_notification.svg");
+        return iconName;
+        }
+    default: 
+        return QVariant();      
+    }
+}
+
+// ----------------------------------------------------------------------------
+// BgcIndicator::prepareDisplayName
+// @see bgcindicator.h
+// ----------------------------------------------------------------------------
+bool BgcIndicator::handleClientRequest( RequestType type, 
+        const QVariant &parameter)
+    {
+    bool handled(false);
+    switch (type) {
+        case RequestActivate:
+            {
+            mNrOfUpdates = parameter.toInt();
+            handled =  true;
+            }
+            break;
+        case RequestDeactivate:
+            {
+            emit deactivate();
+            }
+            break;
+        default:
+            break;
+    }
+
+    return handled;
+    }
+
+// ----------------------------------------------------------
+// CIAUpdateBGTimer::StartIaupdateL()
+// ----------------------------------------------------------
+void BgcIndicator::StartIaupdateL() const
+    {
+    
+    const TUint KIADUpdateLauncherUid( 0x2001FE2F );
+    _LIT(KIAUpdateLauncherExe, "iaupdatelauncher.exe" );
+    _LIT8( KRefreshFromNetworkDenied, "1" );
+    
+    //FLOG("[bgchecker] StartIaupdateL() begin");
+    RWsSession ws;   
+    User::LeaveIfError( ws.Connect() == KErrNone );
+    TApaTaskList tasklist(ws);   
+    TApaTask task = tasklist.FindApp( TUid::Uid( KIADUpdateLauncherUid ) );
+    if ( task.Exists() )
+        {
+        //FLOG("[bgchecker] StartIaupdateL() IAD launcher process found");
+        task.BringToForeground();
+        //FLOG("[bgchecker] StartIaupdateL() after task.BringToForeground()");
+        ws.Close();
+        }
+    else 
+        {
+        ws.Close();
+        RProcess process;
+        CleanupClosePushL( process );
+        User::LeaveIfError( 
+              process.Create( KIAUpdateLauncherExe, KNullDesC ) );
+              
+        CApaCommandLine* commandLine = CApaCommandLine::NewLC();
+        commandLine->SetDocumentNameL( KNullDesC );
+        commandLine->SetExecutableNameL( _L("iaupdatelauncher.exe") );
+        commandLine->SetTailEndL( KRefreshFromNetworkDenied );
+        commandLine->SetProcessEnvironmentL( process );
+        CleanupStack::PopAndDestroy( commandLine );
+       
+        process.Resume();
+        CleanupStack::PopAndDestroy( &process );    
+        }
+    //FLOG("[bgchecker] StartIaupdateL() end");
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/bgcindicatorplugin/src/bgcindicatorplugin.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#include "bgcindicatorplugin.h"
+
+#include "bgcindicator.h"
+#include <QtPlugin>
+#include <QVariant>
+
+Q_EXPORT_PLUGIN(BgcIndicatorPlugin)
+
+// ----------------------------------------------------------------------------
+// BgcIndicatorPlugin::BgcIndicatorPlugin
+// @see bgcindicatorplugin.h
+// ----------------------------------------------------------------------------
+BgcIndicatorPlugin::BgcIndicatorPlugin() : mError(0)
+{
+   
+}
+
+// ----------------------------------------------------------------------------
+// BgcIndicatorPlugin::~BgcIndicatorPlugin
+// @see bgcindicatorplugin.h
+// ----------------------------------------------------------------------------
+BgcIndicatorPlugin::~BgcIndicatorPlugin()
+{
+}
+
+// ----------------------------------------------------------------------------
+// BgcIndicatorPlugin::indicatorTypes
+// Return notification types this plugin implements
+// @see bgcindicatorplugin.h
+// ----------------------------------------------------------------------------
+QStringList BgcIndicatorPlugin::indicatorTypes() const
+{
+  QStringList types; 
+  types << "com.nokia.iaupdate.indicatorplugin/1.0";
+  return types;
+}
+
+// ----------------------------------------------------------------------------
+// BgcIndicatorPlugin::accessAllowed
+// Check if client is allowed to use notification widget
+// @see bgcindicatorplugin.h
+// ----------------------------------------------------------------------------
+bool BgcIndicatorPlugin::accessAllowed(const QString &indicatorType,
+    const HbSecurityInfo *securityInfo) const
+{
+    Q_UNUSED(indicatorType)
+    Q_UNUSED(securityInfo)
+
+    // This plugin doesn't perform operations that may compromise security.
+    // All clients are allowed to use.
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// BgcIndicatorPlugin::createIndicator
+// @see bgcindicatorplugin.h
+// ----------------------------------------------------------------------------
+HbIndicatorInterface* BgcIndicatorPlugin::createIndicator(
+        const QString &indicatorType)
+{
+    HbIndicatorInterface *indicator = new BgcIndicator(indicatorType);
+
+    return indicator;
+}
+
+// ----------------------------------------------------------------------------
+// BgcIndicatorPlugin::error
+// @see bgcindicatorplugin.h
+// ----------------------------------------------------------------------------
+int BgcIndicatorPlugin::error() const
+{
+    return mError;
+}
+
+
+
+
--- a/iaupdate/IAD/engine/bwins/iaupdateengineu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/bwins/iaupdateengineu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -87,4 +87,5 @@
 	?InternalizeL@TIAUpdateVersion@@QAEXABVTDesC16@@@Z @ 86 NONAME ; void TIAUpdateVersion::InternalizeL(class TDesC16 const &)
 	?SetToFloor@TIAUpdateVersion@@QAEXXZ @ 87 NONAME ; void TIAUpdateVersion::SetToFloor(void)
 	?SetToRoof@TIAUpdateVersion@@QAEXXZ @ 88 NONAME ; void TIAUpdateVersion::SetToRoof(void)
+	?IsWidgetInstalledL@IAUpdateUtils@@YAHABVTDesC16@@AAVTIAUpdateVersion@@@Z @ 89 NONAME ; int IAUpdateUtils::IsWidgetInstalledL(class TDesC16 const &, class TIAUpdateVersion &)
 
--- a/iaupdate/IAD/engine/controller/inc/iaupdatebasenodeimpl.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/inc/iaupdatebasenodeimpl.h	Fri Apr 16 15:05:20 2010 +0300
@@ -64,6 +64,11 @@
      * @see MIAUpdateBaseNode::Uid
      **/
     virtual const TUid& Uid() const;
+	
+	/**
+     * @see MIAUpdateBaseNode::Identifier
+     **/
+    virtual const TDesC& Identifier() const;
 
     /**
      * @see MIAUpdateBaseNode::Name
@@ -136,6 +141,11 @@
     virtual void SetInstallStatusToPurchaseHistoryL( 
         TInt aErrorCode, TBool aForceVisibleInHistory );
     
+    /**
+     * @see MIAUpdateBaseNode::Mime
+     */
+    virtual const TDesC& Mime() const;
+    
     
 public: // ** New functions
 
@@ -277,6 +287,7 @@
     HBufC*                              iDescription;
     HBufC*                              iMime;
     TUid                                iUid;
+    HBufC*                              iIdentifier;
     TIAUpdateVersion                    iVersion;
     CIAUpdateNodeDetails*               iDetails;
     TBool                               iSelected;
--- a/iaupdate/IAD/engine/controller/inc/iaupdatectrlconsts.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/inc/iaupdatectrlconsts.h	Fri Apr 16 15:05:20 2010 +0300
@@ -55,7 +55,7 @@
      *
      * @since S60 v3.2
      */
-    _LIT( KSoftwareVersion, "2.0.8" );
+    _LIT( KSoftwareVersion, "2.1.0" );
     
     /**
      * Product code value that is used when emulator is used.
--- a/iaupdate/IAD/engine/controller/inc/iaupdatenodecontainer.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/inc/iaupdatenodecontainer.h	Fri Apr 16 15:05:20 2010 +0300
@@ -200,6 +200,9 @@
     // If same version of the node is installed, makes it hidden.
     TBool InstallCheckL( CIAUpdateNode& aNode ) const;
 
+    // Checks if  the head node ids / identifers are equal
+    TBool NodeExists( const CIAUpdateNode& aNode, 
+                      const CIAUpdateNode& tmpNode ) const;
     
 private: // data
 
--- a/iaupdate/IAD/engine/controller/inc/iaupdateprotocolconsts.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/inc/iaupdateprotocolconsts.h	Fri Apr 16 15:05:20 2010 +0300
@@ -199,6 +199,11 @@
      * MIME for FOTA DP2 firmware update.
      */
     _LIT( KMimeFotiNsu, "application/x-nokia-foti-nsu" );
+    
+    /**
+     * MIME for widgets
+     */
+    _LIT( KMimeWidget, "application/x-nokia-widget" );
 
     }
     
--- a/iaupdate/IAD/engine/controller/src/iaupdatebasenodeimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/src/iaupdatebasenodeimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -33,8 +33,11 @@
 #include "iaupdatecontentoperationmanager.h"
 #include "iaupdateutils.h"
 #include "iaupdatectrlnodeconsts.h"
+#include "iaupdateprotocolconsts.h"
 #include "iaupdatedebug.h"
-#include "iaupdateprotocolconsts.h"
+
+
+
 
 
 // -----------------------------------------------------------------------------
@@ -102,7 +105,20 @@
         {
         iMime = contentInfo->MimeType().AllocL();
         iVersion.InternalizeL( contentInfo->Version() );
-        iUid = contentInfo->Uid(); 
+
+        //Initialize iUid or iIdentifier according to the mime-type
+        iUid = KNullUid;
+
+        if ( iMime->Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
+            {
+            iIdentifier = contentInfo->Identifier().AllocL();
+            }
+        else
+           {
+           iUid = contentInfo->Uid();
+           iIdentifier = KNullDesC().AllocL();
+           }
+
         // Release content info.
         // So, we can later check if it still exists and then get 
         // new one if it exists.
@@ -144,6 +160,7 @@
     delete iName;    
     delete iDescription;
     delete iMime;
+	delete iIdentifier;
     delete iDetails;
     
     IAUPDATE_TRACE("[IAUPDATE] CIAUpdateBaseNode::~CIAUpdateBaseNode() end");
@@ -191,7 +208,17 @@
     IAUPDATE_TRACE_1("[IAUPDATE] CIAUpdateBaseNode::Uid() = %x", iUid);
     return iUid;
     }
-   
+
+
+// ---------------------------------------------------------------------------
+// CIAUpdateBaseNode::Identifier
+// 
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIAUpdateBaseNode::Identifier() const
+    {
+    return *iIdentifier;
+    }
     
 // ---------------------------------------------------------------------------
 // CIAUpdateBaseNode::Name
@@ -370,6 +397,17 @@
     return;
     }
 
+// ---------------------------------------------------------------------------
+// CIAUpdateBaseNode::Mime
+// 
+// ---------------------------------------------------------------------------
+// 
+const TDesC& CIAUpdateBaseNode::Mime() const
+    {
+    return *iMime;
+    }
+
+
 
 // ---------------------------------------------------------------------------
 // Public functions
@@ -435,18 +473,29 @@
 // 
 TBool CIAUpdateBaseNode::Equals( const CIAUpdateBaseNode& aNode ) const
     {
-    if ( aNode.MetaNamespace() == MetaNamespace()
-            && aNode.MetaId() == MetaId()
-         || ( aNode.Uid() == Uid()
-            && aNode.Version() == Version() 
-            && aNode.iMime->Match( IAUpdateProtocolConsts::KMimeServicePackPattern()) == KErrNotFound ) ) 
+    TBool equals = EFalse;
+    if ( iMime->Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
         {
-        return ETrue;
+        if ( aNode.MetaNamespace() == MetaNamespace()
+                && aNode.MetaId() == MetaId()
+             || ( aNode.Identifier() == Identifier() 
+                && aNode.Version() == Version() ) )
+            {
+            equals = ETrue;
+            }
         }
-    else 
+    else
         {
-        return EFalse;
+        if ( aNode.MetaNamespace() == MetaNamespace()
+                && aNode.MetaId() == MetaId()
+             || ( aNode.Uid() == Uid()
+                && aNode.Version() == Version() 
+                && aNode.iMime->Match( IAUpdateProtocolConsts::KMimeServicePackPattern()) == KErrNotFound ) ) 
+            {
+            equals = ETrue;
+            }
         }
+    return equals;
     }
 
 
--- a/iaupdate/IAD/engine/controller/src/iaupdatenodecontainer.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/src/iaupdatenodecontainer.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -32,6 +32,11 @@
 #include "iaupdatedebug.h"
 
 
+#include "ncdnodecontentinfo.h"
+#include "ncdnode.h"
+#include "iaupdateprotocolconsts.h"
+
+
 // Constant that is used to inform that dependency node
 // was not found when dependencies were checked.
 const TInt KDependencyNotFound( -1 );
@@ -665,8 +670,10 @@
         
         for ( TInt i = 0; i < iHeadNodes.Count(); ++i )
             {
-            CIAUpdateNode& tmpNode( *iHeadNodes[ i ] );            
-            if( aNode.Uid() == tmpNode.Uid() && aNode.Type() != MIAUpdateNode::EPackageTypeServicePack ) 
+            CIAUpdateNode& tmpNode( *iHeadNodes[ i ] );   
+            
+            if( NodeExists( aNode, tmpNode ) &&  
+                  aNode.Type() != MIAUpdateNode::EPackageTypeServicePack ) 
                 {
                 IAUPDATE_TRACE("[IAUPDATE] Head node already in the list.");
                 
@@ -726,7 +733,8 @@
     {
     IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNodeContainer::ReplaceRecommendedL() begin");
     
-    if ( aCurrentNode.Uid() != aNewNode.Uid() )
+    
+    if ( !NodeExists( aCurrentNode, aNewNode ) )
         {
         IAUPDATE_TRACE("[IAUPDATE] LEAVE: Nodes do not match.");
         User::Leave( KErrArgument );
@@ -766,10 +774,11 @@
     IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNodeContainer::PackageTypeAcceptedL() begin");
     
     if ( aNode.Type() == MIAUpdateNode::EPackageTypeServicePack
-         || aNode.Type() == MIAUpdateNode::EPackageTypeSA )
+         || aNode.Type() == MIAUpdateNode::EPackageTypeSA 
+         || aNode.Type() == MIAUpdateNode::EPackageTypeWidget )
         {
-        // Service packs and SA type always accepted.
-        IAUPDATE_TRACE("[IAUPDATE] Upgrade packet type SA or node is service pack");
+        // Service packs, SA types and Widgets are always accepted.
+        IAUPDATE_TRACE("[IAUPDATE] Upgrade packet type SA, service pack or widget");
         IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNodeContainer::PackageTypeAcceptedL() end: ETrue");
         return ETrue;
         }
@@ -1053,9 +1062,17 @@
         {
         IAUPDATE_TRACE("[IAUPDATE] Not a service pack");
 
+     
         TIAUpdateVersion installedVersion;
-        TBool installed( 
-            IAUpdateUtils::IsAppInstalledL( aNode.Uid(), installedVersion ) );
+        TBool installed = EFalse;
+        if ( aNode.Mime().Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
+            {
+            installed = IAUpdateUtils::IsWidgetInstalledL( aNode.Identifier(), installedVersion );
+            }
+        else
+            {
+            installed = IAUpdateUtils::IsAppInstalledL( aNode.Uid(), installedVersion );
+            }
         // Notice that here we let the check pass also if node has the same version
         // as the installed content. By accepting same version, the dependency chains
         // will contain the currently installed node dependency information. Then,
@@ -1087,3 +1104,33 @@
 
     return checkPassed;
     }
+
+// Checks if  the head node ids / identifers are equal
+TBool CIAUpdateNodeContainer::NodeExists( const CIAUpdateNode& aNode, 
+                                          const CIAUpdateNode& tmpNode )const 
+    {
+    IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNodeContainer::NodeExists begin");
+    
+    TBool exists = EFalse;
+
+    if ( aNode.Mime().Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
+        {
+        if ( aNode.Identifier() == tmpNode.Identifier() )
+            {
+            exists = ETrue;
+            }
+        }
+    else
+        {
+        if ( aNode.Uid() == tmpNode.Uid() )
+            {
+            exists = ETrue;
+            }
+        }
+    
+    
+    IAUPDATE_TRACE_1("[IAUPDATE] CIAUpdateNodeContainer::NodeExists end: %d",
+                     exists);
+    
+    return exists;
+    }
--- a/iaupdate/IAD/engine/controller/src/iaupdatenodeimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/src/iaupdatenodeimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -20,6 +20,7 @@
 #include <ncdnodepurchase.h>
 #include <ncdnodedownload.h>
 #include <ncdnodeinstall.h>
+#include <ncdnodecontentinfo.h>
 
 #include "iaupdatenodeimpl.h"
 #include "iaupdatenodeobserver.h"
@@ -28,9 +29,11 @@
 #include "iaupdatecontrollerimpl.h"
 #include "iaupdateutils.h"
 #include "iaupdatecontentoperationmanager.h"
+#include "iaupdateprotocolconsts.h"
 #include "iaupdatedebug.h"
 
 
+
 // -----------------------------------------------------------------------------
 // CIAUpdateNode::NewLC
 // Two-phased constructor.
@@ -150,9 +153,18 @@
 //    
 MIAUpdateNode::TPackageType CIAUpdateNode::Type() const
     {
+    MIAUpdateNode::TPackageType packageType;
+    if ( Mime().Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
+        {
+        packageType = MIAUpdateNode::EPackageTypeWidget;
+        }
+    else
+        {
+        packageType = Details().ContentType();
+        }
     IAUPDATE_TRACE_1("[IAUPDATE] CIAUpdateNode::Type() = %d", 
-                     Details().ContentType());
-    return Details().ContentType();
+                             packageType );
+    return packageType;
     }
 
 
@@ -758,14 +770,26 @@
 void CIAUpdateNode::AddDependantL( CIAUpdateNode& aDependantNode ) 
     {
 	IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNode::AddDependantL() begin");
+	
 
 	for ( TInt i = 0; i < iDependants.Count(); ++i )
 	    {
 	    CIAUpdateNode* node( iDependants[ i ] );
-	    if ( node->Uid() == aDependantNode.Uid() )
+	    if ( node->Mime().Compare( IAUpdateProtocolConsts::KMimeWidget) == 0 )
 	        {
-	        // Corresponding node is already in the array.
-	        return;
+	        if ( node->Identifier() == aDependantNode.Identifier() )
+	            {
+	            // Corresponding node is already in the array.
+	            return;
+	            }
+	        }
+	    else 
+	        {
+	        if ( node->Uid() == aDependantNode.Uid() )
+	            {
+	            // Corresponding node is already in the array.
+	            return;
+	            }
 	        }
 	    }
 
@@ -898,7 +922,18 @@
     IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNode::IsInstalledL() begin");
 
     TIAUpdateVersion installedVersion;
-    TBool installed( IAUpdateUtils::IsAppInstalledL( Uid(), installedVersion ) );
+
+    TBool installed = EFalse;
+        
+    if ( Mime().Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
+        {
+        installed = IAUpdateUtils::IsWidgetInstalledL( Identifier(), installedVersion );
+        }
+    else 
+        {
+        installed = IAUpdateUtils::IsAppInstalledL( Uid(), installedVersion );
+        }    
+		
     IAUPDATE_TRACE_3("CIAUpdateNode::IsInstalledL() Installed version  %d.%d.%d", 
             installedVersion.iMajor, 
             installedVersion.iMinor, 
--- a/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -37,7 +37,7 @@
 #include <ncdpurchaseoption.h>
 
 #include <catalogsutils.h>
-
+#include <WidgetRegistryClient.h>
 
 //Constants
 const TInt KSpaceMarginal( 100 * 1024 );
@@ -292,6 +292,53 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+// IAUpdateUtils::IsWidgetInstalledL
+// Check existance of widget and request the version info if the widget has been installed
+// The Widget registry API is used here.
+// -----------------------------------------------------------------------------
+
+EXPORT_C TBool IAUpdateUtils::IsWidgetInstalledL(const TDesC& aIdentifier, TIAUpdateVersion& aVersion )
+    {
+    RWidgetRegistryClientSession widgetRegistry;
+
+    User::LeaveIfError( widgetRegistry.Connect() );
+    
+    CleanupClosePushL( widgetRegistry );
+    
+    RPointerArray<CWidgetInfo> widgetInfoArr;
+    CleanupResetAndDestroyPushL( widgetInfoArr );
+    TInt err = widgetRegistry.InstalledWidgetsL(widgetInfoArr); 
+    
+    for( TInt i( widgetInfoArr.Count() - 1 ); i >= 0; --i ) 
+        {
+        CWidgetInfo* widgetInfo( widgetInfoArr[i] );  
+        
+        CWidgetPropertyValue* BundleId = widgetRegistry.GetWidgetPropertyValueL(widgetInfo->iUid, EBundleIdentifier );
+        CleanupStack::PushL( BundleId );
+        
+        if( aIdentifier.Compare( *(BundleId->iValue.s) )== 0 )
+            {
+            CWidgetPropertyValue* version = widgetRegistry.GetWidgetPropertyValueL(widgetInfo->iUid, EBundleVersion );
+            CleanupStack::PushL( version );
+            
+            DesToVersionL(*(version->iValue.s), aVersion.iMajor, aVersion.iMinor, aVersion.iBuild );
+            
+            CleanupStack::PopAndDestroy( version );
+            CleanupStack::PopAndDestroy( BundleId );
+            CleanupStack::PopAndDestroy( &widgetInfoArr );
+            CleanupStack::PopAndDestroy( &widgetRegistry);
+            return ETrue;
+            }
+        CleanupStack::PopAndDestroy( BundleId );
+        }
+    
+    CleanupStack::PopAndDestroy( &widgetInfoArr );
+    CleanupStack::PopAndDestroy( &widgetRegistry);
+    return EFalse;
+      
+     
+    }
 
 // -----------------------------------------------------------------------------
 // IAUpdateUtils::SpaceAvailableInInternalDrivesL
--- a/iaupdate/IAD/engine/eabi/iaupdateengineu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/eabi/iaupdateengineu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -217,4 +217,5 @@
 	_ZThn4_N21CIAUpdateXmlSubParser22OnIgnorableWhiteSpaceLERK6TDesC8i @ 216 NONAME ; #<thunk>#
 	_ZThn4_N21CIAUpdateXmlSubParser24OnProcessingInstructionLERK6TDesC8S2_i @ 217 NONAME ; #<thunk>#
 	_ZThn4_N21CIAUpdateXmlSubParser7OnErrorEi @ 218 NONAME ; #<thunk>#
+	_ZN13IAUpdateUtils18IsWidgetInstalledLERK7TDesC16R16TIAUpdateVersion @ 219 NONAME
 
--- a/iaupdate/IAD/engine/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -26,7 +26,8 @@
 
 PRJ_EXPORTS
 // Config file
-iaupdateengineconfig.xml        /epoc32/release/winscw/udeb/z/private/2000F85A/iaupdateengineconfig.xml
-iaupdateengineconfig.xml        /epoc32/release/winscw/urel/z/private/2000F85A/iaupdateengineconfig.xml
-iaupdateengineconfig.xml        /epoc32/data/z/private/2000F85A/iaupdateengineconfig.xml
+iaupdateengineconfig.xml            /epoc32/release/winscw/udeb/z/private/2000F85A/iaupdateengineconfig.xml
+iaupdateengineconfig.xml            /epoc32/release/winscw/urel/z/private/2000F85A/iaupdateengineconfig.xml
+iaupdateengineconfig.xml            /epoc32/data/z/private/2000F85A/iaupdateengineconfig.xml
+iaupdateengineconfig_testing.xml    /epoc32/data/z/private/2000F85A/iaupdateengineconfig_testing.xml
 
--- a/iaupdate/IAD/engine/group/iaupdateengine.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/group/iaupdateengine.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -124,6 +124,9 @@
 // Updater files dll
 LIBRARY         iaupdaterfiles.lib
 
+// widget registry API library
+LIBRARY         widgetregistryclient.lib
+
 // NCD Engine
 LIBRARY         ncdengine_20019119.lib
 LIBRARY         ncdutils_20019119.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/engine/group/iaupdateengineconfig_testing.xml	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,19 @@
+<!-- IAD Engine Configuration for test environment -->
+
+<iaupdateEngineConfig>
+
+    <!-- URI to the production CDB server -->
+    <masterServer uri="http://arrowcdb.ncd.nokia.com/"/>
+    
+    <!-- Provisioning value can be used in CDB to decide
+         where to direct the client and what content to give.
+         This can be used for example for testing purposes
+         when connection should be directed to different 
+         CGWs -->
+    <provisioning value="arrow"/>
+
+    <!-- Client role defines what content CGW should give
+         to the client. -->
+    <clientRole value="testing"/>
+  
+</iaupdateEngineConfig>
--- a/iaupdate/IAD/engine/inc/iaupdatebasenode.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/inc/iaupdatebasenode.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -63,7 +63,13 @@
      * @return const TUid& Uid of this node
      **/
     virtual const TUid& Uid() const = 0;
-        
+	
+	/*
+	 * This returns the identifier of widget. Normally it is a string --> "com.yiibu.hue"
+	 * This is the unique identifier of widget before installing on top of Symbian platform.
+     */
+     virtual const TDesC& Identifier() const = 0;    
+
     /**
      * @return const TDesC& The name of this node
      **/
@@ -161,6 +167,11 @@
      */
     virtual void SetInstallStatusToPurchaseHistoryL( 
         TInt aErrorCode, TBool aForceVisibleInHistory ) = 0;
+    
+    /**
+    * @return const TDesC& The mime type of this node
+    **/
+    virtual const TDesC& Mime() const = 0;
 
     
 protected:
--- a/iaupdate/IAD/engine/inc/iaupdatenode.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/inc/iaupdatenode.h	Fri Apr 16 15:05:20 2010 +0300
@@ -69,8 +69,13 @@
          * So, its content is given as separate packages
          * that are included in this service pack.
          */
-        EPackageTypeServicePack
-
+        EPackageTypeServicePack,
+        
+       /** 
+        * The node content is widget.
+        */
+        EPackageTypeWidget
+       
         };
 
 
--- a/iaupdate/IAD/engine/inc/iaupdateutils.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/engine/inc/iaupdateutils.h	Fri Apr 16 15:05:20 2010 +0300
@@ -96,6 +96,11 @@
  **/
 IMPORT_C TBool IsAppInstalledL( const TUid& aUid, TIAUpdateVersion &aVersion );
 
+/**
+ * This function is added to check whether certain widget with given identifier are installed
+ * the function calls widget registry API
+ **/
+IMPORT_C TBool IsWidgetInstalledL( const TDesC& aIdentifier, TIAUpdateVersion &aVersion );
 
 IMPORT_C TBool SpaceAvailableInInternalDrivesL( 
                                          RPointerArray<MIAUpdateNode>& aNodes );
--- a/iaupdate/IAD/ui/group/iaupdate.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/group/iaupdate.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -69,6 +69,7 @@
 SOURCE            iaupdateinstallationlistener.cpp
 SOURCE            iaupdatedeputils.cpp
 SOURCE            iaupdateuitimer.cpp
+SOURCE            iaupdatenodeid.cpp
 
 USERINCLUDE       ../inc
 USERINCLUDE       ../../tools/inc
--- a/iaupdate/IAD/ui/group/iaupdate.rss	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/group/iaupdate.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -698,6 +698,11 @@
     buf = qtn_swupdate_cannot_omit;
     }
 
+RESOURCE TBUF r_iaupdate_main_device_fw
+    {
+    buf  = qtn_swupdate_main_device_fw;
+    }
+
 //background check strings
 
 RESOURCE LBUF r_iaupdate_update_available
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/ui/inc/iaupdatenodeid.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   This module contains the header file of CIAUpdateNodeId
+*                class.
+*/
+
+
+
+
+#ifndef IAUPDATENODEID_H
+#define IAUPDATENODEID_H
+
+//INCLUDES
+#include <e32base.h>
+
+#include "iaupdateanynode.h"
+
+
+/**
+ *
+ */
+class CIAUpdateNodeId : public CBase
+    {
+
+public:
+
+    static CIAUpdateNodeId* NewL();
+
+    static CIAUpdateNodeId* NewLC();
+    
+    
+    virtual ~CIAUpdateNodeId();
+
+    const TDesC& Id() const;
+    void SetIdL( const TDesC& aId );
+    
+    const TDesC& Namespace() const;
+    void SetNamespaceL( const TDesC& aNamespace );
+    
+    MIAUpdateAnyNode::TNodeType NodeType() const;
+    void SetNodeType( MIAUpdateAnyNode::TNodeType aNodeType );
+    
+    TBool Selected() const;
+    void SetSelected( TInt aSelected );
+    
+
+private:
+
+    // Prevent these if not implemented
+    CIAUpdateNodeId( const CIAUpdateNodeId& aObject );
+    CIAUpdateNodeId& operator =( const CIAUpdateNodeId& aObject );
+
+
+    CIAUpdateNodeId();
+    
+    void ConstructL();
+
+
+private: // data
+    
+    HBufC* iId;
+    HBufC* iNamespace;
+    MIAUpdateAnyNode::TNodeType  iNodeType;
+    TBool                        iSelected;
+    
+    };
+		
+#endif // IAUPDATENODEID_H
+
--- a/iaupdate/IAD/ui/inc/iaupdateuicontroller.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/inc/iaupdateuicontroller.h	Fri Apr 16 15:05:20 2010 +0300
@@ -47,15 +47,7 @@
 class MIAUpdateUiControllerObserver;
 class MIAUpdateHistory;
 class MIAUpdateFwNode;
-
-
-struct SIAUpdateNodeId
-    {
-    MIAUpdateAnyNode::TNodeType  iNodeType;
-    TUid                         iPackageUid;
-    TIAUpdateVersion             iVersion;	
-    TBool                        iSelected;
-    };
+class CIAUpdateNodeId;
 
 
 // CLASS DECLARATION
@@ -559,7 +551,7 @@
 
     RPointerArray< MIAUpdateFwNode > iFwNodes;   
    
-    CArrayFix<SIAUpdateNodeId>* iPreviousSelections;
+    RPointerArray<CIAUpdateNodeId> iPreviousSelections;
     
     RPointerArray<MIAUpdateNode> iServicePackNodes;
  
--- a/iaupdate/IAD/ui/src/iaupdatedetailsdialog.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/src/iaupdatedetailsdialog.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -143,13 +143,13 @@
 
     TPtr ptr = iBuf->Des();
     
-    //TPtrC name =         iParam->iNode->Base().Name();
+    TPtrC name =         iParam->iNode->Base().Name();
     TPtrC description =  iParam->iNode->Base().Description();
     TIAUpdateVersion version = iParam->iNode->Base().Version();
     TInt contentSize =   iParam->iNode->Base().ContentSizeL();
     
     
-    /*HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_APP_NAME );
+    HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_APP_NAME );
     ptr.Append( KOpeningBoldTag );
     ptr.Append( *hBuf );
     ptr.Append( KClosingBoldTag );
@@ -158,9 +158,9 @@
     ptr.Append( KNewLine );
     ptr.Append( name );
     ptr.Append( KNewLine );
-    ptr.Append( KNewLine );*/
-    
-    HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_DESCRIPTION );
+    ptr.Append( KNewLine );
+       
+    hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_DESCRIPTION );
     ptr.Append( KOpeningBoldTag );
     ptr.Append( *hBuf );
     ptr.Append( KClosingBoldTag );
@@ -211,9 +211,9 @@
 	{
 	ConstructTextL();
 
-	//HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_TITLE );
-	IAUpdateDialogUtil::ShowMessageQueryL( iParam->iNode->Base().Name(), *iBuf );
-	//CleanupStack::PopAndDestroy( hBuf );
+	HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_TITLE );
+	IAUpdateDialogUtil::ShowMessageQueryL( *hBuf, *iBuf );
+	CleanupStack::PopAndDestroy( hBuf );
     
     return ETrue;
 	}
--- a/iaupdate/IAD/ui/src/iaupdatefwdetailsdialog.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/src/iaupdatefwdetailsdialog.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -35,6 +35,8 @@
 const TInt KMegaByte = 1024 * 1024;
 const TInt KMaxShownInKiloBytes = 10 * KMegaByte;
 
+_LIT( KSpace, " ");
+
 
 /*******************************************************************************
  * class CIAUpdateDetailsDialog
@@ -139,8 +141,29 @@
  
     TInt contentSize =   iFwNode->Base().ContentSizeL();
      
+    HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_APP_NAME );
+    ptr.Append( KOpeningBoldTag );
+    ptr.Append( *hBuf );
+    ptr.Append( KClosingBoldTag );
+    CleanupStack::PopAndDestroy( hBuf );
     
-    HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_DESCRIPTION );
+    HBufC* firmwareHeader = StringLoader::LoadLC(R_IAUPDATE_MAIN_DEVICE_FW);
+    HBufC* firmwarename = HBufC::NewLC( iFwNode->Base().Name().Length() +
+                                        KSpace.iTypeLength + 
+                                        firmwareHeader->Length() );
+    firmwarename->Des() = iFwNode->Base().Name();
+    firmwarename->Des() += KSpace();
+    firmwarename->Des() += *firmwareHeader;
+     
+    ptr.Append( KNewLine );
+    ptr.Append( *firmwarename );
+    CleanupStack::PopAndDestroy( firmwarename );
+    CleanupStack::PopAndDestroy( firmwareHeader );
+    ptr.Append( KNewLine );
+    ptr.Append( KNewLine );
+  
+    
+    hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_DESCRIPTION );
     ptr.Append( KOpeningBoldTag );
     ptr.Append( *hBuf );
     ptr.Append( KClosingBoldTag );
@@ -195,13 +218,12 @@
 TBool CIAUpdateFwDetailsDialog::ShowDialogL()
 	{
 	ConstructTextL();
-	HBufC* firmwarename = iFwNode->Base().Name().AllocLC();
-	IAUpdateDialogUtil::ShowMessageQueryL( *firmwarename, *iBuf );
-    CleanupStack::PopAndDestroy( firmwarename );
+	HBufC* hBuf = StringLoader::LoadLC( R_IAUPDATE_DETAILS_DIALOG_TITLE );
+	IAUpdateDialogUtil::ShowMessageQueryL( *hBuf, *iBuf );
+	CleanupStack::PopAndDestroy( hBuf );
     return ETrue;
 	}
 
-
 // -----------------------------------------------------------------------------
 // CIAUpdateFwDetailsDialog::FileSizeTextLC
 // 
--- a/iaupdate/IAD/ui/src/iaupdatemaincontainer.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/src/iaupdatemaincontainer.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -129,7 +129,8 @@
     iEikonEnv->CreateResourceReaderLC( reader, R_IAUPDATE_UPDATES_LIST );
     iListBox->ConstructFromResourceL( reader );
     CleanupStack::PopAndDestroy();
-    
+
+    iListBox->EnableStretching( EFalse );
     iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
 
     // Setup scroll bars
@@ -426,19 +427,17 @@
             CleanupStack::PopAndDestroy( buffer );
             CleanupStack::PopAndDestroy( name );
             }
-
         
         if ( node->NodeType() == MIAUpdateAnyNode::ENodeTypeFw ) 
             {
-            MIAUpdateFwNode* fwnode = static_cast<MIAUpdateFwNode*>( node );
+            HBufC* firmwareHeader = StringLoader::LoadLC(R_IAUPDATE_MAIN_DEVICE_FW);
             HBufC* firmwarename = HBufC::NewLC( node->Base().Name().Length() +
-                                                KSpace.iTypeLength +
-                                                fwnode->FwVersion1().Length() );  
+                                                KSpace.iTypeLength + 
+                                                firmwareHeader->Length() );
             firmwarename->Des() = node->Base().Name();
             firmwarename->Des() += KSpace();
-            firmwarename->Des() += fwnode->FwVersion1();
-            
-            
+            firmwarename->Des() += *firmwareHeader;
+                     
             HBufC* buffer = HBufC::NewLC( KOne.iTypeLength +
                                           KTabulator.iTypeLength + 
                                           firmwarename->Length() + 
@@ -457,6 +456,7 @@
             iItemTextArray->AppendL( *buffer );
             CleanupStack::PopAndDestroy( buffer );
             CleanupStack::PopAndDestroy( firmwarename );
+            CleanupStack::PopAndDestroy( firmwareHeader );
             }
         
         CleanupStack::PopAndDestroy( importanceDescription );
--- a/iaupdate/IAD/ui/src/iaupdatemainview.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/src/iaupdatemainview.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -486,13 +486,13 @@
         //There are selected items already and type are different with the current one
         if ( selectedNodes.Count() > 0 && (iAllNodes[aIndex]->NodeType() != selectedNodes[0]->NodeType() ) )
             {       
-            HBufC* msgText = StringLoader::LoadLC(R_IAUPDATE_FIRMWARE_WITH_OTHERS);
+            /*HBufC* msgText = StringLoader::LoadLC(R_IAUPDATE_FIRMWARE_WITH_OTHERS);
 
             CAknQueryDialog* dlg = CAknQueryDialog::NewL();
        
             dlg->ExecuteLD( R_IAUPDATE_INFORMATION_QUERY, *msgText );
             
-            CleanupStack::PopAndDestroy( msgText );
+            CleanupStack::PopAndDestroy( msgText );*/
             
             //clean all of the current selection(s)
             iContainer->CleanAllSelection();
--- a/iaupdate/IAD/ui/src/iaupdatenodefilter.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/src/iaupdatenodefilter.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -204,6 +204,31 @@
                 }
             else
                 {
+                if ( aFwNodes.Count() == 1 && aFwNodes[0]->FwType() == MIAUpdateFwNode::EFotiNsu )
+                    {
+                    aFwNodes[0]->Base().SetSelected( EFalse );
+                    }
+                else
+                    {
+                    for ( TInt i = 0; i < aFwNodes.Count(); ++i )   
+                        {
+                        aFwNodes[i]->Base().SetSelected( ETrue );
+                        }
+                    for ( TInt i = 0; i < aNodes.Count(); ++i )   
+                        {
+                        aNodes[i]->Base().SetSelected( EFalse );
+                        }
+                    }
+                }
+            }
+        else
+            {
+            if ( aFwNodes.Count() == 1 && aFwNodes[0]->FwType() == MIAUpdateFwNode::EFotiNsu )
+                {
+                aFwNodes[0]->Base().SetSelected( EFalse );
+                }
+            else
+                {
                 for ( TInt i = 0; i < aFwNodes.Count(); ++i )   
                     {
                     aFwNodes[i]->Base().SetSelected( ETrue );
@@ -214,17 +239,6 @@
                     }
                 }
             }
-        else
-            {
-            for ( TInt i = 0; i < aFwNodes.Count(); ++i )   
-                {
-                aFwNodes[i]->Base().SetSelected( ETrue );
-                }
-            for ( TInt i = 0; i < aNodes.Count(); ++i )   
-                {
-                aNodes[i]->Base().SetSelected( EFalse );
-                }
-            }
         }
     else
         {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/ui/src/iaupdatenodeid.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,179 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   This module contains the implementation of CIAUpdateNodeId
+*                class member functions.
+*/
+
+
+
+
+#include "iaupdatenodeid.h"
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::NewL
+//
+// -----------------------------------------------------------------------------
+//
+CIAUpdateNodeId* CIAUpdateNodeId::NewL()
+    {
+    CIAUpdateNodeId* self =
+        CIAUpdateNodeId::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::NewLC
+//
+// -----------------------------------------------------------------------------
+//
+CIAUpdateNodeId* CIAUpdateNodeId::NewLC()
+    {
+    CIAUpdateNodeId* self =
+        new( ELeave) CIAUpdateNodeId();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::CIAUpdateNodeId
+//
+// -----------------------------------------------------------------------------
+//
+CIAUpdateNodeId::CIAUpdateNodeId()
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::ConstructL
+//
+// -----------------------------------------------------------------------------
+//
+void CIAUpdateNodeId::ConstructL()
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::~CIAUpdateNodeId
+//
+// -----------------------------------------------------------------------------
+//
+CIAUpdateNodeId::~CIAUpdateNodeId()
+    {
+    delete iId;
+    delete iNamespace;
+    }
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::Id
+//
+// -----------------------------------------------------------------------------
+//
+const TDesC& CIAUpdateNodeId::Id() const
+    {
+    if ( !iId )
+        {
+        return KNullDesC;
+        }
+        
+    return *iId;
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::SetIdL
+//
+// -----------------------------------------------------------------------------
+//
+void CIAUpdateNodeId::SetIdL( const TDesC& aId )
+    {
+    HBufC* tmp( aId.AllocL() );
+    delete iId;
+    iId = tmp;
+    }
+    
+    
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::Namespace
+//
+// -----------------------------------------------------------------------------
+//
+const TDesC& CIAUpdateNodeId::Namespace() const
+    {
+    if ( !iNamespace )
+        {
+        return KNullDesC;
+        }
+    
+    return *iNamespace;
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::SetNamespaceL
+//
+// -----------------------------------------------------------------------------
+//
+void CIAUpdateNodeId::SetNamespaceL( const TDesC& aNamespace )
+    {
+    HBufC* tmp( aNamespace.AllocL() );
+    delete iNamespace;
+    iNamespace = tmp;
+    }
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::NodeType
+//
+// -----------------------------------------------------------------------------
+//
+MIAUpdateAnyNode::TNodeType CIAUpdateNodeId::NodeType() const
+    {
+    return iNodeType;
+    }
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::SetNodeType
+//
+// -----------------------------------------------------------------------------
+//
+void CIAUpdateNodeId::SetNodeType( MIAUpdateAnyNode::TNodeType aNodeType )
+    {
+    iNodeType = aNodeType;
+    }
+
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::Selected
+//
+// -----------------------------------------------------------------------------
+//
+TBool CIAUpdateNodeId::Selected() const
+    {
+    return iSelected;
+    }
+    
+// -----------------------------------------------------------------------------
+// CIAUpdateNodeId::SetSelected
+//
+// -----------------------------------------------------------------------------
+//    
+void CIAUpdateNodeId::SetSelected( TInt aSelected )
+    {
+    iSelected = aSelected; 
+    }
--- a/iaupdate/IAD/ui/src/iaupdateuicontroller.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/IAD/ui/src/iaupdateuicontroller.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -63,6 +63,7 @@
 #include "iaupdatefileconsts.h"
 #include "iaupdatefirsttimeinfo.h"
 #include "iaupdaterefreshhandler.h"
+#include "iaupdatenodeid.h"
 #include "iaupdatedebug.h"
 
 
@@ -256,6 +257,7 @@
     iFwNodes.Reset();
     iSelectedNodesArray.Reset();
     iServicePackNodes.Reset();
+    iPreviousSelections.Reset();
     delete iFilter;
     delete iControllerFile;
     delete iIdle;
@@ -264,7 +266,6 @@
     delete iRoamingHandler;
     delete iParams;
     delete iRefreshHandler;
-    delete iPreviousSelections;
 
     // If dialogs have not been released yet, release them now.
     // ProcessFinishedL() should normally be used for dialogs but
@@ -1576,29 +1577,32 @@
         if ( appUi->UiRefreshAllowed() )
 		    {
 	    	iState = EUiRefreshing;
-	        // store node identification (package UID and version) of currently selected nodes
+	        // store node identification (Id and namespace) of currently selected nodes
 	        // to restore selections after refresh
-	        delete iPreviousSelections;
-	        iPreviousSelections = NULL;
-	        iPreviousSelections = new( ELeave ) CArrayFixFlat<SIAUpdateNodeId>( iNodes.Count() + 1 );
-	        for ( TInt i = 0; i < iNodes.Count(); ++i )
+	        iPreviousSelections.Reset();
+	    	for ( TInt i = 0; i < iNodes.Count(); ++i )
                 {
                 MIAUpdateNode* node( iNodes[ i ] );
-                SIAUpdateNodeId nodeId;
-                nodeId.iNodeType = MIAUpdateAnyNode::ENodeTypeNormal;
-                nodeId.iPackageUid = node->Base().Uid();
-                nodeId.iVersion = node->Base().Version();
-                nodeId.iSelected = node->Base().IsSelected();
-                iPreviousSelections->AppendL( nodeId );
+                CIAUpdateNodeId* nodeId = CIAUpdateNodeId::NewLC();
+                nodeId->SetIdL( node->Base().MetaId() );
+                nodeId->SetNamespaceL( node->Base().MetaNamespace() );
+                nodeId->SetNodeType( MIAUpdateAnyNode::ENodeTypeNormal );
+                nodeId->SetSelected( node->Base().IsSelected() );
+                iPreviousSelections.AppendL( nodeId );
+                CleanupStack::Pop( nodeId );
+                
                 }
 
             if ( iFwNodes.Count() > 0 )
-                {   
+                {
                 MIAUpdateFwNode* fwNode( iFwNodes[ 0 ] );
-                SIAUpdateNodeId nodeId;
-                nodeId.iNodeType = MIAUpdateAnyNode::ENodeTypeFw;
-                nodeId.iSelected = fwNode->Base().IsSelected();
-                iPreviousSelections->AppendL( nodeId );
+                CIAUpdateNodeId* nodeId = CIAUpdateNodeId::NewLC();
+                nodeId->SetIdL( fwNode->Base().MetaId() );
+                nodeId->SetNamespaceL( fwNode->Base().MetaNamespace() );
+                nodeId->SetNodeType( MIAUpdateAnyNode::ENodeTypeFw );
+                nodeId->SetSelected( fwNode->Base().IsSelected() );
+                iPreviousSelections.AppendL( nodeId );
+                CleanupStack::Pop( nodeId );
                 }
         
    	        iController->StartRefreshL( EFalse );
@@ -1717,10 +1721,10 @@
     // Find out if there was umarked firmware update in old selections,
     // that case needs special handling
     TBool unmarkedFw = EFalse;
-    for ( TInt i = 0; i < iPreviousSelections->Count(); ++i )
+    for ( TInt i = 0; i < iPreviousSelections.Count(); ++i )
         {
-        SIAUpdateNodeId prevNodeId = iPreviousSelections->At( i );
-        if ( prevNodeId.iNodeType == MIAUpdateAnyNode::ENodeTypeFw  && !prevNodeId.iSelected )
+        CIAUpdateNodeId* prevNodeId( iPreviousSelections[ i ] );
+        if ( prevNodeId->NodeType() == MIAUpdateAnyNode::ENodeTypeFw  && !prevNodeId->Selected() )
              {
              unmarkedFw = ETrue;
              }
@@ -1763,13 +1767,13 @@
     for ( TInt i = 0; i < iNodes.Count(); ++i )
         {
         MIAUpdateNode* node( iNodes[ i ] );
-        for ( TInt j = 0; j < iPreviousSelections->Count(); ++j )
+        for ( TInt j = 0; j < iPreviousSelections.Count(); ++j )
             {
-            SIAUpdateNodeId prevNodeId = iPreviousSelections->At(j);
-        	if ( node->Base().Uid() == prevNodeId.iPackageUid &&
-        	     node->Base().Version() == prevNodeId.iVersion )
-                {
-        		node->Base().SetSelected( prevNodeId.iSelected );
+            CIAUpdateNodeId* prevNodeId( iPreviousSelections[ j ] );
+        	if ( node->Base().MetaId() == prevNodeId->Id() && 
+        	     node->Base().MetaNamespace() == prevNodeId->Namespace() )
+        	    {
+        	    node->Base().SetSelected( prevNodeId->Selected() );
         	    }
             }
         }
@@ -1788,12 +1792,12 @@
     for ( TInt i = 0; i < iFwNodes.Count(); ++i )
         {
         MIAUpdateFwNode* fwNode( iFwNodes[ i ] );
-    	for ( TInt j = 0; j < iPreviousSelections->Count(); ++j )
+    	for ( TInt j = 0; j < iPreviousSelections.Count(); ++j )
     	    {
-    	    SIAUpdateNodeId prevNodeId = iPreviousSelections->At(j);
-    		if ( prevNodeId.iNodeType == MIAUpdateAnyNode::ENodeTypeFw )
+    	    CIAUpdateNodeId* prevNodeId( iPreviousSelections[ j ] );
+    		if ( prevNodeId->NodeType() == MIAUpdateAnyNode::ENodeTypeFw )
     		    {
-    			fwNode->Base().SetSelected( prevNodeId.iSelected );
+    			fwNode->Base().SetSelected( prevNodeId->Selected() );
     		    }
     	    }
     	if ( fwNode->Base().IsSelected() )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/iaupdate.pro	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description:
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS += IAD\bgcindicatorplugin\bgcindicatorplugin.pro
+
+
Binary file iaupdate/rom/iaupdate_stub.SIS has changed
--- a/iaupdate/rom/iaupdate_stub.pkg	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdate/rom/iaupdate_stub.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -16,7 +16,7 @@
 &EN
 
 ;Header 
-#{"Software update"}, (0x2000f85a), 2, 0, 8, TYPE=SA
+#{"Application update"}, (0x2000f85a), 2, 1, 0, TYPE=SA
 
 ;Localised Vendor Name
 %{"Nokia"}
--- a/iaupdateapi_stub/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/iaupdateapi_stub/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -29,7 +29,7 @@
 ../rom/iaupdateapi.iby             CORE_MW_LAYER_IBY_EXPORT_PATH( iaupdateapi.iby )
 
 #ifndef FF_IAUPDATE
-../sis/iaupdate_stub.sis        /epoc32/data/z/system/install/iaupdate_stub.sis
+../sis/iaupdate_stub.SIS        /epoc32/data/z/system/install/iaupdate_stub.sis
 #endif //FF_IAUPDATE
 
 PRJ_MMPFILES
--- a/installationservices/refsoftwareappmgr/group/security_referenceapplicationmanager.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/refsoftwareappmgr/group/security_referenceapplicationmanager.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_referenceapplicationmanager
 source	\sf\mw\appinstall\installationservices\refsoftwareappmgr
 binary	\sf\mw\appinstall\installationservices\refsoftwareappmgr\group	all
--- a/installationservices/refswinstallationplugin/group/security_sifrefplugin.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/refswinstallationplugin/group/security_sifrefplugin.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_sifrefplugin
 source	\sf\mw\appinstall\installationservices\refswinstallationplugin\
 binary	\sf\mw\appinstall\installationservices\refswinstallationplugin\group	all
--- a/installationservices/refswinstallationplugin/source/1028634f.rss	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/refswinstallationplugin/source/1028634f.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -42,4 +42,4 @@
 				};
 			}
 		};
-	}
\ No newline at end of file
+	}
--- a/installationservices/refswinstallationplugin/source/sifrefinstallertask.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/refswinstallationplugin/source/sifrefinstallertask.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -368,6 +368,8 @@
 		const TInt KExampleFileSize = 1024;
 		const TInt maxInstalledSize = iParser->Files().Count() * KExampleFileSize;
 		const TBool hasExe = EFalse;
+		const TBool driveSelectionRequired = EFalse;
+		RPointerArray<Usif::CComponentInfo::CApplicationInfo>* applications = NULL;
 		// The example capabilities below are hardcoded due to the same reason. The reference package file doesn't contain
 		// user grantable capabilities but a real package file should provide them.
 		TCapabilitySet userGrantableCaps(ECapabilityReadUserData, ECapabilityWriteUserData);
@@ -376,7 +378,7 @@
 		CComponentInfo::CNode* compInfoNode = CComponentInfo::CNode::NewLC(InstallHelper::KSifReferenceSoftwareType,
 							*iCompSearchData.iName, iCompSearchData.iVersion, *iCompSearchData.iVendor,
 							iCompSearchData.iScomoState, iCompSearchData.iInstallStatus, iCompSearchData.iComponentId,
-							*iCompSearchData.iName, ENotAuthenticated, userGrantableCaps, maxInstalledSize, hasExe);
+							*iCompSearchData.iName, ENotAuthenticated, userGrantableCaps, maxInstalledSize, hasExe, driveSelectionRequired, applications);
 		
 		auxNode.SetNodeL(compInfoNode);
 		CleanupStack::Pop(compInfoNode);
--- a/installationservices/refswinstallationplugin/test/scripts/tsifrefinstaller.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/refswinstallationplugin/test/scripts/tsifrefinstaller.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -14,6 +14,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=3072
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoByFileHandleForInstalledComponent]
 packageFile=z:\tusif\tsifrefinstaller\data\base.sifrefbinpkg
@@ -30,6 +32,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=3072
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoByFileHandleForUninstalledUpgrade]
 packageFile=z:\tusif\tsifrefinstaller\data\upgrade.sifrefbinpkg
@@ -46,6 +50,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=2048
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoByFileHandleForInstalledUpgrade]
 packageFile=z:\tusif\tsifrefinstaller\data\upgrade.sifrefbinpkg
@@ -62,6 +68,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=2048
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoByFileHandleForActivatedComponent]
 packageFile=z:\tusif\tsifrefinstaller\data\base.sifrefbinpkg
@@ -78,6 +86,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=3072
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoByFileHandleForInstalledInactiveComponent]
 packageFile=z:\tusif\tsifrefinstaller\data\base.sifrefbinpkg
@@ -94,6 +104,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=3072
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [InstallByFileName]
 packageFile=z:\tusif\tsifrefinstaller\data\base.sifrefbinpkg
@@ -363,6 +375,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=3072
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 root.numChildren=2
 root.child0.softwareTypeName=reference
 root.child0.componentName=SIF Reference Component 3
@@ -376,6 +390,8 @@
 root.child0.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child0.maxInstalledSize=0
 root.child0.hasExecutable=False
+root.child0.driveSelectionRequired=False
+root.child0.noOfApps=0
 root.child1.softwareTypeName=reference
 root.child1.componentName=SIF Reference Component
 root.child1.componentVersion=1.00(0)
@@ -388,6 +404,8 @@
 root.child1.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child1.maxInstalledSize=3072
 root.child1.hasExecutable=False
+root.child1.driveSelectionRequired=False
+root.child1.noOfApps=0
 
 [InstallFileInUsePckg]
 packageFile=z:\tusif\tsifrefinstaller\data\fileinusetest.sifrefbinpkg
--- a/installationservices/swcomponentregistry/bwins/scrclientu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/bwins/scrclientu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -174,4 +174,174 @@
 	?NextComponentL@RSoftwareComponentRegistryView@Usif@@QBEHAAVCComponentEntry@2@W4TLanguage@@@Z @ 173 NONAME ; int Usif::RSoftwareComponentRegistryView::NextComponentL(class Usif::CComponentEntry &, enum TLanguage) const
 	?GetComponentSupportedLocalesListL@RSoftwareComponentRegistry@Usif@@QBEXHAAV?$RArray@W4TLanguage@@@@@Z @ 174 NONAME ; void Usif::RSoftwareComponentRegistry::GetComponentSupportedLocalesListL(int, class RArray<enum TLanguage> &) const
 	?GetComponentLocalizedInfoL@RSoftwareComponentRegistry@Usif@@QBEXHAAV?$RPointerArray@VCLocalizableComponentInfo@Usif@@@@@Z @ 175 NONAME ; void Usif::RSoftwareComponentRegistry::GetComponentLocalizedInfoL(int, class RPointerArray<class Usif::CLocalizableComponentInfo> &) const
+	?Close@RApplicationRegistryView@Usif@@QAEXXZ @ 176 NONAME ; void Usif::RApplicationRegistryView::Close(void)
+	?NewL@CAppViewData@Usif@@SAPAV12@XZ @ 177 NONAME ; class Usif::CAppViewData * Usif::CAppViewData::NewL(void)
+	?NewLC@CApplicationRegistrationData@Usif@@SAPAV12@AAV?$RPointerArray@VHBufC16@@@@AAV?$RPointerArray@VCServiceInfo@Usif@@@@AAV?$RPointerArray@VCLocalizableAppInfo@Usif@@@@AAV?$RPointerArray@VCPropertyEntry@Usif@@@@VTUid@@ABVTDesC16@@@Z @ 178 NONAME ; class Usif::CApplicationRegistrationData * Usif::CApplicationRegistrationData::NewLC(class RPointerArray<class HBufC16> &, class RPointerArray<class Usif::CServiceInfo> &, class RPointerArray<class Usif::CLocalizableAppInfo> &, class RPointerArray<class Usif::CPropertyEntry> &, class TUid, class TDesC16 const &)
+	?AddEmbeddability@TEmbeddableFilter@Usif@@QAEXW4TAppEmbeddability@TApplicationCharacteristics@2@@Z @ 179 NONAME ; void Usif::TEmbeddableFilter::AddEmbeddability(enum Usif::TApplicationCharacteristics::TAppEmbeddability)
+	?GetApplicationLaunchersL@RSoftwareComponentRegistry@Usif@@QBEXAAV?$RPointerArray@VCLauncherExecutable@Usif@@@@@Z @ 180 NONAME ; void Usif::RSoftwareComponentRegistry::GetApplicationLaunchersL(class RPointerArray<class Usif::CLauncherExecutable> &) const
+	?NewL@COpaqueData@Usif@@SAPAV12@AAVTDesC8@@W4TLanguage@@@Z @ 181 NONAME ; class Usif::COpaqueData * Usif::COpaqueData::NewL(class TDesC8 &, enum TLanguage)
+	?TypeId@CLauncherExecutable@Usif@@QBEHXZ @ 182 NONAME ; int Usif::CLauncherExecutable::TypeId(void) const
+	?AppUid@CApplicationRegistrationData@Usif@@QBE?BVTUid@@XZ @ 183 NONAME ; class TUid const Usif::CApplicationRegistrationData::AppUid(void) const
+	?OpenViewL@RApplicationInfoView@Usif@@QAEXABVRSoftwareComponentRegistry@2@PAVCAppInfoFilter@2@W4TLanguage@@@Z @ 184 NONAME ; void Usif::RApplicationInfoView::OpenViewL(class Usif::RSoftwareComponentRegistry const &, class Usif::CAppInfoFilter *, enum TLanguage)
+	?Caption@TAppRegInfo@Usif@@QBE?AV?$TBuf@$0BAA@@@XZ @ 185 NONAME ; class TBuf<256> Usif::TAppRegInfo::Caption(void) const
+	?SetAppUidForServiceInfo@CAppServiceInfoFilter@Usif@@QAEXVTUid@@@Z @ 186 NONAME ; void Usif::CAppServiceInfoFilter::SetAppUidForServiceInfo(class TUid)
+	?NewL@CServiceInfo@Usif@@SAPAV12@AAVRReadStream@@@Z @ 187 NONAME ; class Usif::CServiceInfo * Usif::CServiceInfo::NewL(class RReadStream &)
+	?ExternalizeL@CCaptionAndIconInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 188 NONAME ; void Usif::CCaptionAndIconInfo::ExternalizeL(class RWriteStream &) const
+	?NewL@CDataType@Usif@@SAPAV12@HABVTDesC16@@@Z @ 189 NONAME ; class Usif::CDataType * Usif::CDataType::NewL(int, class TDesC16 const &)
+	?NewL@CAppServiceInfoFilter@Usif@@SAPAV12@XZ @ 190 NONAME ; class Usif::CAppServiceInfoFilter * Usif::CAppServiceInfoFilter::NewL(void)
+	?ExternalizeL@CAppInfoFilter@Usif@@QBEXAAVRWriteStream@@@Z @ 191 NONAME ; void Usif::CAppInfoFilter::ExternalizeL(class RWriteStream &) const
+	?OwnedFileArray@CApplicationRegistrationData@Usif@@QBEABV?$RPointerArray@VHBufC16@@@@XZ @ 192 NONAME ; class RPointerArray<class HBufC16> const & Usif::CApplicationRegistrationData::OwnedFileArray(void) const
+	?NewL@CServiceInfo@Usif@@SAPAV12@VTUid@@AAV?$RPointerArray@VCOpaqueData@Usif@@@@AAV?$RPointerArray@VCDataType@Usif@@@@@Z @ 193 NONAME ; class Usif::CServiceInfo * Usif::CServiceInfo::NewL(class TUid, class RPointerArray<class Usif::COpaqueData> &, class RPointerArray<class Usif::CDataType> &)
+	?ExternalizeL@CAppServiceInfoFilter@Usif@@QBEXAAVRWriteStream@@@Z @ 194 NONAME ; void Usif::CAppServiceInfoFilter::ExternalizeL(class RWriteStream &) const
+	??0TAppRegInfo@Usif@@QAE@XZ @ 195 NONAME ; Usif::TAppRegInfo::TAppRegInfo(void)
+	?Type@CDataType@Usif@@QBEABVTDesC16@@XZ @ 196 NONAME ; class TDesC16 const & Usif::CDataType::Type(void) const
+	?ViewDataList@CLocalizableAppInfo@Usif@@QBEABV?$RPointerArray@VCAppViewData@Usif@@@@XZ @ 197 NONAME ; class RPointerArray<class Usif::CAppViewData> const & Usif::CLocalizableAppInfo::ViewDataList(void) const
+	?DataTypes@CServiceInfo@Usif@@QBEABV?$RPointerArray@VCDataType@Usif@@@@XZ @ 198 NONAME ; class RPointerArray<class Usif::CDataType> const & Usif::CServiceInfo::DataTypes(void) const
+	?NewL@CAppViewData@Usif@@SAPAV12@AAVRReadStream@@@Z @ 199 NONAME ; class Usif::CAppViewData * Usif::CAppViewData::NewL(class RReadStream &)
+	?NewL@CDataType@Usif@@SAPAV12@AAVRReadStream@@@Z @ 200 NONAME ; class Usif::CDataType * Usif::CDataType::NewL(class RReadStream &)
+	?TypeId@CApplicationRegistrationData@Usif@@QBEHXZ @ 201 NONAME ; int Usif::CApplicationRegistrationData::TypeId(void) const
+	?SetCapabilityAttributeMaskAndValue@CAppInfoFilter@Usif@@QAEXHH@Z @ 202 NONAME ; void Usif::CAppInfoFilter::SetCapabilityAttributeMaskAndValue(int, int)
+	??0TAppRegInfo@Usif@@QAE@VTUid@@ABV?$TBuf@$0BAA@@@1@Z @ 203 NONAME ; Usif::TAppRegInfo::TAppRegInfo(class TUid, class TBuf<256> const &, class TBuf<256> const &)
+	?SetServerApps@CAppInfoFilter@Usif@@QAEXVTUid@@H@Z @ 204 NONAME ; void Usif::CAppInfoFilter::SetServerApps(class TUid, int)
+	?MatchesEmbeddability@TEmbeddableFilter@Usif@@QBEHW4TAppEmbeddability@TApplicationCharacteristics@2@@Z @ 205 NONAME ; int Usif::TEmbeddableFilter::MatchesEmbeddability(enum Usif::TApplicationCharacteristics::TAppEmbeddability) const
+	?CaptionAndIconInfo@CLocalizableAppInfo@Usif@@QBEPBVCCaptionAndIconInfo@2@XZ @ 206 NONAME ; class Usif::CCaptionAndIconInfo const * Usif::CLocalizableAppInfo::CaptionAndIconInfo(void) const
+	?Close@RRegistrationInfoForApplication@Usif@@QAEXXZ @ 207 NONAME ; void Usif::RRegistrationInfoForApplication::Close(void)
+	?NewL@CApplicationRegistrationData@Usif@@SAPAV12@AAV?$RPointerArray@VHBufC16@@@@AAV?$RPointerArray@VCServiceInfo@Usif@@@@AAV?$RPointerArray@VCLocalizableAppInfo@Usif@@@@AAV?$RPointerArray@VCPropertyEntry@Usif@@@@AAV?$RPointerArray@VCOpaqueData@Usif@@@@VTUid@@ABVTDesC16@@AAVTApplicationCharacteristics@2@HH@Z @ 208 NONAME ; class Usif::CApplicationRegistrationData * Usif::CApplicationRegistrationData::NewL(class RPointerArray<class HBufC16> &, class RPointerArray<class Usif::CServiceInfo> &, class RPointerArray<class Usif::CLocalizableAppInfo> &, class RPointerArray<class Usif::CPropertyEntry> &, class RPointerArray<class Usif::COpaqueData> &, class TUid, class TDesC16 const &, class Usif::TApplicationCharacteristics &, int, int)
+	?ApplicationLanguage@CLocalizableAppInfo@Usif@@QBE?AW4TLanguage@@XZ @ 209 NONAME ; enum TLanguage Usif::CLocalizableAppInfo::ApplicationLanguage(void) const
+	?AppProperties@CApplicationRegistrationData@Usif@@QBEABV?$RPointerArray@VCPropertyEntry@Usif@@@@XZ @ 210 NONAME ; class RPointerArray<class Usif::CPropertyEntry> const & Usif::CApplicationRegistrationData::AppProperties(void) const
+	?NewL@CLocalizableAppInfo@Usif@@SAPAV12@AAVRReadStream@@@Z @ 211 NONAME ; class Usif::CLocalizableAppInfo * Usif::CLocalizableAppInfo::NewL(class RReadStream &)
+	?InternalizeL@CServiceInfo@Usif@@QAEXAAVRReadStream@@@Z @ 212 NONAME ; void Usif::CServiceInfo::InternalizeL(class RReadStream &)
+	?DefaultScreenNumber@CApplicationRegistrationData@Usif@@QBEHXZ @ 213 NONAME ; int Usif::CApplicationRegistrationData::DefaultScreenNumber(void) const
+	?InternalizeL@CAppViewData@Usif@@QAEXAAVRReadStream@@@Z @ 214 NONAME ; void Usif::CAppViewData::InternalizeL(class RReadStream &)
+	?LocalizableAppInfoList@CApplicationRegistrationData@Usif@@QBEABV?$RPointerArray@VCLocalizableAppInfo@Usif@@@@XZ @ 215 NONAME ; class RPointerArray<class Usif::CLocalizableAppInfo> const & Usif::CApplicationRegistrationData::LocalizableAppInfoList(void) const
+	?NewL@COpaqueData@Usif@@SAPAV12@XZ @ 216 NONAME ; class Usif::COpaqueData * Usif::COpaqueData::NewL(void)
+	?NewL@CServiceInfo@Usif@@SAPAV12@XZ @ 217 NONAME ; class Usif::CServiceInfo * Usif::CServiceInfo::NewL(void)
+	?NumOfAppIcons@CCaptionAndIconInfo@Usif@@QBEHXZ @ 218 NONAME ; int Usif::CCaptionAndIconInfo::NumOfAppIcons(void) const
+	?NewLC@CAppViewData@Usif@@SAPAV12@XZ @ 219 NONAME ; class Usif::CAppViewData * Usif::CAppViewData::NewLC(void)
+	?InternalizeL@CDataType@Usif@@QAEXAAVRReadStream@@@Z @ 220 NONAME ; void Usif::CDataType::InternalizeL(class RReadStream &)
+	?InternalizeL@CLauncherExecutable@Usif@@QAEXAAVRReadStream@@@Z @ 221 NONAME ; void Usif::CLauncherExecutable::InternalizeL(class RReadStream &)
+	?Uid@TAppRegInfo@Usif@@QBE?AVTUid@@XZ @ 222 NONAME ; class TUid Usif::TAppRegInfo::Uid(void) const
+	?NewL@CLocalizableAppInfo@Usif@@SAPAV12@ABVTDesC16@@W4TLanguage@@0PAVCCaptionAndIconInfo@2@AAV?$RPointerArray@VCAppViewData@Usif@@@@@Z @ 223 NONAME ; class Usif::CLocalizableAppInfo * Usif::CLocalizableAppInfo::NewL(class TDesC16 const &, enum TLanguage, class TDesC16 const &, class Usif::CCaptionAndIconInfo *, class RPointerArray<class Usif::CAppViewData> &)
+	?ScreenMode@CAppViewData@Usif@@QBEHXZ @ 224 NONAME ; int Usif::CAppViewData::ScreenMode(void) const
+	??0RApplicationInfoView@Usif@@QAE@XZ @ 225 NONAME ; Usif::RApplicationInfoView::RApplicationInfoView(void)
+	?OpenViewL@RApplicationRegistryView@Usif@@QAEXABVRSoftwareComponentRegistry@2@W4TLanguage@@@Z @ 226 NONAME ; void Usif::RApplicationRegistryView::OpenViewL(class Usif::RSoftwareComponentRegistry const &, enum TLanguage)
+	?NewLC@CAppInfoFilter@Usif@@SAPAV12@XZ @ 227 NONAME ; class Usif::CAppInfoFilter * Usif::CAppInfoFilter::NewLC(void)
+	?GetComponentIdForAppL@RSoftwareComponentRegistry@Usif@@QBEHVTUid@@@Z @ 228 NONAME ; int Usif::RSoftwareComponentRegistry::GetComponentIdForAppL(class TUid) const
+	?NewLC@CDataType@Usif@@SAPAV12@HABVTDesC16@@@Z @ 229 NONAME ; class Usif::CDataType * Usif::CDataType::NewLC(int, class TDesC16 const &)
+	?NewL@COpaqueData@Usif@@SAPAV12@AAVRReadStream@@@Z @ 230 NONAME ; class Usif::COpaqueData * Usif::COpaqueData::NewL(class RReadStream &)
+	?NewL@CAppViewData@Usif@@SAPAV12@VTUid@@HPAVCCaptionAndIconInfo@2@@Z @ 231 NONAME ; class Usif::CAppViewData * Usif::CAppViewData::NewL(class TUid, int, class Usif::CCaptionAndIconInfo *)
+	?NewL@CApplicationRegistrationData@Usif@@SAPAV12@AAV?$RPointerArray@VHBufC16@@@@AAV?$RPointerArray@VCServiceInfo@Usif@@@@AAV?$RPointerArray@VCLocalizableAppInfo@Usif@@@@AAV?$RPointerArray@VCPropertyEntry@Usif@@@@VTUid@@ABVTDesC16@@@Z @ 232 NONAME ; class Usif::CApplicationRegistrationData * Usif::CApplicationRegistrationData::NewL(class RPointerArray<class HBufC16> &, class RPointerArray<class Usif::CServiceInfo> &, class RPointerArray<class Usif::CLocalizableAppInfo> &, class RPointerArray<class Usif::CPropertyEntry> &, class TUid, class TDesC16 const &)
+	?Embeddability@CApplicationRegistrationData@Usif@@QBE?AW4TAppEmbeddability@TApplicationCharacteristics@2@XZ @ 233 NONAME ; enum Usif::TApplicationCharacteristics::TAppEmbeddability Usif::CApplicationRegistrationData::Embeddability(void) const
+	?ShortCaption@CLocalizableAppInfo@Usif@@QBEABVTDesC16@@XZ @ 234 NONAME ; class TDesC16 const & Usif::CLocalizableAppInfo::ShortCaption(void) const
+	?IconFileName@CCaptionAndIconInfo@Usif@@QBEABVTDesC16@@XZ @ 235 NONAME ; class TDesC16 const & Usif::CCaptionAndIconInfo::IconFileName(void) const
+	?OpenL@RApplicationRegistrationInfo@Usif@@QAEXABVRSoftwareComponentRegistry@2@@Z @ 236 NONAME ; void Usif::RApplicationRegistrationInfo::OpenL(class Usif::RSoftwareComponentRegistry const &)
+	?NewLC@CAppServiceInfoFilter@Usif@@SAPAV12@XZ @ 237 NONAME ; class Usif::CAppServiceInfoFilter * Usif::CAppServiceInfoFilter::NewLC(void)
+	?NewL@CAppInfoFilter@Usif@@SAPAV12@XZ @ 238 NONAME ; class Usif::CAppInfoFilter * Usif::CAppInfoFilter::NewL(void)
+	?NewLC@COpaqueData@Usif@@SAPAV12@XZ @ 239 NONAME ; class Usif::COpaqueData * Usif::COpaqueData::NewLC(void)
+	??0TAppRegInfo@Usif@@QAE@VTUid@@ABV?$TBuf@$0BAA@@@11@Z @ 240 NONAME ; Usif::TAppRegInfo::TAppRegInfo(class TUid, class TBuf<256> const &, class TBuf<256> const &, class TBuf<256> const &)
+	?InternalizeL@CApplicationRegistrationData@Usif@@QAEXAAVRReadStream@@@Z @ 241 NONAME ; void Usif::CApplicationRegistrationData::InternalizeL(class RReadStream &)
+	?Connect@RScrInternalClient@Usif@@QAEHXZ @ 242 NONAME ; int Usif::RScrInternalClient::Connect(void)
+	?Hidden@CApplicationRegistrationData@Usif@@QBEHXZ @ 243 NONAME ; int Usif::CApplicationRegistrationData::Hidden(void) const
+	?NewLC@CLocalizableAppInfo@Usif@@SAPAV12@ABVTDesC16@@W4TLanguage@@0PAVCCaptionAndIconInfo@2@AAV?$RPointerArray@VCAppViewData@Usif@@@@@Z @ 244 NONAME ; class Usif::CLocalizableAppInfo * Usif::CLocalizableAppInfo::NewLC(class TDesC16 const &, enum TLanguage, class TDesC16 const &, class Usif::CCaptionAndIconInfo *, class RPointerArray<class Usif::CAppViewData> &)
+	?NewLC@CLauncherExecutable@Usif@@SAPAV12@XZ @ 245 NONAME ; class Usif::CLauncherExecutable * Usif::CLauncherExecutable::NewLC(void)
+	?InternalizeL@CCaptionAndIconInfo@Usif@@QAEXAAVRReadStream@@@Z @ 246 NONAME ; void Usif::CCaptionAndIconInfo::InternalizeL(class RReadStream &)
+	?GetAppServicesUidsL@RRegistrationInfoForApplication@Usif@@QBEXAAV?$RArray@VTUid@@@@@Z @ 247 NONAME ; void Usif::RRegistrationInfoForApplication::GetAppServicesUidsL(class RArray<class TUid> &) const
+	?Close@RApplicationRegistrationInfo@Usif@@QAEXXZ @ 248 NONAME ; void Usif::RApplicationRegistrationInfo::Close(void)
+	?NewLC@CDataType@Usif@@SAPAV12@XZ @ 249 NONAME ; class Usif::CDataType * Usif::CDataType::NewLC(void)
+	?SetServiceUidAndDatatTypeForServiceImplementationsL@CAppServiceInfoFilter@Usif@@QAEXVTUid@@ABVTDesC16@@@Z @ 250 NONAME ; void Usif::CAppServiceInfoFilter::SetServiceUidAndDatatTypeForServiceImplementationsL(class TUid, class TDesC16 const &)
+	?NumberOfOwnDefinedIconsL@RRegistrationInfoForApplication@Usif@@QBEHXZ @ 251 NONAME ; int Usif::RRegistrationInfoForApplication::NumberOfOwnDefinedIconsL(void) const
+	?NewL@CLauncherExecutable@Usif@@SAPAV12@XZ @ 252 NONAME ; class Usif::CLauncherExecutable * Usif::CLauncherExecutable::NewL(void)
+	?SetAllApps@CAppInfoFilter@Usif@@QAEXXZ @ 253 NONAME ; void Usif::CAppInfoFilter::SetAllApps(void)
+	??0TApplicationCharacteristics@Usif@@QAE@XZ @ 254 NONAME ; Usif::TApplicationCharacteristics::TApplicationCharacteristics(void)
+	?NewLC@CServiceInfo@Usif@@SAPAV12@XZ @ 255 NONAME ; class Usif::CServiceInfo * Usif::CServiceInfo::NewLC(void)
+	?NewLC@CServiceInfo@Usif@@SAPAV12@VTUid@@AAV?$RPointerArray@VCOpaqueData@Usif@@@@AAV?$RPointerArray@VCDataType@Usif@@@@@Z @ 256 NONAME ; class Usif::CServiceInfo * Usif::CServiceInfo::NewLC(class TUid, class RPointerArray<class Usif::COpaqueData> &, class RPointerArray<class Usif::CDataType> &)
+	?SetEmbeddabilityFilter@CAppInfoFilter@Usif@@QAEXAAVTEmbeddableFilter@2@@Z @ 257 NONAME ; void Usif::CAppInfoFilter::SetEmbeddabilityFilter(class Usif::TEmbeddableFilter &)
+	?Close@RScrInternalClient@Usif@@QAEXXZ @ 258 NONAME ; void Usif::RScrInternalClient::Close(void)
+	?GetNextApplicationRegistrationInfoL@RApplicationRegistryView@Usif@@QBEXHAAV?$RPointerArray@VCApplicationRegistrationData@Usif@@@@@Z @ 259 NONAME ; void Usif::RApplicationRegistryView::GetNextApplicationRegistrationInfoL(int, class RPointerArray<class Usif::CApplicationRegistrationData> &) const
+	??0RRegistrationInfoForApplication@Usif@@QAE@XZ @ 260 NONAME ; Usif::RRegistrationInfoForApplication::RRegistrationInfoForApplication(void)
+	?NewL@CLauncherExecutable@Usif@@SAPAV12@AAVRReadStream@@@Z @ 261 NONAME ; class Usif::CLauncherExecutable * Usif::CLauncherExecutable::NewL(class RReadStream &)
+	?GroupName@CLocalizableAppInfo@Usif@@QBEABVTDesC16@@XZ @ 262 NONAME ; class TDesC16 const & Usif::CLocalizableAppInfo::GroupName(void) const
+	?OpaqueData@COpaqueData@Usif@@QAEAAVHBufC8@@XZ @ 263 NONAME ; class HBufC8 & Usif::COpaqueData::OpaqueData(void)
+	?GetAppUidsForComponentL@RSoftwareComponentRegistry@Usif@@QBEXHAAV?$RArray@VTUid@@@@@Z @ 264 NONAME ; void Usif::RSoftwareComponentRegistry::GetAppUidsForComponentL(int, class RArray<class TUid> &) const
+	?GetAppForDataTypeAndServiceL@RApplicationRegistrationInfo@Usif@@QBE?AVTUid@@ABVTDesC16@@V3@@Z @ 265 NONAME ; class TUid Usif::RApplicationRegistrationInfo::GetAppForDataTypeAndServiceL(class TDesC16 const &, class TUid) const
+	?ExternalizeL@TApplicationCharacteristics@Usif@@QBEXAAVRWriteStream@@@Z @ 266 NONAME ; void Usif::TApplicationCharacteristics::ExternalizeL(class RWriteStream &) const
+	?SetAppUidAndServiceUidForOpaqueData@CAppServiceInfoFilter@Usif@@QAEXVTUid@@0@Z @ 267 NONAME ; void Usif::CAppServiceInfoFilter::SetAppUidAndServiceUidForOpaqueData(class TUid, class TUid)
+	?DeleteApplicationEntryL@RSoftwareComponentRegistry@Usif@@QAEXVTUid@@@Z @ 268 NONAME ; void Usif::RSoftwareComponentRegistry::DeleteApplicationEntryL(class TUid)
+	?ExternalizeL@CLauncherExecutable@Usif@@QBEXAAVRWriteStream@@@Z @ 269 NONAME ; void Usif::CLauncherExecutable::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@COpaqueData@Usif@@QBEXAAVRWriteStream@@@Z @ 270 NONAME ; void Usif::COpaqueData::ExternalizeL(class RWriteStream &) const
+	?NewFile@CApplicationRegistrationData@Usif@@QBEHXZ @ 271 NONAME ; int Usif::CApplicationRegistrationData::NewFile(void) const
+	??0RApplicationRegistrationInfo@Usif@@QAE@XZ @ 272 NONAME ; Usif::RApplicationRegistrationInfo::RApplicationRegistrationInfo(void)
+	?NewLC@COpaqueData@Usif@@SAPAV12@AAVTDesC8@@W4TLanguage@@@Z @ 273 NONAME ; class Usif::COpaqueData * Usif::COpaqueData::NewLC(class TDesC8 &, enum TLanguage)
+	?AddApplicationEntryL@RSoftwareComponentRegistry@Usif@@QAEXHABVCApplicationRegistrationData@2@@Z @ 274 NONAME ; void Usif::RSoftwareComponentRegistry::AddApplicationEntryL(int, class Usif::CApplicationRegistrationData const &)
+	?NewLC@CApplicationRegistrationData@Usif@@SAPAV12@XZ @ 275 NONAME ; class Usif::CApplicationRegistrationData * Usif::CApplicationRegistrationData::NewLC(void)
+	?Uid@CAppViewData@Usif@@QBE?BVTUid@@XZ @ 276 NONAME ; class TUid const Usif::CAppViewData::Uid(void) const
+	?FullName@TAppRegInfo@Usif@@QBE?AV?$TBuf@$0BAA@@@XZ @ 277 NONAME ; class TBuf<256> Usif::TAppRegInfo::FullName(void) const
+	?AppFile@CApplicationRegistrationData@Usif@@QBEABVTDesC16@@XZ @ 278 NONAME ; class TDesC16 const & Usif::CApplicationRegistrationData::AppFile(void) const
+	?GenerateNewAppUidL@RScrInternalClient@Usif@@QBE?AVTUid@@XZ @ 279 NONAME ; class TUid Usif::RScrInternalClient::GenerateNewAppUidL(void) const
+	?InternalizeL@CLocalizableAppInfo@Usif@@QAEXAAVRReadStream@@@Z @ 280 NONAME ; void Usif::CLocalizableAppInfo::InternalizeL(class RReadStream &)
+	?SetEmbeddableApps@CAppInfoFilter@Usif@@QAEXH@Z @ 281 NONAME ; void Usif::CAppInfoFilter::SetEmbeddableApps(int)
+	?NewL@CAppServiceInfoFilter@Usif@@SAPAV12@AAVRReadStream@@@Z @ 282 NONAME ; class Usif::CAppServiceInfoFilter * Usif::CAppServiceInfoFilter::NewL(class RReadStream &)
+	?OpaqueData@CServiceInfo@Usif@@QBEABV?$RPointerArray@VCOpaqueData@Usif@@@@XZ @ 283 NONAME ; class RPointerArray<class Usif::COpaqueData> const & Usif::CServiceInfo::OpaqueData(void) const
+	?InternalizeL@COpaqueData@Usif@@QAEXAAVRReadStream@@@Z @ 284 NONAME ; void Usif::COpaqueData::InternalizeL(class RReadStream &)
+	?AppOpaqueData@CApplicationRegistrationData@Usif@@QBEABV?$RPointerArray@VCOpaqueData@Usif@@@@XZ @ 285 NONAME ; class RPointerArray<class Usif::COpaqueData> const & Usif::CApplicationRegistrationData::AppOpaqueData(void) const
+	?ApplicationLanguageL@RRegistrationInfoForApplication@Usif@@QBE?AW4TLanguage@@XZ @ 286 NONAME ; enum TLanguage Usif::RRegistrationInfoForApplication::ApplicationLanguageL(void) const
+	?ServiceArray@CApplicationRegistrationData@Usif@@QBEABV?$RPointerArray@VCServiceInfo@Usif@@@@XZ @ 287 NONAME ; class RPointerArray<class Usif::CServiceInfo> const & Usif::CApplicationRegistrationData::ServiceArray(void) const
+	?CaptionAndIconInfo@CAppViewData@Usif@@QBEPBVCCaptionAndIconInfo@2@XZ @ 288 NONAME ; class Usif::CCaptionAndIconInfo const * Usif::CAppViewData::CaptionAndIconInfo(void) const
+	?ExternalizeL@CServiceInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 289 NONAME ; void Usif::CServiceInfo::ExternalizeL(class RWriteStream &) const
+	?SetAllApps@CAppInfoFilter@Usif@@QAEXH@Z @ 290 NONAME ; void Usif::CAppInfoFilter::SetAllApps(int)
+	?NewLC@CLauncherExecutable@Usif@@SAPAV12@HABVTDesC16@@@Z @ 291 NONAME ; class Usif::CLauncherExecutable * Usif::CLauncherExecutable::NewLC(int, class TDesC16 const &)
+	??0RScrInternalClient@Usif@@QAE@XZ @ 292 NONAME ; Usif::RScrInternalClient::RScrInternalClient(void)
+	?ExternalizeL@CApplicationRegistrationData@Usif@@QBEXAAVRWriteStream@@@Z @ 293 NONAME ; void Usif::CApplicationRegistrationData::ExternalizeL(class RWriteStream &) const
+	?Priority@CDataType@Usif@@QBEHXZ @ 294 NONAME ; int Usif::CDataType::Priority(void) const
+	?GetAppInfoL@RApplicationRegistrationInfo@Usif@@QAEHVTUid@@AAVTAppRegInfo@2@W4TLanguage@@@Z @ 295 NONAME ; int Usif::RApplicationRegistrationInfo::GetAppInfoL(class TUid, class Usif::TAppRegInfo &, enum TLanguage)
+	?ExternalizeL@CDataType@Usif@@QBEXAAVRWriteStream@@@Z @ 296 NONAME ; void Usif::CDataType::ExternalizeL(class RWriteStream &) const
+	?GetAppForDataTypeL@RApplicationRegistrationInfo@Usif@@QBE?AVTUid@@ABVTDesC16@@@Z @ 297 NONAME ; class TUid Usif::RApplicationRegistrationInfo::GetAppForDataTypeL(class TDesC16 const &) const
+	?SetCapabilityAttributeMaskAndValue@CAppInfoFilter@Usif@@QAEXHHH@Z @ 298 NONAME ; void Usif::CAppInfoFilter::SetCapabilityAttributeMaskAndValue(int, int, int)
+	?NewL@CLauncherExecutable@Usif@@SAPAV12@HABVTDesC16@@@Z @ 299 NONAME ; class Usif::CLauncherExecutable * Usif::CLauncherExecutable::NewL(int, class TDesC16 const &)
+	?ExternalizeL@CLocalizableAppInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 300 NONAME ; void Usif::CLocalizableAppInfo::ExternalizeL(class RWriteStream &) const
+	?GetServiceInfoL@RApplicationRegistrationInfo@Usif@@QBEXPAVCAppServiceInfoFilter@2@AAV?$RPointerArray@VCServiceInfo@Usif@@@@W4TLanguage@@@Z @ 301 NONAME ; void Usif::RApplicationRegistrationInfo::GetServiceInfoL(class Usif::CAppServiceInfoFilter *, class RPointerArray<class Usif::CServiceInfo> &, enum TLanguage) const
+	?NewLC@CCaptionAndIconInfo@Usif@@SAPAV12@XZ @ 302 NONAME ; class Usif::CCaptionAndIconInfo * Usif::CCaptionAndIconInfo::NewLC(void)
+	?Uid@CServiceInfo@Usif@@QBE?BVTUid@@XZ @ 303 NONAME ; class TUid const Usif::CServiceInfo::Uid(void) const
+	?SetServerApps@CAppInfoFilter@Usif@@QAEXVTUid@@@Z @ 304 NONAME ; void Usif::CAppInfoFilter::SetServerApps(class TUid)
+	?NewLC@CLocalizableAppInfo@Usif@@SAPAV12@XZ @ 305 NONAME ; class Usif::CLocalizableAppInfo * Usif::CLocalizableAppInfo::NewLC(void)
+	?Language@COpaqueData@Usif@@QAE?AW4TLanguage@@XZ @ 306 NONAME ; enum TLanguage Usif::COpaqueData::Language(void)
+	?Close@RApplicationInfoView@Usif@@QAEXXZ @ 307 NONAME ; void Usif::RApplicationInfoView::Close(void)
+	?GroupName@CApplicationRegistrationData@Usif@@QBEABVTDesC16@@XZ @ 308 NONAME ; class TDesC16 const & Usif::CApplicationRegistrationData::GroupName(void) const
+	?NewLC@CApplicationRegistrationData@Usif@@SAPAV12@AAV?$RPointerArray@VHBufC16@@@@AAV?$RPointerArray@VCServiceInfo@Usif@@@@AAV?$RPointerArray@VCLocalizableAppInfo@Usif@@@@AAV?$RPointerArray@VCPropertyEntry@Usif@@@@AAV?$RPointerArray@VCOpaqueData@Usif@@@@VTUid@@ABVTDesC16@@AAVTApplicationCharacteristics@2@HH@Z @ 309 NONAME ; class Usif::CApplicationRegistrationData * Usif::CApplicationRegistrationData::NewLC(class RPointerArray<class HBufC16> &, class RPointerArray<class Usif::CServiceInfo> &, class RPointerArray<class Usif::CLocalizableAppInfo> &, class RPointerArray<class Usif::CPropertyEntry> &, class RPointerArray<class Usif::COpaqueData> &, class TUid, class TDesC16 const &, class Usif::TApplicationCharacteristics &, int, int)
+	?NewL@CApplicationRegistrationData@Usif@@SAPAV12@XZ @ 310 NONAME ; class Usif::CApplicationRegistrationData * Usif::CApplicationRegistrationData::NewL(void)
+	?NewL@CCaptionAndIconInfo@Usif@@SAPAV12@XZ @ 311 NONAME ; class Usif::CCaptionAndIconInfo * Usif::CCaptionAndIconInfo::NewL(void)
+	?NewL@CLocalizableAppInfo@Usif@@SAPAV12@XZ @ 312 NONAME ; class Usif::CLocalizableAppInfo * Usif::CLocalizableAppInfo::NewL(void)
+	?NewLC@CCaptionAndIconInfo@Usif@@SAPAV12@ABVTDesC16@@0H@Z @ 313 NONAME ; class Usif::CCaptionAndIconInfo * Usif::CCaptionAndIconInfo::NewLC(class TDesC16 const &, class TDesC16 const &, int)
+	?SetEmbeddabilityFilterWithScreenMode@CAppInfoFilter@Usif@@QAEXAAVTEmbeddableFilter@2@H@Z @ 314 NONAME ; void Usif::CAppInfoFilter::SetEmbeddabilityFilterWithScreenMode(class Usif::TEmbeddableFilter &, int)
+	?EmbeddabilityFlags@TEmbeddableFilter@Usif@@QBEIXZ @ 315 NONAME ; unsigned int Usif::TEmbeddableFilter::EmbeddabilityFlags(void) const
+	?GetAppCharacteristicsL@RRegistrationInfoForApplication@Usif@@QBEXAAVTApplicationCharacteristics@2@@Z @ 316 NONAME ; void Usif::RRegistrationInfoForApplication::GetAppCharacteristicsL(class Usif::TApplicationCharacteristics &) const
+	?Launch@CApplicationRegistrationData@Usif@@QBEHXZ @ 317 NONAME ; int Usif::CApplicationRegistrationData::Launch(void) const
+	?NewL@CCaptionAndIconInfo@Usif@@SAPAV12@ABVTDesC16@@0H@Z @ 318 NONAME ; class Usif::CCaptionAndIconInfo * Usif::CCaptionAndIconInfo::NewL(class TDesC16 const &, class TDesC16 const &, int)
+	?Launcher@CLauncherExecutable@Usif@@QBEABVTDesC16@@XZ @ 319 NONAME ; class TDesC16 const & Usif::CLauncherExecutable::Launcher(void) const
+	?NewL@CDataType@Usif@@SAPAV12@XZ @ 320 NONAME ; class Usif::CDataType * Usif::CDataType::NewL(void)
+	?SetEmbeddableApps@CAppInfoFilter@Usif@@QAEXXZ @ 321 NONAME ; void Usif::CAppInfoFilter::SetEmbeddableApps(void)
+	??0RApplicationRegistryView@Usif@@QAE@XZ @ 322 NONAME ; Usif::RApplicationRegistryView::RApplicationRegistryView(void)
+	?GetAppIconL@RRegistrationInfoForApplication@Usif@@QBEXAAPAVHBufC16@@@Z @ 323 NONAME ; void Usif::RRegistrationInfoForApplication::GetAppIconL(class HBufC16 * &) const
+	?ExternalizeL@TAppRegInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 324 NONAME ; void Usif::TAppRegInfo::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@CAppViewData@Usif@@QBEXAAVRWriteStream@@@Z @ 325 NONAME ; void Usif::CAppViewData::ExternalizeL(class RWriteStream &) const
+	?GetAppOwnedFilesL@RRegistrationInfoForApplication@Usif@@QBEXAAV?$RPointerArray@VHBufC16@@@@@Z @ 326 NONAME ; void Usif::RRegistrationInfoForApplication::GetAppOwnedFilesL(class RPointerArray<class HBufC16> &) const
+	?SetServiceUidForServiceImplementations@CAppServiceInfoFilter@Usif@@QAEXVTUid@@@Z @ 327 NONAME ; void Usif::CAppServiceInfoFilter::SetServiceUidForServiceImplementations(class TUid)
+	?Caption@CCaptionAndIconInfo@Usif@@QBEABVTDesC16@@XZ @ 328 NONAME ; class TDesC16 const & Usif::CCaptionAndIconInfo::Caption(void) const
+	?NewL@CAppInfoFilter@Usif@@SAPAV12@AAVRReadStream@@@Z @ 329 NONAME ; class Usif::CAppInfoFilter * Usif::CAppInfoFilter::NewL(class RReadStream &)
+	?NewL@CCaptionAndIconInfo@Usif@@SAPAV12@AAVRReadStream@@@Z @ 330 NONAME ; class Usif::CCaptionAndIconInfo * Usif::CCaptionAndIconInfo::NewL(class RReadStream &)
+	?GetNextAppInfoL@RApplicationInfoView@Usif@@QBEXHAAV?$RPointerArray@VTAppRegInfo@Usif@@@@@Z @ 331 NONAME ; void Usif::RApplicationInfoView::GetNextAppInfoL(int, class RPointerArray<class Usif::TAppRegInfo> &) const
+	??0TEmbeddableFilter@Usif@@QAE@XZ @ 332 NONAME ; Usif::TEmbeddableFilter::TEmbeddableFilter(void)
+	?OpenViewL@RApplicationRegistryView@Usif@@QAEXABVRSoftwareComponentRegistry@2@ABV?$RArray@VTUid@@@@W4TLanguage@@@Z @ 333 NONAME ; void Usif::RApplicationRegistryView::OpenViewL(class Usif::RSoftwareComponentRegistry const &, class RArray<class TUid> const &, enum TLanguage)
+	?GetAppViewIconL@RRegistrationInfoForApplication@Usif@@QBEXVTUid@@AAPAVHBufC16@@@Z @ 334 NONAME ; void Usif::RRegistrationInfoForApplication::GetAppViewIconL(class TUid, class HBufC16 * &) const
+	?DeleteApplicationEntriesL@RSoftwareComponentRegistry@Usif@@QAEXH@Z @ 335 NONAME ; void Usif::RSoftwareComponentRegistry::DeleteApplicationEntriesL(int)
+	?InternalizeL@TAppRegInfo@Usif@@QAEXAAVRReadStream@@@Z @ 336 NONAME ; void Usif::TAppRegInfo::InternalizeL(class RReadStream &)
+	?OpenL@RRegistrationInfoForApplication@Usif@@QAEXABVRSoftwareComponentRegistry@2@VTUid@@W4TLanguage@@@Z @ 337 NONAME ; void Usif::RRegistrationInfoForApplication::OpenL(class Usif::RSoftwareComponentRegistry const &, class TUid, enum TLanguage)
+	?DefaultScreenNumberL@RRegistrationInfoForApplication@Usif@@QBEHXZ @ 338 NONAME ; int Usif::RRegistrationInfoForApplication::DefaultScreenNumberL(void) const
+	?NewLC@CAppViewData@Usif@@SAPAV12@VTUid@@HPAVCCaptionAndIconInfo@2@@Z @ 339 NONAME ; class Usif::CAppViewData * Usif::CAppViewData::NewLC(class TUid, int, class Usif::CCaptionAndIconInfo *)
+	?GetAppViewsL@RRegistrationInfoForApplication@Usif@@QBEXAAV?$RPointerArray@VCAppViewData@Usif@@@@@Z @ 340 NONAME ; void Usif::RRegistrationInfoForApplication::GetAppViewsL(class RPointerArray<class Usif::CAppViewData> &) const
+	?Attributes@CApplicationRegistrationData@Usif@@QBEIXZ @ 341 NONAME ; unsigned int Usif::CApplicationRegistrationData::Attributes(void) const
+	?ShortCaption@TAppRegInfo@Usif@@QBE?AV?$TBuf@$0BAA@@@XZ @ 342 NONAME ; class TBuf<256> Usif::TAppRegInfo::ShortCaption(void) const
+	?NewL@CApplicationRegistrationData@Usif@@SAPAV12@AAVRReadStream@@@Z @ 343 NONAME ; class Usif::CApplicationRegistrationData * Usif::CApplicationRegistrationData::NewL(class RReadStream &)
+	?InternalizeL@TApplicationCharacteristics@Usif@@QAEXAAVRReadStream@@@Z @ 344 NONAME ; void Usif::TApplicationCharacteristics::InternalizeL(class RReadStream &)
+	??1CLauncherExecutable@Usif@@UAE@XZ @ 345 NONAME ; Usif::CLauncherExecutable::~CLauncherExecutable(void)
 
--- a/installationservices/swcomponentregistry/eabi/scrclientu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/eabi/scrclientu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -201,4 +201,183 @@
 	_ZTVN4Usif22CLocalizableCommonDataE @ 200 NONAME
 	_ZNK4Usif26RSoftwareComponentRegistry33GetComponentSupportedLocalesListLEiR6RArrayI9TLanguageE @ 201 NONAME
 	_ZNK4Usif26RSoftwareComponentRegistry26GetComponentLocalizedInfoLEiR13RPointerArrayINS_25CLocalizableComponentInfoEE @ 202 NONAME
+	_ZN4Usif11COpaqueData10OpaqueDataEv @ 203 NONAME
+	_ZN4Usif11COpaqueData12InternalizeLER11RReadStream @ 204 NONAME
+	_ZN4Usif11COpaqueData4NewLER11RReadStream @ 205 NONAME
+	_ZN4Usif11COpaqueData4NewLER6TDesC89TLanguage @ 206 NONAME
+	_ZN4Usif11COpaqueData4NewLEv @ 207 NONAME
+	_ZN4Usif11COpaqueData5NewLCER6TDesC89TLanguage @ 208 NONAME
+	_ZN4Usif11COpaqueData5NewLCEv @ 209 NONAME
+	_ZN4Usif11COpaqueData8LanguageEv @ 210 NONAME
+	_ZN4Usif11TAppRegInfo12InternalizeLER11RReadStream @ 211 NONAME
+	_ZN4Usif11TAppRegInfoC1E4TUidRK4TBufILi256EES5_ @ 212 NONAME
+	_ZN4Usif11TAppRegInfoC1E4TUidRK4TBufILi256EES5_S5_ @ 213 NONAME
+	_ZN4Usif11TAppRegInfoC1Ev @ 214 NONAME
+	_ZN4Usif11TAppRegInfoC2E4TUidRK4TBufILi256EES5_ @ 215 NONAME
+	_ZN4Usif11TAppRegInfoC2E4TUidRK4TBufILi256EES5_S5_ @ 216 NONAME
+	_ZN4Usif11TAppRegInfoC2Ev @ 217 NONAME
+	_ZN4Usif12CAppViewData12InternalizeLER11RReadStream @ 218 NONAME
+	_ZN4Usif12CAppViewData4NewLE4TUidiPNS_19CCaptionAndIconInfoE @ 219 NONAME
+	_ZN4Usif12CAppViewData4NewLER11RReadStream @ 220 NONAME
+	_ZN4Usif12CAppViewData4NewLEv @ 221 NONAME
+	_ZN4Usif12CAppViewData5NewLCE4TUidiPNS_19CCaptionAndIconInfoE @ 222 NONAME
+	_ZN4Usif12CAppViewData5NewLCEv @ 223 NONAME
+	_ZN4Usif12CServiceInfo12InternalizeLER11RReadStream @ 224 NONAME
+	_ZN4Usif12CServiceInfo4NewLE4TUidR13RPointerArrayINS_11COpaqueDataEERS2_INS_9CDataTypeEE @ 225 NONAME
+	_ZN4Usif12CServiceInfo4NewLER11RReadStream @ 226 NONAME
+	_ZN4Usif12CServiceInfo4NewLEv @ 227 NONAME
+	_ZN4Usif12CServiceInfo5NewLCE4TUidR13RPointerArrayINS_11COpaqueDataEERS2_INS_9CDataTypeEE @ 228 NONAME
+	_ZN4Usif12CServiceInfo5NewLCEv @ 229 NONAME
+	_ZN4Usif14CAppInfoFilter10SetAllAppsEi @ 230 NONAME
+	_ZN4Usif14CAppInfoFilter10SetAllAppsEv @ 231 NONAME
+	_ZN4Usif14CAppInfoFilter13SetServerAppsE4TUid @ 232 NONAME
+	_ZN4Usif14CAppInfoFilter13SetServerAppsE4TUidi @ 233 NONAME
+	_ZN4Usif14CAppInfoFilter17SetEmbeddableAppsEi @ 234 NONAME
+	_ZN4Usif14CAppInfoFilter17SetEmbeddableAppsEv @ 235 NONAME
+	_ZN4Usif14CAppInfoFilter22SetEmbeddabilityFilterERNS_17TEmbeddableFilterE @ 236 NONAME
+	_ZN4Usif14CAppInfoFilter34SetCapabilityAttributeMaskAndValueEii @ 237 NONAME
+	_ZN4Usif14CAppInfoFilter34SetCapabilityAttributeMaskAndValueEiii @ 238 NONAME
+	_ZN4Usif14CAppInfoFilter36SetEmbeddabilityFilterWithScreenModeERNS_17TEmbeddableFilterEi @ 239 NONAME
+	_ZN4Usif14CAppInfoFilter4NewLER11RReadStream @ 240 NONAME
+	_ZN4Usif14CAppInfoFilter4NewLEv @ 241 NONAME
+	_ZN4Usif14CAppInfoFilter5NewLCEv @ 242 NONAME
+	_ZN4Usif17TEmbeddableFilter16AddEmbeddabilityENS_27TApplicationCharacteristics17TAppEmbeddabilityE @ 243 NONAME
+	_ZN4Usif17TEmbeddableFilterC1Ev @ 244 NONAME
+	_ZN4Usif17TEmbeddableFilterC2Ev @ 245 NONAME
+	_ZN4Usif18RScrInternalClient5CloseEv @ 246 NONAME
+	_ZN4Usif18RScrInternalClient7ConnectEv @ 247 NONAME
+	_ZN4Usif18RScrInternalClientC1Ev @ 248 NONAME
+	_ZN4Usif18RScrInternalClientC2Ev @ 249 NONAME
+	_ZN4Usif19CCaptionAndIconInfo12InternalizeLER11RReadStream @ 250 NONAME
+	_ZN4Usif19CCaptionAndIconInfo4NewLER11RReadStream @ 251 NONAME
+	_ZN4Usif19CCaptionAndIconInfo4NewLERK7TDesC16S3_i @ 252 NONAME
+	_ZN4Usif19CCaptionAndIconInfo4NewLEv @ 253 NONAME
+	_ZN4Usif19CCaptionAndIconInfo5NewLCERK7TDesC16S3_i @ 254 NONAME
+	_ZN4Usif19CCaptionAndIconInfo5NewLCEv @ 255 NONAME
+	_ZN4Usif19CLauncherExecutable12InternalizeLER11RReadStream @ 256 NONAME
+	_ZN4Usif19CLauncherExecutable4NewLER11RReadStream @ 257 NONAME
+	_ZN4Usif19CLauncherExecutable4NewLEiRK7TDesC16 @ 258 NONAME
+	_ZN4Usif19CLauncherExecutable4NewLEv @ 259 NONAME
+	_ZN4Usif19CLauncherExecutable5NewLCEiRK7TDesC16 @ 260 NONAME
+	_ZN4Usif19CLauncherExecutable5NewLCEv @ 261 NONAME
+	_ZN4Usif19CLocalizableAppInfo12InternalizeLER11RReadStream @ 262 NONAME
+	_ZN4Usif19CLocalizableAppInfo4NewLER11RReadStream @ 263 NONAME
+	_ZN4Usif19CLocalizableAppInfo4NewLERK7TDesC169TLanguageS3_PNS_19CCaptionAndIconInfoER13RPointerArrayINS_12CAppViewDataEE @ 264 NONAME
+	_ZN4Usif19CLocalizableAppInfo4NewLEv @ 265 NONAME
+	_ZN4Usif19CLocalizableAppInfo5NewLCERK7TDesC169TLanguageS3_PNS_19CCaptionAndIconInfoER13RPointerArrayINS_12CAppViewDataEE @ 266 NONAME
+	_ZN4Usif19CLocalizableAppInfo5NewLCEv @ 267 NONAME
+	_ZN4Usif20RApplicationInfoView5CloseEv @ 268 NONAME
+	_ZN4Usif20RApplicationInfoView9OpenViewLERKNS_26RSoftwareComponentRegistryEPNS_14CAppInfoFilterE9TLanguage @ 269 NONAME
+	_ZN4Usif20RApplicationInfoViewC1Ev @ 270 NONAME
+	_ZN4Usif20RApplicationInfoViewC2Ev @ 271 NONAME
+	_ZN4Usif21CAppServiceInfoFilter23SetAppUidForServiceInfoE4TUid @ 272 NONAME
+	_ZN4Usif21CAppServiceInfoFilter35SetAppUidAndServiceUidForOpaqueDataE4TUidS1_ @ 273 NONAME
+	_ZN4Usif21CAppServiceInfoFilter38SetServiceUidForServiceImplementationsE4TUid @ 274 NONAME
+	_ZN4Usif21CAppServiceInfoFilter4NewLER11RReadStream @ 275 NONAME
+	_ZN4Usif21CAppServiceInfoFilter4NewLEv @ 276 NONAME
+	_ZN4Usif21CAppServiceInfoFilter51SetServiceUidAndDatatTypeForServiceImplementationsLE4TUidRK7TDesC16 @ 277 NONAME
+	_ZN4Usif21CAppServiceInfoFilter5NewLCEv @ 278 NONAME
+	_ZN4Usif24RApplicationRegistryView5CloseEv @ 279 NONAME
+	_ZN4Usif24RApplicationRegistryView9OpenViewLERKNS_26RSoftwareComponentRegistryE9TLanguage @ 280 NONAME
+	_ZN4Usif24RApplicationRegistryView9OpenViewLERKNS_26RSoftwareComponentRegistryERK6RArrayI4TUidE9TLanguage @ 281 NONAME
+	_ZN4Usif24RApplicationRegistryViewC1Ev @ 282 NONAME
+	_ZN4Usif24RApplicationRegistryViewC2Ev @ 283 NONAME
+	_ZN4Usif26RSoftwareComponentRegistry20AddApplicationEntryLEiRKNS_28CApplicationRegistrationDataE @ 284 NONAME
+	_ZN4Usif26RSoftwareComponentRegistry23DeleteApplicationEntryLE4TUid @ 285 NONAME
+	_ZN4Usif26RSoftwareComponentRegistry25DeleteApplicationEntriesLEi @ 286 NONAME
+	_ZN4Usif27TApplicationCharacteristics12InternalizeLER11RReadStream @ 287 NONAME
+	_ZN4Usif27TApplicationCharacteristicsC1Ev @ 288 NONAME
+	_ZN4Usif27TApplicationCharacteristicsC2Ev @ 289 NONAME
+	_ZN4Usif28CApplicationRegistrationData12InternalizeLER11RReadStream @ 290 NONAME
+	_ZN4Usif28CApplicationRegistrationData4NewLER11RReadStream @ 291 NONAME
+	_ZN4Usif28CApplicationRegistrationData4NewLER13RPointerArrayI7HBufC16ERS1_INS_12CServiceInfoEERS1_INS_19CLocalizableAppInfoEERS1_INS_14CPropertyEntryEE4TUidRK7TDesC16 @ 292 NONAME
+	_ZN4Usif28CApplicationRegistrationData4NewLER13RPointerArrayI7HBufC16ERS1_INS_12CServiceInfoEERS1_INS_19CLocalizableAppInfoEERS1_INS_14CPropertyEntryEERS1_INS_11COpaqueDataEE4TUidRK7TDesC16RNS_27TApplicationCharacteristicsEii @ 293 NONAME
+	_ZN4Usif28CApplicationRegistrationData4NewLEv @ 294 NONAME
+	_ZN4Usif28CApplicationRegistrationData5NewLCER13RPointerArrayI7HBufC16ERS1_INS_12CServiceInfoEERS1_INS_19CLocalizableAppInfoEERS1_INS_14CPropertyEntryEE4TUidRK7TDesC16 @ 295 NONAME
+	_ZN4Usif28CApplicationRegistrationData5NewLCER13RPointerArrayI7HBufC16ERS1_INS_12CServiceInfoEERS1_INS_19CLocalizableAppInfoEERS1_INS_14CPropertyEntryEERS1_INS_11COpaqueDataEE4TUidRK7TDesC16RNS_27TApplicationCharacteristicsEii @ 296 NONAME
+	_ZN4Usif28CApplicationRegistrationData5NewLCEv @ 297 NONAME
+	_ZN4Usif28RApplicationRegistrationInfo11GetAppInfoLE4TUidRNS_11TAppRegInfoE9TLanguage @ 298 NONAME
+	_ZN4Usif28RApplicationRegistrationInfo5CloseEv @ 299 NONAME
+	_ZN4Usif28RApplicationRegistrationInfo5OpenLERKNS_26RSoftwareComponentRegistryE @ 300 NONAME
+	_ZN4Usif28RApplicationRegistrationInfoC1Ev @ 301 NONAME
+	_ZN4Usif28RApplicationRegistrationInfoC2Ev @ 302 NONAME
+	_ZN4Usif31RRegistrationInfoForApplication5CloseEv @ 303 NONAME
+	_ZN4Usif31RRegistrationInfoForApplication5OpenLERKNS_26RSoftwareComponentRegistryE4TUid9TLanguage @ 304 NONAME
+	_ZN4Usif31RRegistrationInfoForApplicationC1Ev @ 305 NONAME
+	_ZN4Usif31RRegistrationInfoForApplicationC2Ev @ 306 NONAME
+	_ZN4Usif9CDataType12InternalizeLER11RReadStream @ 307 NONAME
+	_ZN4Usif9CDataType4NewLER11RReadStream @ 308 NONAME
+	_ZN4Usif9CDataType4NewLEiRK7TDesC16 @ 309 NONAME
+	_ZN4Usif9CDataType4NewLEv @ 310 NONAME
+	_ZN4Usif9CDataType5NewLCEiRK7TDesC16 @ 311 NONAME
+	_ZN4Usif9CDataType5NewLCEv @ 312 NONAME
+	_ZNK4Usif11COpaqueData12ExternalizeLER12RWriteStream @ 313 NONAME
+	_ZNK4Usif11TAppRegInfo12ExternalizeLER12RWriteStream @ 314 NONAME
+	_ZNK4Usif11TAppRegInfo12ShortCaptionEv @ 315 NONAME
+	_ZNK4Usif11TAppRegInfo3UidEv @ 316 NONAME
+	_ZNK4Usif11TAppRegInfo7CaptionEv @ 317 NONAME
+	_ZNK4Usif11TAppRegInfo8FullNameEv @ 318 NONAME
+	_ZNK4Usif12CAppViewData10ScreenModeEv @ 319 NONAME
+	_ZNK4Usif12CAppViewData12ExternalizeLER12RWriteStream @ 320 NONAME
+	_ZNK4Usif12CAppViewData18CaptionAndIconInfoEv @ 321 NONAME
+	_ZNK4Usif12CAppViewData3UidEv @ 322 NONAME
+	_ZNK4Usif12CServiceInfo10OpaqueDataEv @ 323 NONAME
+	_ZNK4Usif12CServiceInfo12ExternalizeLER12RWriteStream @ 324 NONAME
+	_ZNK4Usif12CServiceInfo3UidEv @ 325 NONAME
+	_ZNK4Usif12CServiceInfo9DataTypesEv @ 326 NONAME
+	_ZNK4Usif14CAppInfoFilter12ExternalizeLER12RWriteStream @ 327 NONAME
+	_ZNK4Usif17TEmbeddableFilter18EmbeddabilityFlagsEv @ 328 NONAME
+	_ZNK4Usif17TEmbeddableFilter20MatchesEmbeddabilityENS_27TApplicationCharacteristics17TAppEmbeddabilityE @ 329 NONAME
+	_ZNK4Usif18RScrInternalClient18GenerateNewAppUidLEv @ 330 NONAME
+	_ZNK4Usif19CCaptionAndIconInfo12ExternalizeLER12RWriteStream @ 331 NONAME
+	_ZNK4Usif19CCaptionAndIconInfo12IconFileNameEv @ 332 NONAME
+	_ZNK4Usif19CCaptionAndIconInfo13NumOfAppIconsEv @ 333 NONAME
+	_ZNK4Usif19CCaptionAndIconInfo7CaptionEv @ 334 NONAME
+	_ZNK4Usif19CLauncherExecutable12ExternalizeLER12RWriteStream @ 335 NONAME
+	_ZNK4Usif19CLauncherExecutable6TypeIdEv @ 336 NONAME
+	_ZNK4Usif19CLauncherExecutable8LauncherEv @ 337 NONAME
+	_ZNK4Usif19CLocalizableAppInfo12ExternalizeLER12RWriteStream @ 338 NONAME
+	_ZNK4Usif19CLocalizableAppInfo12ShortCaptionEv @ 339 NONAME
+	_ZNK4Usif19CLocalizableAppInfo12ViewDataListEv @ 340 NONAME
+	_ZNK4Usif19CLocalizableAppInfo18CaptionAndIconInfoEv @ 341 NONAME
+	_ZNK4Usif19CLocalizableAppInfo19ApplicationLanguageEv @ 342 NONAME
+	_ZNK4Usif19CLocalizableAppInfo9GroupNameEv @ 343 NONAME
+	_ZNK4Usif20RApplicationInfoView15GetNextAppInfoLEiR13RPointerArrayINS_11TAppRegInfoEE @ 344 NONAME
+	_ZNK4Usif21CAppServiceInfoFilter12ExternalizeLER12RWriteStream @ 345 NONAME
+	_ZNK4Usif24RApplicationRegistryView35GetNextApplicationRegistrationInfoLEiR13RPointerArrayINS_28CApplicationRegistrationDataEE @ 346 NONAME
+	_ZNK4Usif26RSoftwareComponentRegistry21GetComponentIdForAppLE4TUid @ 347 NONAME
+	_ZNK4Usif26RSoftwareComponentRegistry23GetAppUidsForComponentLEiR6RArrayI4TUidE @ 348 NONAME
+	_ZNK4Usif26RSoftwareComponentRegistry24GetApplicationLaunchersLER13RPointerArrayINS_19CLauncherExecutableEE @ 349 NONAME
+	_ZNK4Usif27TApplicationCharacteristics12ExternalizeLER12RWriteStream @ 350 NONAME
+	_ZNK4Usif28CApplicationRegistrationData10AttributesEv @ 351 NONAME
+	_ZNK4Usif28CApplicationRegistrationData12ExternalizeLER12RWriteStream @ 352 NONAME
+	_ZNK4Usif28CApplicationRegistrationData12ServiceArrayEv @ 353 NONAME
+	_ZNK4Usif28CApplicationRegistrationData13AppOpaqueDataEv @ 354 NONAME
+	_ZNK4Usif28CApplicationRegistrationData13AppPropertiesEv @ 355 NONAME
+	_ZNK4Usif28CApplicationRegistrationData13EmbeddabilityEv @ 356 NONAME
+	_ZNK4Usif28CApplicationRegistrationData14OwnedFileArrayEv @ 357 NONAME
+	_ZNK4Usif28CApplicationRegistrationData19DefaultScreenNumberEv @ 358 NONAME
+	_ZNK4Usif28CApplicationRegistrationData22LocalizableAppInfoListEv @ 359 NONAME
+	_ZNK4Usif28CApplicationRegistrationData6AppUidEv @ 360 NONAME
+	_ZNK4Usif28CApplicationRegistrationData6HiddenEv @ 361 NONAME
+	_ZNK4Usif28CApplicationRegistrationData6LaunchEv @ 362 NONAME
+	_ZNK4Usif28CApplicationRegistrationData6TypeIdEv @ 363 NONAME
+	_ZNK4Usif28CApplicationRegistrationData7AppFileEv @ 364 NONAME
+	_ZNK4Usif28CApplicationRegistrationData7NewFileEv @ 365 NONAME
+	_ZNK4Usif28CApplicationRegistrationData9GroupNameEv @ 366 NONAME
+	_ZNK4Usif28RApplicationRegistrationInfo15GetServiceInfoLEPNS_21CAppServiceInfoFilterER13RPointerArrayINS_12CServiceInfoEE9TLanguage @ 367 NONAME
+	_ZNK4Usif28RApplicationRegistrationInfo18GetAppForDataTypeLERK7TDesC16 @ 368 NONAME
+	_ZNK4Usif28RApplicationRegistrationInfo28GetAppForDataTypeAndServiceLERK7TDesC164TUid @ 369 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication11GetAppIconLERP7HBufC16 @ 370 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication12GetAppViewsLER13RPointerArrayINS_12CAppViewDataEE @ 371 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication15GetAppViewIconLE4TUidRP7HBufC16 @ 372 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication17GetAppOwnedFilesLER13RPointerArrayI7HBufC16E @ 373 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication19GetAppServicesUidsLER6RArrayI4TUidE @ 374 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication20ApplicationLanguageLEv @ 375 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication20DefaultScreenNumberLEv @ 376 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication22GetAppCharacteristicsLERNS_27TApplicationCharacteristicsE @ 377 NONAME
+	_ZNK4Usif31RRegistrationInfoForApplication24NumberOfOwnDefinedIconsLEv @ 378 NONAME
+	_ZNK4Usif9CDataType12ExternalizeLER12RWriteStream @ 379 NONAME
+	_ZNK4Usif9CDataType4TypeEv @ 380 NONAME
+	_ZNK4Usif9CDataType8PriorityEv @ 381 NONAME
 
--- a/installationservices/swcomponentregistry/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,6 +31,8 @@
 // SCR exported headers
 
 ../inc/screntries.h			SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(usif/scr/screntries.h)
+../inc/appregentries.h			SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(usif/scr/appregentries.h)
+../inc/appreginfo.h			SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(usif/scr/appreginfo.h)
 ../inc/scr.h 				SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(usif/scr/scr.h)
 ../inc/scrcommon.h 			SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(usif/scr/scrcommon.h)
 ../inc/scrcommon.inl 		SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(usif/scr/scrcommon.inl)
@@ -66,6 +68,7 @@
 ../test/group/tscr.mmp		// SCR Test Harness
 ../test/group/tscrdatalayer.mmp		// SCR Data Layer Test Harness
 ../test/group/tscraccessor.mmp		// SCR Accessor
+../test/group/tscrapparc.mmp		// SCR-Apparc Test Harness
 
 #endif // TOOLS2
 #endif // TOOLS
@@ -83,6 +86,10 @@
 ../test/tscr/scripts/tscr_versioning.script		z:/tusif/tscr/tscr_versioning.script
 ../test/tscr/scripts/tscr_oom.script		z:/tusif/tscr/tscr_oom.script
 
+../test/tscr/scripts/tscr_appreginfo.ini	z:/tusif/tscr/tscr_appreginfo.ini
+../test/tscr/scripts/tscr_appreginfo.script	z:/tusif/tscr/tscr_appreginfo.script
+../test/tscr/scripts/tscrapparc.script	        z:/tusif/tscr/tscrapparc.script
+
 ../test/tscrdatalayer/scripts/tscr_datalayer.script		z:/tusif/tscrdatalayer/tscr_datalayer.script
 ../test/tscrdatalayer/scripts/tscr_datalayer_oom.script	z:/tusif/tscrdatalayer/tscr_datalayer_oom.script
 ../test/tscrdatalayer/scripts/tscr_datalayer_oom.ini	z:/tusif/tscrdatalayer/tscr_datalayer_oom.ini
@@ -99,6 +106,7 @@
 ../test/tscr/scripts/data/scr-noentriesinversiontable.db			z:/tusif/tscr/data/scr-noentriesinversiontable.db
 ../test/tscr/scripts/data/scr-newerminordbversion.db 	z:/tusif/tscr/data/scr-newerminordbversion.db
 ../test/tscr/scripts/data/scr-oldermajordbversion.db 	z:/tusif/tscr/data/scr-oldermajordbversion.db
+../test/tscr/scripts/data/scr-multiapp.db 	z:/tusif/tscr/data/scr-multiapp.db
 
 ../test/testdb/scr.db			z:/sys/install/scr/provisioned/scr.db
 
--- a/installationservices/swcomponentregistry/group/scrclient.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/group/scrclient.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -32,7 +32,7 @@
 
 SOURCE				scrclient.cpp
 SOURCE				screntries.cpp
-SOURCE				scrclientsubsessions.cpp
+SOURCE				scrclientsubsessions.cpp appregentries.cpp appreginfo.cpp
 
 DEFFILE				../~/scrclient.def
 
@@ -42,5 +42,5 @@
 
 LIBRARY				euser.lib 
 LIBRARY 			estor.lib 
-LIBRARY				scsclient.lib ipcstream.lib efsrv.lib
-SMPSAFE
\ No newline at end of file
+LIBRARY				scsclient.lib ipcstream.lib efsrv.lib 
+SMPSAFE
--- a/installationservices/swcomponentregistry/group/scrserver.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/group/scrserver.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -30,6 +30,7 @@
 SOURCE		  scrsession.cpp
 SOURCE        scrsubsession.cpp
 SOURCE		  scrrequestimpl.cpp
+SOURCE		  scrrepository.cpp
 
 USERINCLUDE   ../inc
 USERINCLUDE   ../inc_private
@@ -50,4 +51,5 @@
 LIBRARY		  scsserver.lib  
 LIBRARY		  scrclient.lib securityutils.lib
 LIBRARY		  scrhelperclient.lib stsclient.lib
+LIBRARY		  centralrepository.lib 
 SMPSAFE
\ No newline at end of file
--- a/installationservices/swcomponentregistry/group/security_softwarecomponentregistry.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/group/security_softwarecomponentregistry.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_softwarecomponentregistry
 source	\sf\mw\appinstall\installationservices\swcomponentregistry
 source	\sf\mw\appinstall\installationservices\swinstallationfw\common
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/inc/appregentries.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,1021 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Declares entry classes for Software Components Registry interface.
+*
+*/
+
+/**
+ @file
+ @publishedAll
+ @prototype 
+*/
+
+#ifndef APPREGENTRIES_H
+#define APPREGENTRIES_H
+
+#include <e32base.h>
+#include <s32strm.h>
+#include <f32file.h> 
+namespace Usif
+    {
+
+    class CScrRequestImpl;
+    class CDataType;
+    class CServiceInfo;
+    class CLocalizableAppInfo;
+    class CAppViewData;
+    class CCaptionAndIconInfo;
+     
+    
+    const TInt KSCRMaxAppGroupName=0x10; // Length of App's logical groupname
+    typedef TBuf<KSCRMaxAppGroupName> TAppGroupName;
+    
+    NONSHARABLE_CLASS (TApplicationCharacteristics)
+    /**
+     Used to store application characteristics like its embeddabilty, group name etc.
+     */
+         {
+     public:
+         /**
+          Creates an empty TApplicationCharacteristics object.
+          */
+         IMPORT_C TApplicationCharacteristics();
+         
+         IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+         
+         IMPORT_C void InternalizeL(RReadStream& aStream);
+             
+     public:
+         /** 
+           Defines an application's support for embeddability. 
+          */
+         enum TAppEmbeddability {
+             /** 
+              An application cannot be embedded. 
+             */
+             ENotEmbeddable=0,
+             /** 
+              An application can be run embedded or standalone and can read/write embedded document-content. 
+             */
+             EEmbeddable=1,
+             /** 
+              An application can only be run embedded and can read/write embedded document-content. 
+             */
+             EEmbeddableOnly=2,
+             /** 
+              An application can be run embedded or standalone and cannot read/write embedded document-content. 
+             */
+             EEmbeddableUiOrStandAlone=5,
+             /** 
+              An application can only be run embedded and cannot read/write embedded document-content. 
+             */
+             EEmbeddableUiNotStandAlone=6 
+             };         
+         /** 
+          Indicates the extent to which the application can be embedded.
+         */
+         TAppEmbeddability iEmbeddability;
+         /** 
+          Indicates whether the application is document-based and supports being asked 
+          to create a new file. 
+         */
+         TBool iSupportsNewFile;
+         /** 
+          Indicates whether the existence of the application should be advertised to the 
+          user. If this is set to ETrue, the application does not appear on the Extras 
+          Bar (or equivalent). 
+         */
+         TBool iAppIsHidden; // not shown in the Shell etc.
+         /** 
+          Allows the application to be launched in the foreground (when set to EFalse) 
+          or in the background (when set to ETrue). 
+         */
+         TBool iLaunchInBackground;  // Series 60 extension to allow apps to be launched in the background   
+         /** 
+          Stores the application's logical group name. 
+         */
+         TAppGroupName iGroupName; // Series 60 extension to allow apps to be categorized according a logical group name, e.g. 'games'
+         /** 
+          Indicates the application attributes. One or more values from TCapabilityAttribute may be specified. 
+         */
+         TUint iAttributes;
+         };    
+    
+    class TEmbeddableFilter
+       {
+    public:
+       /** Constructs an empty embeddability filter. 
+        */
+       IMPORT_C TEmbeddableFilter();
+       
+       /** Adds aEmbeddability value to the EmbeddabilityFlag. 
+        */
+       IMPORT_C void AddEmbeddability(TApplicationCharacteristics::TAppEmbeddability aEmbeddability);
+       
+       /** Compares aEmbeddability with the filter.
+        * @param aEmbeddability TAppEmbeddability value to compare.
+        * @see TAppEmbeddability for more details.
+        * @return True, if aEmbeddability is included in the filter; false, otherwise. 
+        */
+       IMPORT_C TBool MatchesEmbeddability(TApplicationCharacteristics::TAppEmbeddability aEmbeddability) const;
+       
+       /** Sets the value of aEmbeddability with EmbeddabilityFlag's value.
+        */
+       void  SetEmbeddabilityFlags(TUint aEmbeddabilityFlags);
+       
+       /** Return the value of iEmbeddability.
+        */
+       IMPORT_C TUint EmbeddabilityFlags() const;
+    private:
+       TUint iEmbeddabilityFlags;
+       };
+    
+    
+    NONSHARABLE_CLASS(CAppInfoFilter) : public CBase
+    /**
+        A filter class which is used to filter the Application registration Info stored in the SCR.
+        An empty filter object is first created and then required filter keys are set separately.
+     */
+        {
+        friend class CScrRequestImpl;
+      
+    public:
+        /**
+            Creates an empty AppRegistrationInfo filter object.
+            @return A pointer to the newly allocated AppRegistrationInfo filter object, if creation is successful.
+         */
+        IMPORT_C static CAppInfoFilter* NewL();
+        
+        /**
+            Creates an empty AppRegistrationInfo filter object.
+            @return A pointer to the newly allocated AppRegistrationInfo filter object, if creation is successful.
+                    The pointer is also put onto the cleanup stack.
+         */
+        IMPORT_C static CAppInfoFilter* NewLC();
+        
+        /**
+            Creates a AppRegistrationInfo filter object from a stream.
+            @param aStream The stream to read the AppRegistrationInfo filter object from
+            @return A pointer to the newly allocated AppRegistrationInfo filter object, if creation is successful.
+            @internalComponent
+         */
+        IMPORT_C static CAppInfoFilter* NewL(RReadStream& aStream);
+        
+        IMPORT_C void SetAllApps();
+        IMPORT_C void SetAllApps(const TInt aScreenMode);
+        
+        IMPORT_C void SetEmbeddableApps();
+        IMPORT_C void SetEmbeddableApps(const TInt aScreenMode);
+        
+        IMPORT_C void SetEmbeddabilityFilter(TEmbeddableFilter& aEmbeddabilityFilter);    
+        IMPORT_C void SetEmbeddabilityFilterWithScreenMode(TEmbeddableFilter& aEmbeddabilityFilter, const TInt aScreenMode);  
+        
+        IMPORT_C void SetCapabilityAttributeMaskAndValue(const TInt aCapabilityAttributeMask, const TInt aCapabilityAttributeValue);
+        IMPORT_C void SetCapabilityAttributeMaskAndValue(const TInt aCapabilityAttributeMask, const TInt aCapabilityAttributeValue, const TInt aScreenMode );
+                
+        IMPORT_C void SetServerApps(const TUid aServiceUid);
+        IMPORT_C void SetServerApps(const TUid aServiceUid, const TInt aScreenMode);
+
+        ~CAppInfoFilter();
+        IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+        void InternalizeL(RReadStream& aStream);
+        
+    private:
+        CAppInfoFilter();
+        void ConstructL();
+               
+        enum TAppRegInfoFlag
+            {
+            EAllApps                                                    = 0x0001,
+            EAllAppsWithScreenMode                                      = 0x0002,
+            EGetEmbeddableApps                                          = 0x0004,
+            EGetEmbeddableAppsWithSreenMode                             = 0x0008,
+            EGetFilteredAppsWithEmbeddabilityFilter                     = 0x0010,
+            EGetFilteredAppsWithEmbeddabilityFilterWithScreenMode       = 0x0020,
+            EGetFilteredAppsWithCapabilityMaskAndValue                  = 0x0040,
+            EGetFilteredAppsWithCapabilityMaskAndValueWithScreenMode    = 0x0080,
+            EGetServerApps                                              = 0x0100,
+            EGetServerAppsWithScreenMode                                = 0x0200,
+            };
+        
+    private:
+        TUint16               iSetFlag;                                 ///< Flag variable that shows what fields have been set
+        TInt                  iScreenMode;                              ///< Sreen Mode of the application
+        TEmbeddableFilter     iEmbeddabilityFilter;                     ///< Embeddabilty Filter
+        TUint                 iCapabilityAttributeMask;                 ///< Capability attribute bit mask
+        TUint                 iCapabilityAttributeValue;                ///< Capability attribute bit value
+        TUid                  iServiceUid;                              ///< Service Uid
+        TUid                  iAppUid;                                  ///< Application Uid
+        };
+
+    
+    NONSHARABLE_CLASS(CAppServiceInfoFilter) : public CBase
+    /*
+     * A filter class that determines the information fields that need to be set before a GetServiceInfoL is invoked.
+     * Initially an empty filter is created and subsequently the Set methods are used to set the filter based on the input parameters 
+     * with which the GetServiceInfoL query is made.
+     */
+    	{
+    	friend class CScrRequestImpl;
+    	      
+    public:
+    	    	
+       	/**
+    	Creates an empty CAppServiceInfoFilter filter object.
+    	@return A pointer to the newly allocated CAppServiceInfoFilter filter object, if creation is successful.
+    	*/
+    	IMPORT_C static CAppServiceInfoFilter* NewL();
+    	    	        
+    	/**
+    	Creates an empty CAppServiceInfoFilter filter object.
+    	@return A pointer to the newly allocated CAppServiceInfoFilter filter object, if creation is successful.
+    	The pointer is also put onto the cleanup stack.
+    	*/
+    	IMPORT_C static CAppServiceInfoFilter* NewLC();
+    	    	        
+    	/**
+    	Creates a CAppServiceInfoFilter filter object from a stream.
+    	@param aStream The stream to read the CAppServiceInfoFilter filter object from
+    	@return A pointer to the newly allocated CAppServiceInfoFilter filter object, if creation is successful.
+    	@internalComponent
+    	*/
+    	IMPORT_C static CAppServiceInfoFilter* NewL(RReadStream& aStream);
+    	    	  
+    	IMPORT_C void SetAppUidForServiceInfo (const TUid aAppUid);
+    	IMPORT_C void SetServiceUidForServiceImplementations (const TUid aServiceUid);
+    	IMPORT_C void SetServiceUidAndDatatTypeForServiceImplementationsL (const TUid aServiceUid, const TDesC& aDataType);
+    	IMPORT_C void SetAppUidAndServiceUidForOpaqueData (const TUid aAppUid, const TUid aServiceUid);
+    	
+    	~CAppServiceInfoFilter();
+    	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+    	void InternalizeL(RReadStream& aStream);
+    	    	               
+    private:
+    	CAppServiceInfoFilter();
+    	void ConstructL();
+    	enum TServiceInfoFlag
+            {
+            EGetServiceInfoForApp                                       = 0x0001,
+            EGetServiceImplementationForServiceUid                      = 0x0002,
+            EGetServiceImplementationForServiceUidAndDatatType          = 0x0004,
+            EGetOpaqueDataForAppWithServiceUid                          = 0x0008,
+            };
+    	
+    private:
+    	TUint16 iSetFlag;  
+    	TUid iAppUid;
+    	TUid iServiceUid;
+    	HBufC* iDataType; 
+    	};
+    
+    
+    NONSHARABLE_CLASS(COpaqueData) : public CBase
+        {
+    friend class CScrRequestImpl;
+    public:
+        /**
+            Creates an empty COpaqueData object.
+            @return A pointer to the newly allocated COpaqueData object, if creation is successful.
+         */            
+        IMPORT_C static COpaqueData* NewL();
+        
+        /**
+            Creates an empty COpaqueData object.
+            @return A pointer to the newly allocated COpaqueData object, if creation is successful.
+                    The pointer is also put onto the cleanup stack.
+         */          
+        IMPORT_C static COpaqueData* NewLC();
+        
+        /**
+            Creates an empty COpaqueData object.
+            
+            @param aOpaqueData  A 8-bit buffer containing the opaque data.
+            @param aLanguage    The language associated with the opaque data. 
+            @return A pointer to the newly allocated COpaqueData object, if creation is successful.
+         */       
+        IMPORT_C static COpaqueData* NewL(TDesC8& aOpaqueData, TLanguage aLanguage);
+        
+        /**
+            Creates an empty COpaqueData object.
+            
+            @param aOpaqueData  A 8-bit buffer containing the opaque data.
+            @param aLanguage    The language associated with the opaque data. 
+            @return A pointer to the newly allocated COpaqueData object, if creation is successful.
+                     The pointer is also put onto the cleanup stack.
+         */           
+        IMPORT_C static COpaqueData* NewLC(TDesC8& aOpaqueData, TLanguage aLanguage);
+        
+        /**
+            Creates a COpaqueData object from the stream.
+                 
+            @param  aStream   The stream to read the COpaqueData object from.
+            @return A pointer to the newly allocated COpaqueData object, if creation is successful.
+         */           
+        IMPORT_C static COpaqueData* NewL(RReadStream& aStream);
+        
+        /**
+         @return The buffer containing the opaque data.
+         */
+        IMPORT_C HBufC8& OpaqueData();
+       
+        /**
+         @return The language associated with the opaque data.
+         */       
+        IMPORT_C TLanguage Language();
+        
+        ~COpaqueData();
+        
+        IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+        
+        IMPORT_C void InternalizeL(RReadStream& aStream);
+        
+    private:
+        COpaqueData();
+        void ConstructL(const TDesC8& aOpaqueData, TLanguage aLanguage);
+
+    private:
+        HBufC8* iOpaqueData;
+        TLanguage iLanguage;
+        };
+
+    class CPropertyEntry;
+    NONSHARABLE_CLASS(CApplicationRegistrationData) : public CBase
+    /*
+     * This contains the basic information of an application such as application's uid, filename, 
+     * attributes, embeddability, groupname, default screen number, opaque data, 
+     * an array of pointers to localizable info, properties, file ownership info etc.
+     *  
+     * N.B. Mandatory fields associated to an application are AppUid and AppFile
+     *      AppFile should contain the abosulte file path, along with the drive and extension (if any)
+     */
+          {
+          friend class CScrRequestImpl;
+      public:
+          /**
+              Creates an empty CApplicationRegistrationData object.
+              @return A pointer to the newly allocated CApplicationRegistrationData object, if creation is successful.
+           */            
+          IMPORT_C static CApplicationRegistrationData* NewL();
+          
+          /**
+              Creates an empty CApplicationRegistrationData object.
+              @return A pointer to the newly allocated CApplicationRegistrationData object, if creation is successful.
+                      The pointer is also put onto the cleanup stack.
+           */                 
+          IMPORT_C static CApplicationRegistrationData* NewLC();
+          
+          /**
+              Creates a CApplicationRegistrationData object from the stream.
+                   
+              @param  aStream   The stream to read the CApplicationRegistrationData object from.
+              @return A pointer to the newly allocated CApplicationRegistrationData object, if creation is successful.
+           */                        
+          IMPORT_C static CApplicationRegistrationData* NewL(RReadStream& aStream);
+          
+          /**
+              Creates a CApplicationRegistrationData object.
+              
+              @param aOwnedFileArray          An array of files owned by the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aServiceArray            An array of services related information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aLocalizableAppInfoList  An array of localizable information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppPropertiesArray      An array of properties associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aOpaqueDataArray         An array of opaque data associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppUid                  The Uid of the application.
+              @param aAppFile                 The executable file associated with the application.
+              @param aCharacteristics         The attributes associated with the application. @see Usif::TApplicationCharacteristics
+              @param aDefaultScreenNumber
+              @param aTypeId
+              
+              
+              @return A pointer to the newly allocated CApplicationRegistrationData object, if creation is successful.
+           */          
+          IMPORT_C static CApplicationRegistrationData* NewL(
+                        RPointerArray<HBufC>& aOwnedFileArray,
+                        RPointerArray<Usif::CServiceInfo>& aServiceArray,
+                        RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList,
+                        RPointerArray<CPropertyEntry>& aAppPropertiesArray,
+                        RPointerArray<COpaqueData>& aOpaqueDataArray,
+                        TUid aAppUid, const TDesC& aAppFile, 
+                        TApplicationCharacteristics& aCharacteristics,
+                        TInt aDefaultScreenNumber, TInt aTypeId = 0);
+          /**
+              Creates a CApplicationRegistrationData object.
+              
+              @param aOwnedFileArray          An array of files owned by the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aServiceArray            An array of services related information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aLocalizableAppInfoList  An array of localizable information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppPropertiesArray      An array of properties associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aOpaqueDataArray         An array of opaque data associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppUid                  The Uid of the application.
+              @param aAppFile                 The executable file associated with the application.
+              @param aCharacteristics         The attributes associated with the application. @see Usif::TApplicationCharacteristics
+              @param aDefaultScreenNumber
+              @param aTypeId
+              
+              
+              @return A pointer to the newly allocated CApplicationRegistrationData object, if creation is successful.
+                      The pointer is also put onto the cleanup stack.
+           */            
+          IMPORT_C static CApplicationRegistrationData * NewLC(
+                        RPointerArray<HBufC>& aOwnedFileArray,
+                        RPointerArray<CServiceInfo>& aServiceArray,
+                        RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList,
+                        RPointerArray<CPropertyEntry>& aAppPropertiesArray,
+                        RPointerArray<COpaqueData>& aOpaqueDataArray,
+                        TUid aAppUid, const TDesC& aAppFile,
+                        TApplicationCharacteristics& aCharacteristics,
+                        TInt aDefaultScreenNumber, TInt aTypeId = 0);
+
+           /**
+              Creates a CApplicationRegistrationData object.
+              
+              @param aOwnedFileArray          An array of files owned by the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aServiceArray            An array of services related information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aLocalizableAppInfoList  An array of localizable information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppPropertiesArray      An array of properties associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppUid                  The Uid of the application.
+              @param aAppFile                 The executable file associated with the application.
+              
+              
+              @return A pointer to the newly allocated CApplicationRegistrationData object, if creation is successful.
+           */            
+          IMPORT_C static CApplicationRegistrationData* NewL(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<CServiceInfo>& aServiceArray, RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList,
+                                                             RPointerArray<CPropertyEntry>& aAppPropertiesArray, TUid aAppUid, 
+                                                             const TDesC& aAppFile);
+           /**
+              Creates a CApplicationRegistrationData object.
+              
+              @param aOwnedFileArray          An array of files owned by the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aServiceArray            An array of services related information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aLocalizableAppInfoList  An array of localizable information associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppPropertiesArray      An array of properties associated with the application. The ownership is also transferred to CApplicationRegistrationData.
+              @param aAppUid                  The Uid of the application.
+              @param aAppFile                 The executable file associated with the application.
+              
+              
+              @return A pointer to the newly allocated CApplicationRegistrationData object, if creation is successful.
+			          The pointer is also put onto the cleanup stack.
+           */             
+          IMPORT_C static CApplicationRegistrationData* NewLC(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<CServiceInfo>& aServiceArray, RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList,
+                                                             RPointerArray<CPropertyEntry>& aAppPropertiesArray, TUid aAppUid, 
+                                                             const TDesC& aAppFile);
+          ~CApplicationRegistrationData();
+          IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+		  IMPORT_C void InternalizeL(RReadStream& aStream);
+              
+          IMPORT_C const TUid AppUid() const;
+          IMPORT_C const TDesC& AppFile() const;
+          IMPORT_C TInt TypeId() const;
+          IMPORT_C TUint Attributes() const;
+          IMPORT_C TBool Hidden() const;
+          IMPORT_C TApplicationCharacteristics::TAppEmbeddability Embeddability() const;
+          IMPORT_C TBool NewFile() const;
+          IMPORT_C TBool Launch() const;
+          IMPORT_C const TDesC& GroupName() const;
+          IMPORT_C TInt DefaultScreenNumber() const;
+          IMPORT_C const RPointerArray<HBufC>& OwnedFileArray() const;
+          IMPORT_C const RPointerArray<CServiceInfo>& ServiceArray() const;
+          IMPORT_C const RPointerArray<CLocalizableAppInfo>& LocalizableAppInfoList() const;
+          IMPORT_C const RPointerArray<CPropertyEntry>& AppProperties() const;
+          IMPORT_C const RPointerArray<COpaqueData>& AppOpaqueData() const;
+
+      private:
+          CApplicationRegistrationData();
+          void ConstructL(RPointerArray<HBufC>& aOwnedFileArray,
+                RPointerArray<CServiceInfo>& aServiceArray, 
+                RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList,
+                RPointerArray<CPropertyEntry>& aAppPropertiesArray,
+                RPointerArray<COpaqueData>& aOpaqueDataArray, TUid aAppUid,
+                const TDesC& aAppFile, TApplicationCharacteristics& aCharacteristics,
+                TInt aDefaultScreenNumber, TInt aTypeId);
+          
+          void ConstructL(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<CServiceInfo>& aServiceArray,
+                                    RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList, RPointerArray<CPropertyEntry>& aAppPropertiesArray,
+                                    TUid aAppUid, const TDesC& aAppFile);
+          
+          void ConstructL(const TDesC& aAppFile);
+      private:
+      
+          RPointerArray<HBufC> iOwnedFileArray;                               // FileOwnershipInfo
+          RPointerArray<CServiceInfo> iServiceArray;                    // Service Info and Service Data Type
+          RPointerArray<CLocalizableAppInfo> iLocalizableAppInfoList;   //LocalizableAppInfo
+          RPointerArray<CPropertyEntry> iAppPropertiesArray;            // AppProperties
+          RPointerArray<COpaqueData> iOpaqueDataArray;
+          
+          // AppRegistrationInfo Table
+          TUid iAppUid;
+          HBufC* iAppFile;
+          TInt iTypeId;
+          TApplicationCharacteristics iCharacteristics;
+          TInt iDefaultScreenNumber;                          
+          };
+
+    
+  NONSHARABLE_CLASS(CDataType) : public CBase
+  /*
+   * It contains the priority and type information associated to each service provided by the application.
+   */
+      {
+      friend class CScrRequestImpl;
+  public:
+      /**
+          Creates an empty CDataType object.
+          @return A pointer to the newly allocated CDataType object, if creation is successful.
+       */       
+      IMPORT_C static CDataType* NewL();
+      
+      /**
+          Creates an empty CDataType object.
+          @return A pointer to the newly allocated CDataType object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */          
+      IMPORT_C static CDataType* NewLC();
+      
+      /**
+          Creates a CDataType object from the stream.
+               
+          @param  aStream   The stream to read the CDataType object from.
+          @return A pointer to the newly allocated CDataType object, if creation is successful.
+       */         
+      IMPORT_C static CDataType* NewL(RReadStream& aStream);
+      
+      /**
+          Creates a CDataType object.
+          
+          @param aPriority The priority to be associated with the service.
+          @param aType     The type information to be associated with the service.
+          @return A pointer to the newly allocated CDataType object, if creation is successful.
+       */         
+      IMPORT_C static CDataType* NewL(TInt aPriority, const TDesC& aType);
+      
+      /**
+          Creates a CDataType object.
+          
+          @param aPriority The priority to be associated with the service.
+          @param aType     The type information to be associated with the service.
+          @return A pointer to the newly allocated CDataType object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.          
+       */       
+      IMPORT_C static CDataType* NewLC(TInt aPriority, const TDesC& aType);
+      
+      ~CDataType();
+      
+      IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+	  
+      IMPORT_C void InternalizeL(RReadStream& aStream);
+      
+      /**
+       @return The priority associated with the service.
+       */
+      IMPORT_C TInt Priority() const;
+ 
+      /**
+       @return The type information associated with the service.
+       */      
+      IMPORT_C const TDesC& Type() const;
+  private:
+          CDataType();
+          void ConstructL(TInt aPriority, const TDesC& aType);
+  private:    
+          TInt iPriority;
+          HBufC* iType;
+      };
+
+  
+  NONSHARABLE_CLASS(CServiceInfo) : public CBase
+  /*
+   * This contains the service related information such as service Uid, opaque data and data type information associated with an applciation.
+   */
+      {
+      friend class CScrRequestImpl;
+  public:
+      /**
+          Creates an empty CServiceInfo object.
+          @return A pointer to the newly allocated CServiceInfo object, if creation is successful.
+       */       
+      IMPORT_C static CServiceInfo* NewL();
+     
+      /**
+          Creates an empty CServiceInfo object.
+          @return A pointer to the newly allocated CServiceInfo object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */       
+      IMPORT_C static CServiceInfo* NewLC();
+      
+      /**
+          Creates a CServiceInfo object from the stream.
+               
+          @param  aStream   The stream to read the CServiceInfo object from.
+          @return A pointer to the newly allocated CServiceInfo object, if creation is successful.
+       */        
+      IMPORT_C static CServiceInfo* NewL(RReadStream& aStream);
+      
+      /**
+          Creates a CServiceInfo object.
+          @param  aUid              The Uid associated with the service.
+          @param  aOpaqueDataArray  An array of opaque data associated with the service. The ownership is also transferred to 
+                                    the CServiceInfo object.
+          @param  aDataTypes        An array of data types associated with the service. The ownership is also transferred to 
+                                    the CServiceInfo object.            
+          @return A pointer to the newly allocated CServiceInfo object, if creation is successful.
+       */       
+      IMPORT_C static CServiceInfo* NewL(const TUid aUid, RPointerArray<COpaqueData>& aOpaqueDataArray, RPointerArray<CDataType>& aDataTypes);
+      
+      /**
+          Creates a CServiceInfo object.
+          @param  aUid              The Uid associated with the service.
+          @param  aOpaqueDataArray  An array of opaque data associated with the service. The ownership is also transferred to 
+                                    the CServiceInfo object.
+          @param  aDataTypes        An array of data types associated with the service. The ownership is also transferred to 
+                                    the CServiceInfo object.           
+          @return A pointer to the newly allocated CServiceInfo object, if creation is successful.
+       */         
+      IMPORT_C static CServiceInfo* NewLC(const TUid aUid, RPointerArray<COpaqueData>& aOpaqueDataArray, RPointerArray<CDataType>& aDataTypes);
+      ~CServiceInfo();
+      IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+	  IMPORT_C void InternalizeL(RReadStream& aStream);
+	  
+	  /**
+	   @return The Uid associated with the service.
+	   */
+      IMPORT_C const TUid Uid() const;
+      
+      /**
+       @return The array of data types associated with the service.
+       */      
+      IMPORT_C const RPointerArray<CDataType>& DataTypes() const;
+      
+      /**
+       @return The array of opaque data associated with the service.
+       */          
+      IMPORT_C const RPointerArray<COpaqueData>& OpaqueData() const;
+  private:
+          CServiceInfo();
+          void ConstructL(const TUid aUid, RPointerArray<COpaqueData>& aOpaqueDataArray, RPointerArray<CDataType>& aDataTypes);
+  private:    
+          TUid iUid;
+          RPointerArray<CDataType> iDataTypes;
+          RPointerArray<COpaqueData> iOpaqueDataArray;
+      };
+
+  
+  NONSHARABLE_CLASS(CLocalizableAppInfo) : public CBase
+  /*
+   * This contains localizable information associated with an application.
+   */
+      {
+      friend class CScrRequestImpl;
+  public:
+      /**
+          Creates an empty CLocalizableAppInfo object.
+          @return A pointer to the newly allocated CLocalizableAppInfo object, if creation is successful.
+       */         
+      IMPORT_C static CLocalizableAppInfo* NewL();
+      
+      /**
+          Creates an empty CLocalizableAppInfo object.
+          @return A pointer to the newly allocated CLocalizableAppInfo object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */         
+      IMPORT_C static CLocalizableAppInfo* NewLC();
+      
+      /**
+          Creates a CLocalizableAppInfo object from the stream.
+               
+          @param  aStream   The stream to read the CLocalizableAppInfo object from.
+          @return A pointer to the newly allocated CLocalizableAppInfo object, if creation is successful.
+       */               
+      IMPORT_C static CLocalizableAppInfo* NewL(RReadStream& aStream);
+      
+      /**
+          Creates a CLocalizableAppInfo object.
+          
+          @param  aShortCaption          A locale specific short caption associated with the application. 
+          @param  aApplicationLanguage   A language that the application is localized in. 
+          @param  aGroupName             A group name associated with the application. 
+          @param  aCaptionAndIconInfo    A locale specific caption and icon information associated with the application. The ownership is also transferred
+                                         to the CLocalizableAppInfo object.
+          @param  aViewDataList          An array of view information associated with the application. The ownership is also transferred
+                                         to the CLocalizableAppInfo object.                  
+          @return A pointer to the newly allocated CLocalizableAppInfo object, if creation is successful.
+       */       
+      IMPORT_C static CLocalizableAppInfo* NewL(const TDesC& aShortCaption, TLanguage aApplicationLanguage, const TDesC& aGroupName, CCaptionAndIconInfo* aCaptionAndIconInfo, RPointerArray<CAppViewData>& aViewDataList);
+      
+      /**
+          Creates a CLocalizableAppInfo object.
+          
+          @param  aShortCaption          A locale specific short caption associated with the application.
+          @param  aApplicationLanguage   A language that the application is localized in.
+          @param  aGroupName             A group name associated with the application.
+          @param  aCaptionAndIconInfo    A locale specific caption and icon information associated with the application. The ownership is also transferred
+                                         to the CLocalizableAppInfo object.     
+          @param  aViewDataList          An array of view information associated with the application. The ownership is also transferred
+                                         to the CLocalizableAppInfo object.                       
+          @return A pointer to the newly allocated CLocalizableAppInfo object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.     
+       */        
+      IMPORT_C static CLocalizableAppInfo* NewLC(const TDesC& aShortCaption, TLanguage aApplicationLanguage, const TDesC& aGroupName, CCaptionAndIconInfo* aCaptionAndIconInfo, RPointerArray<CAppViewData>& aViewDataList);
+      
+      ~CLocalizableAppInfo();
+      
+      IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+	  
+      IMPORT_C void InternalizeL(RReadStream& aStream);
+     
+      /**
+       @return The short caption associated with the locale for the application.
+       */
+      IMPORT_C const TDesC& ShortCaption() const;
+      
+      /**
+       @return The language that the application is localized in.
+       */      
+      IMPORT_C TLanguage ApplicationLanguage() const;
+      
+      /**
+       @return The group name associated with the application.
+       */        
+      IMPORT_C const TDesC& GroupName() const;
+      
+      /**
+       @return The array of Application view information associated with the application.
+       */        
+      IMPORT_C const RPointerArray<CAppViewData>& ViewDataList() const;
+      
+      /**
+       @return The locale specific caption and icon information associated with the application.
+       */        
+      IMPORT_C const CCaptionAndIconInfo* CaptionAndIconInfo() const;
+
+  private:
+      CLocalizableAppInfo();
+      
+      void ConstructL(const TDesC& aShortCaption, TLanguage aApplicationLanguage, const TDesC& aGroupName, CCaptionAndIconInfo* aCaptionAndIconInfo, RPointerArray<Usif::CAppViewData> aViewDataList);
+
+      void ConstructL(const TDesC& aShortCaption, const TDesC& aGroupName);
+
+  private:
+      HBufC* iShortCaption;                               
+      TLanguage iApplicationLanguage;                     
+      HBufC* iGroupName;                                  
+      CCaptionAndIconInfo* iCaptionAndIconInfo;
+      RPointerArray<CAppViewData> iViewDataList;
+      };
+
+  
+  NONSHARABLE_CLASS(CCaptionAndIconInfo) : public CBase
+  /*
+   * This contains the caption and icon information associated to an application such as caption, icon filename and number of icons.
+   * 
+   * N.B. Icon Filename, if present, should contain the absolute file path, along with the drive and extension (if any).
+   */
+      {
+      friend class CScrRequestImpl;
+          
+  public:
+      /**
+          Creates an empty CCaptionAndIconInfo object.
+          @return A pointer to the newly allocated CCaptionAndIconInfo object, if creation is successful.
+       */           
+      IMPORT_C static CCaptionAndIconInfo* NewL();
+      
+      /**
+          Creates an empty CCaptionAndIconInfo object.
+          @return A pointer to the newly allocated CCaptionAndIconInfo object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */           
+      IMPORT_C static CCaptionAndIconInfo* NewLC();
+      
+      /**
+          Creates a CCaptionAndIconInfo object from the stream.
+               
+          @param  aStream   The stream to read the CCaptionAndIconInfo object from.
+          @return A pointer to the newly allocated CCaptionAndIconInfo object, if creation is successful.
+       */          
+      IMPORT_C static CCaptionAndIconInfo* NewL(RReadStream& aStream);
+      
+      /**
+          Creates a CCaptionAndIconInfo object.
+          
+          @param  aCaption       The caption associated with the application. The ownership is transferred to the CCaptionAndIconInfo object.
+          @param  aIconFileName  The absolute filename of the icon file. The ownership is transferred to the CCaptionAndIconInfo object.
+          @param  aNumOfAppIcons The number of icons associated with the application.
+          @return A pointer to the newly allocated CCaptionAndIconInfo object, if creation is successful.
+       */         
+      IMPORT_C static CCaptionAndIconInfo* NewL(const TDesC& aCaption, const TDesC& aIconFileName, TInt aNumOfAppIcons);
+      
+      /**
+          Creates a CCaptionAndIconInfo object.
+          
+          @param  aCaption       The caption associated with the application. The ownership is transferred to the CCaptionAndIconInfo object.
+          @param  aIconFileName  The absolute filename of the icon file. The ownership is transferred to the CCaptionAndIconInfo object.
+          @param  aNumOfAppIcons The number of icons associated with the application.
+          @return A pointer to the newly allocated CCaptionAndIconInfo object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */         
+      IMPORT_C static CCaptionAndIconInfo* NewLC(const TDesC& aCaption, const TDesC& aIconFileName, TInt aNumOfAppIcons);
+     
+      ~CCaptionAndIconInfo();
+      
+      IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+	  
+      IMPORT_C void InternalizeL(RReadStream& aStream);
+      
+      /**
+       @return The caption associated with the application.
+       */
+      IMPORT_C const TDesC& Caption() const;
+      
+      /**
+       @return The absolute name of the icon file associated with the application.
+       */      
+      IMPORT_C const TDesC& IconFileName() const;
+      
+      /**
+       @return The number of icons associated with the application.
+       */      
+      IMPORT_C TInt NumOfAppIcons() const;
+  private:
+      CCaptionAndIconInfo();
+      void ConstructL(const TDesC& aCaption, const TDesC& aIconFileName, TInt aNumOfAppIcons);
+      
+  private:
+      HBufC* iCaption;                                    
+      HBufC* iIconFileName;                                
+      TInt iNumOfAppIcons;                                
+      };
+
+  
+  NONSHARABLE_CLASS(CAppViewData) : public CBase
+  /*
+   * This contains view information of an application such as screenmode and an array of caption and icon info associated with each view.
+   */
+      {
+      friend class CScrRequestImpl;
+
+  public:
+      /**
+          Creates an empty CAppViewData object.
+          @return A pointer to the newly allocated CAppViewData object, if creation is successful.
+       */       
+      IMPORT_C static CAppViewData* NewL();
+      
+      /**
+          Creates an empty CAppViewData object.
+          @return A pointer to the newly allocated CAppViewData object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */       
+      IMPORT_C static CAppViewData* NewLC();
+      
+      /**
+          Creates a CAppViewData object from the stream.
+               
+          @param  aStream   The stream to read the CAppViewData object from.
+          @return A pointer to the newly allocated CAppViewData object, if creation is successful.
+       */       
+      IMPORT_C static CAppViewData* NewL(RReadStream& aStream);
+      
+      /**
+          Creates a CAppViewData object.
+          
+          @param aUid                The Uid of the application.
+          @param aScreenMode         The screen mode associated with the view.
+          @param aCaptionAndIconInfo The caption and icon info associated with the view. The ownership is
+                                     also transferred to the CAppViewData object.
+          @return A pointer to the newly allocated CAppViewData object, if creation is successful.
+       */         
+      IMPORT_C static CAppViewData* NewL(TUid aUid, TInt aScreenMode, CCaptionAndIconInfo* aCaptionAndIconInfo);
+      
+      /**
+          Creates a CAppViewData object.
+          
+          @param aUid                The Uid of the application.
+          @param aScreenMode         The screen mode associated with the view.
+          @param aCaptionAndIconInfo The caption and icon info associated with the view. The ownership is
+                                     also transferred to the CAppViewData object.
+          @return A pointer to the newly allocated CAppViewData object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.     
+       */       
+      IMPORT_C static CAppViewData* NewLC(TUid aUid, TInt aScreenMode, CCaptionAndIconInfo* aCaptionAndIconInfo);
+      
+      ~CAppViewData();
+      
+      IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+	  
+      IMPORT_C void InternalizeL(RReadStream& aStream);
+
+      /**
+       @return The Uid of the application.
+       */
+      IMPORT_C const TUid Uid() const;
+      
+      /**
+       @return The screen mode associated with the view.
+       */      
+      IMPORT_C TInt ScreenMode() const;
+     
+      /**
+       @return The caption and icon info associated with the view.
+       */  
+      IMPORT_C const CCaptionAndIconInfo* CaptionAndIconInfo() const;
+      
+  private:
+      CAppViewData();
+      void ConstructL(TUid aUid, TInt aScreenMode, CCaptionAndIconInfo* aCaptionAndIconInfo);
+      
+  private:
+      TUid iUid;
+      TInt iScreenMode;
+      CCaptionAndIconInfo* iCaptionAndIconInfo;
+      };
+
+  
+  NONSHARABLE_CLASS(CLauncherExecutable) : public CBase
+  /**
+   * This contains information regarding the executable used to launch the application.
+   */
+      {
+      friend class CScrRequestImpl;
+  public:
+      /**
+          Creates an empty CLauncherExecutable object.
+          @return A pointer to the newly allocated CLauncherExecutable object, if creation is successful.
+       */
+      IMPORT_C static CLauncherExecutable* NewL();
+      
+      /**
+          Creates an empty CLauncherExecutable object.
+          @return A pointer to the newly allocated CLauncherExecutable object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */
+      IMPORT_C static CLauncherExecutable* NewLC();
+      
+      /**
+          Creates a CLauncherExecutable object.
+          
+          @param  aTypeId   The Application type id.
+          @param  aLauncher The native executable used to launch the application
+          @return A pointer to the newly allocated CLauncherExecutable object, if creation is successful.
+
+       */
+      IMPORT_C static CLauncherExecutable* NewL(TInt aTypeId, const TDesC& aLauncher);
+      
+      /**
+          Creates a CLauncherExecutable object.
+          
+          @param  aTypeId   The Application type id.
+          @param  aLauncher The native executable used to launch the application
+          @return A pointer to the newly allocated CLauncherExecutable object, if creation is successful.
+                  The pointer is also put onto the cleanup stack.
+       */
+      IMPORT_C static CLauncherExecutable* NewLC(TInt aTypeId, const TDesC& aLauncher);
+      
+      /**
+          Creates a CLauncherExecutable object from the stream.
+               
+          @param  aStream   The stream to read the CLauncherExecutable object from.
+          @return A pointer to the newly allocated CLauncherExecutable object, if creation is successful.
+       */
+      IMPORT_C static CLauncherExecutable* NewL(RReadStream& aStream);
+      
+      IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+      
+      IMPORT_C void InternalizeL(RReadStream& aStream);
+      
+      /**
+         @return The Application type id.
+       */
+      IMPORT_C TInt TypeId() const;
+      
+      /**
+         @return The executable used to launch the application.
+       */      
+      IMPORT_C const TDesC& Launcher() const;
+      
+      IMPORT_C ~CLauncherExecutable();
+        
+  private:
+      CLauncherExecutable();
+      void ConstructL(TInt aTypeId, const TDesC& aLauncher);
+        
+  private:
+      TInt iTypeId;       ///< Application type id (same as the software type id of the component)
+      HBufC* iLauncher;   ///< The native executable used to launch the application
+      };
+
+    
+} // End of USIF Namespace
+
+#endif // APPREGENTRIES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/inc/appreginfo.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* appreginfo.h
+*
+*/
+
+/**
+ @file
+ @publishedAll
+ @prototype 
+*/
+
+#ifndef __APPREGINFO_H__
+#define __APPREGINFO_H__
+
+#include <e32base.h>
+	
+class RReadStream;
+class RWriteStream;
+
+namespace Usif
+    {
+// Defines a modifiable buffer descriptor to contain the caption or the short caption for an application.
+const TInt KMaxAppCaption=0x100;
+typedef TBuf<KMaxAppCaption> TAppCaption;
+
+/** Basic application information. An object of this type contains four pieces of information:
+ - The application specific Uid
+ - The full path name of the application exe
+ - The application's caption
+ - A short caption
+*/
+NONSHARABLE_CLASS (TAppRegInfo)
+	{
+    friend class CScrRequestImpl;
+public:
+
+    IMPORT_C TAppRegInfo();
+    
+    /** 
+    Constructs an application information object from the specified full application path 
+    name, UID and caption.
+
+    @param aAppUid The application specific UID. 
+    @param aAppName The full path name of the application. 
+    @param aCaption The application caption. 
+    */
+    IMPORT_C TAppRegInfo(TUid aAppUid, const TFileName& aAppName, const TAppCaption& aCaption);
+
+    /** 
+    Constructs an application information object from the specified full application path 
+    name, UID, short caption and caption.
+
+    @param aAppUid The application specific UID. 
+    @param aAppName The full path name of the application. 
+    @param aCaption The application caption. 
+    @param aShortCaption The application short caption.
+    */    
+    IMPORT_C TAppRegInfo(TUid aAppUid, const TFileName& aAppName, const TAppCaption& aCaption, const TAppCaption& aShortCaption);
+    
+    IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
+    
+    IMPORT_C void InternalizeL(RReadStream& aStream);
+    
+    /**    
+     @return The application specific UID.
+     */
+    IMPORT_C TUid Uid() const;
+    
+    /**   
+     @return The full path name of the application executable.
+     */    
+    IMPORT_C TFileName FullName() const;
+    
+    /**   
+     @return The caption for the application.
+     */       
+    IMPORT_C TAppCaption Caption() const;
+    
+    /**   
+     @return The short caption for the application.
+     */       
+    IMPORT_C TAppCaption ShortCaption() const;
+    
+private:
+	/** The application specific UID. */
+	TUid iUid;
+	/** The full path name of the application. */
+	TFileName iFullName;
+	/** The caption for the application. */
+	TAppCaption iCaption;
+	/** The short caption for the application. */
+	TAppCaption iShortCaption;
+	};
+}
+#endif
+
--- a/installationservices/swcomponentregistry/inc/scr.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc/scr.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,7 +31,9 @@
 #include <e32base.h>
 #include <usif/usifcommon.h>
 #include <usif/scr/screntries.h>
+#include <usif/scr/appregentries.h>
 #include <scs/scsclient.h>
+#include <usif/scr/appreginfo.h>
 
 namespace Usif
 	{	 
@@ -137,12 +139,12 @@
 				
 			@param aName The non-localizable name of the component being added.
 			@param aVendor The non-localizable vendor name of the component being added.
-			@param aUniqueSwTypeName The non-localized, unique software type name, such as @see Usif::KSoftwareTypeNative and @see Usif::KSoftwareTypeJava.
+			@param aUniqueSwTypeName The non-localized, unique software type name, such as @see KSoftwareTypeNative and @see KSoftwareTypeJava.
 			@param aGlobalId A named, nullable, case-sensitive string used to specify a deterministic identifier for the component 
 						that is unique within the context of that software type. The global component id might be 
 						the package UID for native applications or the MIDlet name/vendor pair for Java MIDLets, etc. 
 						Note that if KNullDesC is provided, the global identifier will be empty.
-			@param aCompOpType The type of the component operation. Typical operations are install or upgrade. @see Usif::TScrComponentOperationType
+			@param aCompOpType The type of the component operation. Typical operations are install or upgrade. @see TScrComponentOperationType
 			@return  The component ID of the newly added entry.
 			
 			@leave KErrScrWriteOperationInProgress If a transaction started by another session is in progress.
@@ -164,7 +166,7 @@
 							that is unique within the context of that software type. The global component id would be 
 							the package UID for native applications or the midlet-names for Java, etc. 
 							Note that if KNullDesC is provided, the global identifier will be empty.
-			@param aCompOpType The type of the component operation. Typical operations are install or upgrade. @see Usif::TScrComponentOperationType
+			@param aCompOpType The type of the component operation. Typical operations are install or upgrade. @see TScrComponentOperationType
 			@return  The component ID of the newly added entry. 
 			
 			@leave KErrScrWriteOperationInProgress If a transaction started by another session is in progress.
@@ -555,7 +557,7 @@
 		IMPORT_C TBool GetComponentL(TComponentId aComponentId, CComponentEntry& aEntry, TLanguage aLocale=KUnspecifiedLocale) const;							
 		
 		/**
-			Retrieves the localized information from ComponentLocalizable table for a given component id.
+		    Retrieves the localized information from ComponentLocalizable table for a given component id.
 							
 			@param aComponentId The unique ID of the given software component.
 			@param aCompLocalizedInfoArray An output parameter for returning localized information for a given component id. 
@@ -581,7 +583,7 @@
 			Retrieves the local component id of a given global component id.
 			
 			@param aGlobalIdName A deterministic identifier for the component that is unique within the context of that software type.
-			@param aUniqueSwTypeName The non-localized, unique software type name, such as @see Usif::KSoftwareTypeNative and @see Usif::KSoftwareTypeJava.
+			@param aUniqueSwTypeName The non-localized, unique software type name, such as @see KSoftwareTypeNative and @see KSoftwareTypeJava.
 			@return The local unique component id.
 			
 			@leave KErrNotFound Software component with this global id is not present in the system.
@@ -593,7 +595,7 @@
 			Retrieves a specific software component entry with the specified global id and software type name for a given locale. 
 							
 			@param aGlobalIdName A deterministic identifier for the component that is unique within the context of that software type.
-			@param aUniqueSwTypeName The non-localized, unique software type name, such as @see Usif::KSoftwareTypeNative and @see Usif::KSoftwareTypeJava.
+			@param aUniqueSwTypeName The non-localized, unique software type name, such as @see KSoftwareTypeNative and @see KSoftwareTypeJava.
 			@param aLocale The language code of the requested locale. The default value is KUnspecifiedLocale.
 						   If KUnspecifiedLocale is provided, the current locale with its downgraded path (@see BaflUtils::GetDowngradePathL) is used to find
 						   the names. If it fails, then the non-localized names are returned. If non-localized versions
@@ -693,7 +695,7 @@
 						   leaves with KErrNotFound.
 			@return Returns a pointer to the property object containing the requested component property entry.
 					The ownership is transferred. If the property couldn't be found, then NULL is returned.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 		 */
 		IMPORT_C CPropertyEntry* GetComponentPropertyL(TComponentId aComponentId, const TDesC& aPropertyName, TLanguage aLocale=KUnspecifiedLocale) const;
 		
@@ -713,7 +715,7 @@
 						   If non-localized versions don't exist, then the function will leave with KErrNotFound.
 						   If a particular language is provided, then the properties are searched for this particular language
 						   and its downgraded languages. Otherwise, the function leaves with KErrNotFound.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 		*/
 		IMPORT_C void GetComponentPropertiesL(TComponentId aComponentId, RPointerArray<CPropertyEntry>& aProperties, TLanguage aLocale=KUnspecifiedLocale) const;
 				
@@ -735,7 +737,7 @@
 			
 			@param aComponentId The unique ID of the given software component. 	
 			@param aScomoState The new SCOMO state of the component.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 		 */
 		IMPORT_C void SetScomoStateL(TComponentId aComponentId, TScomoState aScomoState) const;
 		
@@ -745,7 +747,7 @@
 			@param aMimeType The MIME type. 	
 			@return The UID of the plug-in.
 			@leave KErrSifUnsupportedSoftwareType There is no corresponding plug-in for this MIME type.
-			@leave System-wide error codes.			
+            @leave A system-wide error code.			
 			@internalTechnology
 		 */
 		IMPORT_C TUid GetPluginUidL(const TDesC& aMimeType) const;
@@ -755,7 +757,7 @@
 							
 			@param aComponentId Component's local identifier. 	
 			@return The UID of the plug-in.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 			@internalTechnology
 		 */
 		IMPORT_C TUid GetPluginUidL(TComponentId aComponentId) const;
@@ -773,7 +775,7 @@
 			                               This paramater is optional. If it doesn't exist, it should be equal to the installer's secure id.                                
 			@param aMimeTypes The list of MIME types associated with this software type.
 			@param aLocalizedSwTypeNames A pointer to the list of optional localized software type names.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 			@internalTechnology
 		 */
 		IMPORT_C void AddSoftwareTypeL(const TDesC& aUniqueSwTypeName, TUid aSifPluginUid, TSecureId aInstallerSecureId, TSecureId aExecutionLayerSecureId, const RPointerArray<HBufC>& aMimeTypes, const RPointerArray<CLocalizedSoftwareTypeName>* aLocalizedSwTypeNames = NULL);
@@ -786,7 +788,7 @@
 			
 			@param aUniqueSwTypeName Non-localized unique software type name.
 			@param aDeletedMimeTypes An output parameter, where the MIME types deleted from SCR as a result of this operation will be stored.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 			@internalTechnology
 		 */
 		IMPORT_C void DeleteSoftwareTypeL(const TDesC& aUniqueSwTypeName, RPointerArray<HBufC>& aDeletedMimeTypes);
@@ -796,7 +798,7 @@
 					
 			@param aComponentId The unique ID of the given software component. 
 			@return ETrue, if the software installer of the given component is present; otherwise EFalse.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 		 */
 		IMPORT_C TBool IsComponentOrphanedL(TComponentId aComponentId);
 		
@@ -809,7 +811,7 @@
 					will be zero. The caller is responsible for deleting all memory.
 			@param aUniqueSwTypeName Optional parameter for non-localized unique software type name.
 									 If provided, only the log entries of the given software type are returned.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 			@capability ReadUserData
 		 */
 		IMPORT_C void RetrieveLogEntriesL(RPointerArray<CScrLogEntry>& aLogEntries, const TDesC* aUniqueSwTypeName=NULL) const;
@@ -822,7 +824,7 @@
 			@return A positive value indicates that the left version is greater than the right version. 
 				    A negative value indicates that the left version is less than the right version. 
 				    Zero indicates that the left and right versions are equal. 
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 		 */
 		IMPORT_C static TInt CompareVersionsL(const TDesC& aVersionLeft, const TDesC& aVersionRight);
 
@@ -831,7 +833,7 @@
 
 			@param aComponentId The unique ID of the software component. 
 			@return ETrue, if the component is present on a read only drive; otherwise EFalse.
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 		 */
 		IMPORT_C TBool IsComponentOnReadOnlyDriveL(TComponentId aComponentId) const;
 		
@@ -847,7 +849,7 @@
 			@param aComponentId The unique ID of the component.
 			@return ETrue, if the component is present; otherwise EFalse.
 			
-			@leave System-wide error codes.
+            @leave A system-wide error code.
 		 */
 		IMPORT_C TBool IsComponentPresentL(TComponentId aComponentId) const;
 		
@@ -862,7 +864,7 @@
 			
 			@leave KErrScrWriteOperationInProgress If a transaction started by another session is in progress.
 			@leave KErrScrReadOperationInProgress If a read operation with component or file views is in progress.
-			@leave Or system-wide error codes.
+			@leave Or a system-wide error code.
 		 */
 		IMPORT_C void SetIsComponentPresentL(TComponentId aComponentId, TBool aValue);
 		
@@ -872,11 +874,72 @@
 			@param aComponentId The unique ID of the given software component.
 			@param aMatchingSupportedLanguages RArray containing the list of installed supported languages
 			
-			@leave Or system-wide error codes.
-			@capability  ReadUserData Accessing the installed supported language ID's array requires ReadUserData
+			@leave A system-wide error code.
+            @capability  ReadUserData Accessing the installed supported language ID's array requires ReadUserData
 		 */
 		IMPORT_C void GetComponentSupportedLocalesListL(TComponentId aComponentId, RArray<TLanguage>& aMatchingSupportedLanguages) const;
 		
+		/**
+		    Adds a new application entry to the SCR database.
+		    
+		    N.B. This is a mutating function. Please see @see Usif::RSoftwareComponentRegistry.
+		    
+		    @param aComponentId The componentId associated to the application   
+		    @param aApplicationRegistrationData The information associated with the application.         
+		    @leave KErrArgument If the AppUid or AppFile in aApplicationRegistrationData is NULL
+                   Or a system-wide error code.
+		*/
+	
+		IMPORT_C void AddApplicationEntryL(const TComponentId aComponentId, const CApplicationRegistrationData& aApplicationRegistrationData);
+		
+		/**
+		    Deletes the information of all applications associated to an existing component entry from the SCR database.
+		    
+		    N.B. This is a mutating function. Please see @see Usif::RSoftwareComponentRegistry.
+		    
+		    @param aComponentId The componentId, associated to which, all applications are deleted.
+		    @leave A system-wide error code.
+		*/
+		IMPORT_C void DeleteApplicationEntriesL(TComponentId aComponentId);
+		
+		/**
+            Deletes an application entry from the SCR database.
+            
+            N.B. This is a mutating function. Please see @see Usif::RSoftwareComponentRegistry.
+            
+            @param aApplicationUid Uid of the application to be deleted.
+            @leave A system-wide error code.            
+        */
+        IMPORT_C void DeleteApplicationEntryL(TUid aApplicationUid);
+
+        /**
+            Gets the Component Id associated to a given Application Uid
+
+            @param aAppUid The AppUid of an application.
+            @return The componentId associated with the given application.  
+            @leave A system-wide error code.                      
+         */
+        IMPORT_C TComponentId GetComponentIdForAppL(TUid aAppUid) const;
+
+        /**
+            Gets the array of Application Uids associated to a given Component.
+
+            @param aCompId ComponentId of a component whose associated applications need to be fetched.
+            @param aAppUids Returns the array of application Uids associated with the component.
+            @leave A system-wide error code.            
+         */
+        IMPORT_C void GetAppUidsForComponentL(TComponentId aCompId, RArray<TUid>& aAppUids) const;
+        
+        /**
+            Returns the array of application launchers.
+                N.B. This function can only be used by AppArc to determine the launcher associated with 
+                an application.
+    
+            @param aLaunchers The current list of launchers present on the device.
+            @leave A system-wide error code.            
+         */
+        IMPORT_C void GetApplicationLaunchersL(RPointerArray<CLauncherExecutable>& aLaunchers) const;
+        		
 	private:
 
 		TInt SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const;
@@ -948,7 +1011,7 @@
 			@return Returns the next component matching the given filter. If no more components can be found, returns NULL.
 				     The ownership is transferred to the calling client.	     
 			@leave KErrScrUnsupportedLocale The requested component name/vendor couldn't be found for the specified locale.
-			@leave A system-wide error code.
+			@leave Or a system-wide error code.
 
 			@capability  ReadUserData Accessing list of components installed by the user requires ReadUserData
 		 */
@@ -972,7 +1035,7 @@
 						   then the function leaves with KErrScrUnsupportedLocale.		
 			@return EFalse, if the end of the view has been reached. Otherwise, ETrue.  		
 			@leave KErrScrUnsupportedLocale The requested component name/vendor couldn't be found for the specified locale.
-			@leave A system-wide error code.
+			@leave Or a system-wide error code.
 
 			@capability  ReadUserData Accessing list of components installed by the user requires ReadUserData
 	     */
@@ -997,13 +1060,14 @@
 						   and its downgraded languages. If there is no name and vendor with the provided language, 
 						   then the function leaves with KErrScrUnsupportedLocale.		
 			@leave KErrScrUnsupportedLocale The requested component name/vendor couldn't be found for the specified locale.
-			@leave A system-wide error code.
+			@leave Or a system-wide error code.
 
 			@capability  ReadUserData Accessing list of components installed by the user requires ReadUserData
 		 */
 		IMPORT_C void NextComponentSetL(TInt aMaxCount, RPointerArray<CComponentEntry>& aComponentList, TLanguage aLocale=KUnspecifiedLocale) const;
 	
 	private:
+		void CheckSubSessionHandleL() const;     //Checks for Valid SubSessionHandle
 		TInt SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const;
 		template <class C> friend HBufC8* GetObjectDataLC(const C& aConnection, TInt aFunction, TInt aDataSize);
 		template <class T, class C> friend TBool GetObjectL(const C& aConnection, T& aObject, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
@@ -1019,7 +1083,7 @@
 	public:
 		/**
 			Default constructor of registry file list sub-session.
-		 */
+			*/
 		IMPORT_C RSoftwareComponentRegistryFilesList();
 		
 		/**
@@ -1063,12 +1127,371 @@
 		IMPORT_C void NextFileSetL(TInt aMaxCount, RPointerArray<HBufC>& aFileList) const;
 	
 	private:
+		void CheckSubSessionHandleL() const;     //Checks for Valid SubSessionHandle
 		TInt SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const;
 		template <class C> friend HBufC8* GetObjectDataLC(const C& aConnection, TInt aFunction, TInt aDataSize);
 		template <class T, class C> friend T* GetObjectL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
 		template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RPointerArray<T>& aArray);
-		};
+	};
+
+
+	NONSHARABLE_CLASS(RApplicationRegistryView) : public RScsClientSubsessionBase
+	/**
+        This class opens a sub-session to the SCR server and sends a request to create a complete Application Registration view.
+        This class can only be used by Apparc.
+	*/
+	{
+	public:
+	    /**
+	      Default constructor of registry view sub-session.
+	     */
+	      IMPORT_C RApplicationRegistryView();
+	            
+	      /**
+	           Closes the registry view on the SCR server.
+	      */
+	      IMPORT_C void Close();
+
+
+	      /**
+	           Opens a complete view of Application Registration in the SCR.
+	            
+	           If the call to this function completes successfully, then the interface client will access 
+	           the enumerated records by using @see RApplicationRegistryView::GetNextApplicationRegistrationInfoL.
+	                
+	           If a transaction owned by another session is in progress on the SCR server, the open view request 
+	           will be rejected.
+	               
+	           N.B. After this function completes successfully, GetNextApplicationRegistrationInfoL function
+	           can be used  
+	                
+	           @param aCompReg An active SCR connection.
+	           @param aLocale The language code of the requested locale. The default value is KUnspecifiedLocale.
+	           if aLocale is provided, then Application Registration Info for that locale is returned(if present in SCR).
+	           If aLocale is provided but the localizable info for that locale is not present in the SCR then 
+	           its(aLocale) downgraded path (@see BaflUtils::GetDowngradePathL) is used to find
+	           the reg details. If it fails, then application registration info for that application is not returned.
+	           If alocale is not provided i.e. KUnspecifiedLocale then it takes the current locale or its downgradables.             
+	           @leave A system-wide error code.
+	     */
+	     IMPORT_C void OpenViewL(const RSoftwareComponentRegistry& aCompReg, TLanguage aLocale=KUnspecifiedLocale);                 
+	     
+		 /**
+	           Opens a view of the Application Registration information for a list of AppUids.
+	            
+	           If the call to this function completes successfully, then the interface client will access 
+	           the enumerated records by using @see RApplicationRegistryView::GetNextApplicationRegistrationInfoL.
+	                
+	           If a transaction owned by another session is in progress on the SCR server, the open view request 
+	           will be rejected.
+	               
+	           N.B. After this function completes successfully, GetNextApplicationRegistrationInfoL function
+	           can be used  
+	                
+	           @param aCompReg An active SCR connection.
+			   @param aAppRegAppUids Array of AppUids to be fetched.
+	           @param aLocale The language code of the requested locale. The default value is KUnspecifiedLocale.
+	           if aLocale is provided, then Application Registration Info for that locale is returned(if present in SCR).
+	           If aLocale is provided but the localizable info for that locale is not present in the SCR then 
+	           its(aLocale) downgraded path (@see BaflUtils::GetDowngradePathL) is used to find
+	           the reg details. If it fails, then application registration info for that application is not returned.
+	           If alocale is not provided i.e. KUnspecifiedLocale then it takes the current locale or its downgradables.             
+	           @leave A system-wide error code.
+	     */
+		 
+	     IMPORT_C void OpenViewL(const RSoftwareComponentRegistry& aCompReg, const RArray<TUid>& aAppRegAppUids, TLanguage aLocale=KUnspecifiedLocale);
+	                
+	     /**
+	           Retrieves the next Application Registration entry from the view which has already been 
+	           created in the SCR with @see RApplicationRegistryView::OpenApplicationRegistrationViewL.                                
+	                                                  
+            @param aNoOfEntries Number of AppInfo Entries to be fetched in a single call.
+            @param aApplicationRegistration An output parameter for returning the array of CApplicationRegistrationData.                 
+            @leave A system-wide error code
+         */
+	     IMPORT_C void GetNextApplicationRegistrationInfoL(TInt aNoOfEntries, RPointerArray<CApplicationRegistrationData>& aApplicationRegistration) const; 
+	            
+        private:
+	            TInt iNoOfEntries;
+	            TInt SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const;
+	            template <class C> friend HBufC8* GetObjectDataLC(const C& aConnection, TInt aFunction, TInt aDataSize);
+	            template <class T, class C> friend TBool GetObjectL(const C& aConnection, T& aObject, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
+	            template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RArray<T>& aArray);
+	            template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RPointerArray<T>& aArray);
+	            
+	};  //End of RApplicationRegistryView
+	
+	
+	
+NONSHARABLE_CLASS(RApplicationInfoView) : public RScsClientSubsessionBase
+/**
+	This class opens a sub-session to the SCR server and sends a request to create a AppInfo view
+	by using the supplied filter on the server side. 
+	It returns information associated to a list of applications, information includes the full pathname to the application and the application's caption and short caption informtion @see TAppRegInfo, 
+	however localizable specific information is retrieved only if the app has localizable information 
+	matching the locale with which the subsession was opened or matching the current device language.
+	It is different from class RApplicationRegistryView in the following ways:
+	1. This subsession has the ability to filter the applciations based on certain parameters @see CAppInfoFilter.
+	2. This returns specific information contained in TAppRegInfo, however class RApplicationRegistryView returns all the information associated with an app in CApplicationRegistrationData.
+	3. Functionality provided by this class can be used by all, however class RApplicationRegistryView can be used only by AppArc.
+	 
+*/
+{
+	public:
+		/**
+			Default constructor of AppInfo sub-session.
+		 */
+		IMPORT_C RApplicationInfoView();
+		
+		/**
+			Closes the registry view on the SCR server.
+		*/
+		IMPORT_C void Close();
+
+		/**
+	    	Opens a view of Application Info in the SCR.
+		
+			If the call to this function completes successfully, then the interface client can access 
+			the enumerated records by using @see RAppInfoView::GetNextAppInfoL.
+			
+			If a transaction owned by another session is in progress on the SCR server, the open view request 
+			will be rejected.
+			
+			N.B. After this function completes successfully, GetNextAppInfoL function
+			can be used  
+			
+			@param aCompReg An active SCR connection.
+			@param aAppInfoFilter Pointer to the filter object which will be used by the SCR to enumerate the Application Info. Also @see CAppInfoFilter.
+                   			
+			@leave A system-wide error code.
+			@capability  ReadUserData, Accessing list of App Info requires ReadUserData
+		*/
+		IMPORT_C void OpenViewL(const RSoftwareComponentRegistry& aCompReg, CAppInfoFilter* aAppInfoFilter = NULL,TLanguage aLocale = KUnspecifiedLocale);
+
+		/**
+			Retrieves the next AppInfo entry from the view which has already been 
+			created in the SCR with @see RSoftwareComponentRegistryView::OpenAppInfoViewL.
 			
-	}// End of namespace Usif
+			@param aNoOfEntries Number of AppInfo Entries to be fetched in a single call.
+			@param aAppInfo An output parameter for returning the array of AppInfo.			   		
+			@leave A system-wide error code.
+	     */
+		IMPORT_C void GetNextAppInfoL(TInt aNoOfEntries, RPointerArray<TAppRegInfo>& aAppInfo) const;
+
+	private:
+		TInt SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const;
+		template <class C> friend HBufC8* GetObjectDataLC(const C& aConnection, TInt aFunction, TInt aDataSize);
+		template <class T, class C> friend TBool GetObjectL(const C& aConnection, T& aObject, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
+		template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RArray<T>& aArray);
+		template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RPointerArray<T>& aArray);
+
+};//End of RApplicationInfoView
+
+NONSHARABLE_CLASS(RRegistrationInfoForApplication) : public RScsClientSubsessionBase
+/**
+	This class opens a sub-session to the SCR server with a particular application uid 
+	and fetches the respective details for this particular application only.
+*/
+    {
+    public:
+		/**
+			Default constructor of registry view sub-session.
+		*/
+		IMPORT_C RRegistrationInfoForApplication();
+
+		/**
+			Closes the registry view on the SCR server.
+		 */
+		IMPORT_C void Close();
+
+		/**
+            Creates a new subsession for the given App Uid. 
+		    @param aCompReg An active SCR connection.                            
+		    @param aAppUid The Application ID to be used for further queries.
+			@param aLocale The language code of the requested locale. The default value is KUnspecifiedLocale.
+						   If KUnspecifiedLocale is provided, the current locale with its nearest language
+						   (@see  BaflUtils::GetEquivalentLanguageList) will be used .
+		    @leave KErrNotFound If aAppUid is not found.
+                   Or a system-wide error code.
+		*/
+		IMPORT_C void OpenL(const RSoftwareComponentRegistry& aCompReg,const TUid aAppUid,TLanguage aLocale=KUnspecifiedLocale);
+
+		/**
+			Returns the list of Service Uids for the application. 
+                                                    
+            @param aServiceUids The list of Service Uids retrieved for the application. 
+            @leave A system-wide error code.
+        */		
+		IMPORT_C void GetAppServicesUidsL(RArray<TUid>& aServiceUids) const;
+
+        /**
+            Returns the Application Language(Locale) for the application. 
+			This is identified after mapping the Application languages to the nearest device language.                                       
+            @return TLanguage The Application Language(Locale) retrieved for the application. 
+            @leave A system-wide error code.
+        */		
+        IMPORT_C TLanguage ApplicationLanguageL() const;
+
+        /**
+            Returns the default Screen Number for the application. 
+                                        
+            @return  The default Screen Number retrieved for the application. 
+            @leave A system-wide error code.
+        */        
+        IMPORT_C TInt DefaultScreenNumberL() const;
+
+        /**
+            Returns the number of defined icons for the application and locale. 
+            
+            @return  The number of defined icons retrieved for the given locale of the application. 
+            @leave A system-wide error code.
+        */         
+		IMPORT_C TInt NumberOfOwnDefinedIconsL() const;
+		
+		/**
+            Returns the array of files owned by the application .
+		                                                
+            @param aAppOwnedFiles returns array of Files owned by the application. 
+            @leave A system-wide error code.                     		           
+		*/     
+		IMPORT_C void GetAppOwnedFilesL(RPointerArray<HBufC>& aAppOwnedFiles) const;
+		
+		/**
+            Returns the characteristics of the application. 
+		                                                        
+            @param aApplicationCharacteristics returns capabilty of the application.  
+            @leave A system-wide error code.                       		                    
+		*/        
+		IMPORT_C void GetAppCharacteristicsL(TApplicationCharacteristics& aApplicationCharacteristics) const;
+		/**
+            Returns the file name of the icon associated with the application. 
+		                                                                
+            @param aFullFileName  returns file name of the icon associated with the application. 
+            @leave A system-wide error code.                        		                            
+		*/                
+		IMPORT_C void GetAppIconL(HBufC*&  aFullFileName) const;
+		        
+		/**
+            Returns the file name of the icon associated with the application, given a View Uid. 
+
+            @param aViewUid view Uid of the app                                                            
+            @param aFullFileName  returns file name of the icon of the application.   
+            @leave A system-wide error code.                 		                                   
+		*/ 
+		IMPORT_C void GetAppViewIconL(TUid aViewUid,HBufC*& aFullFileName) const;
+		
+		/** Returns the view information published by the application for the current locale.
 
+		    @param aAppViewInfoArray On return, the array contains information on all of the views 
+		    published by the specified application for the current locale.
+		    @see CAppViewData 
+            @leave A system-wide error code.		    
+		**/
+
+		 IMPORT_C void GetAppViewsL(RPointerArray<CAppViewData>& aAppViewInfoArray) const;
+
+	private:
+		void CheckSubSessionHandleL() const;     //Checks for Valid SubSessionHandle
+		TInt SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const;
+		template <class C> void SendDependencyArgsL(TInt aFunction, const C& aSupplierId, const CGlobalComponentId& aDependantGlobalCompId);
+		template <class C> friend HBufC8* GetObjectDataLC(const C& aConnection, TInt aFunction, TInt aDataSize);
+		template <class T, class C> friend T* GetObjectL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
+		template <class T, class C> friend TBool GetObjectL(const C& aConnection, T& aObject, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
+		template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RArray<T>& aArray);
+		template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RPointerArray<T>& aArray);
+		
+	}; //End of RRegistrationInfoForApplication
+
+NONSHARABLE_CLASS(RApplicationRegistrationInfo) : public RScsClientSubsessionBase
+/**
+    This class opens a sub-session to the SCR server and is used to retrieve application information.
+
+ */   
+    {
+    public:
+        /**
+            Default constructor of registry view sub-session.
+         */
+        IMPORT_C RApplicationRegistrationInfo();
+        
+        /**
+            Closes the registry view sub-session on the SCR server.
+         */
+        IMPORT_C void Close();
+
+        /**
+            Creates a new subsession with SCR. 
+            
+            Once the call to this function succeeds, the client will be able to query SCR for various information 
+            such as data type and service information. 
+            
+            If a transaction is owned by another session is in progress on the SCR server, then this request 
+            will be rejected.
+            
+            @param aCompReg An active SCR connection.                          
+            @leave A system-wide error code.
+        */
+        IMPORT_C void OpenL(const RSoftwareComponentRegistry& aCompReg);
+
+        /**
+            Returns the App Uid for a given Service Uid that handles the specified datatype with the highest priority. 
+                                        
+            @param aName The Data Type Text.
+            @param aServiceUid  The Service Uid.
+            @return  The App Uid for the given Data type and Service Uid. 
+            @leave A system-wide error code.
+        */      
+        IMPORT_C TUid GetAppForDataTypeAndServiceL(const TDesC &aName,const TUid aServiceUid) const;
+        
+        /**
+            Return the App Uid for the given Data type with the highest priority. 
+                                        
+            @param aName The Data Type Text.
+            @return  The App Uid for the given Data type. 
+            @leave KErrNotFound If the AppUid is not found
+                   Or a system-wide error code.
+        */
+        IMPORT_C TUid GetAppForDataTypeL(const TDesC &aName) const;
+
+        /**
+            Return the Service Info details for the set parameters of the filter. 
+                                        
+            @param aAppServiceInfoFilter A pointer to AppServiceInfoFilter enumerating the parameters on the basis of which serviceinfo details are to be fetched.
+            @param aAppServiceInfoArray  On return contains the service info details assoicated with the parameters set in the filter.
+            @param aLocale               The language code of the requested locale. The default value is KUnspecifiedLocale.
+                                         If KUnspecifiedLocale is provided, the current locale with its nearest language (@see  BaflUtils::GetEquivalentLanguageList) is used to find
+                                         the names.             
+            @leave KErrNotFound If the Service Info details are not found
+                   Or a system-wide error code.
+        */
+        IMPORT_C void GetServiceInfoL(CAppServiceInfoFilter* aAppServiceInfoFilter, RPointerArray<CServiceInfo>& aAppServiceInfoArray, TLanguage aLocale=KUnspecifiedLocale) const;
+
+        /**
+            Return the basic application information contained in  TAppRegInfo for a given application present in the SCR DB.
+                    
+            @param aAppUid  An application's Uid.                  
+            @param aAppInfo An output parameter for returning the array of AppInfo. 
+            @param aLocale The language code of the requested locale. The default value is KUnspecifiedLocale.
+                           If KUnspecifiedLocale is provided, the current locale with its nearest language (@see  BaflUtils::GetEquivalentLanguageList) is used to find
+                           the names.  
+            @return ETrue if found, EFalse if application is not found
+                                    
+            @leave A system-wide error code.
+        */
+        IMPORT_C TBool GetAppInfoL(TUid aAppUid, TAppRegInfo& aAppInfo, TLanguage aLocale=KUnspecifiedLocale);
+        
+        
+    private:
+        void CheckSubSessionHandleL() const;     //Checks for Valid SubSessionHandle
+        TInt SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const;
+        template <class C> void SendDependencyArgsL(TInt aFunction, const C& aSupplierId, const CGlobalComponentId& aDependantGlobalCompId);
+        template <class C> friend HBufC8* GetObjectDataLC(const C& aConnection, TInt aFunction, TInt aDataSize);
+        template <class T, class C> friend T* GetObjectL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
+        template <class T, class C> friend TBool GetObjectL(const C& aConnection, T& aObject, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs);
+        template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RArray<T>& aArray);
+        template <class C, class T> friend void GetObjectArrayL(const C& aConnection, TInt aSizeFunction, TInt aDataFunction, TInt aArgNum, TIpcArgs& aArgs, RPointerArray<T>& aArray);
+        
+    }; //End of RApplicationRegistrationInfo       
+
+}// End of namespace Usif
 #endif // SOFTWARECOMPONENTREGISTRY_H
--- a/installationservices/swcomponentregistry/inc/scr.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc/scr.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -29,8 +29,10 @@
 file=ABI_DIR\BUILD_DIR\scrhelperclient.dll		sys\bin\scrhelperclient.dll
 file=ABI_DIR\BUILD_DIR\scrhelperserver.exe		sys\bin\scrhelperserver.exe
 
-// Export SCR DB
+// Export SCR DB.
 data=EPOCROOT##epoc32\release\winscw\udeb\z\sys\install\scr\provisioned\scr.db		sys\install\scr\provisioned\scr.db
+// Export SCR Cenrep file.
+data=EPOCROOT##epoc32\release\winscw\udeb\z\private\10202be9\10285bc0.txt   		private\10202be9\10285bc0.txt
 
 #endif
 
--- a/installationservices/swcomponentregistry/inc/scrcommon.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc/scrcommon.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -116,12 +116,22 @@
 		EGetComponentSupportedLocalesListData = 0x31,    ///< Retrieve the data of the list of matching supported languages
 		EGetLocalizedComponentSize            = 0x32,    ///< Retrieve the localized information entry size of a given component id
 		EGetLocalizedComponentData            = 0x33,    ///< Retrieve the localized information entry data of a given component id
+		EGenerateNonNativeAppUid              = 0x34,    ///< Generate a new Application Uid which can be used to register non native applications.
 		
-		EGetIsMediaPresent				 = 0x41,	///< Retrieve the presence info of medias where the component is installed.
-		EGetIsComponentOrphaned			 = 0x42,	///< Retrieve whether the given component is orphaned.
-		EGetIsComponentOnReadOnlyDrive	 = 0x43,	///< Retrieve if the component is present on a read-only drive.
-		EGetIsComponentPresent			 = 0x44,	///< Retrieve if the software component is fully present.
+        EGetApplicationLaunchersSize     = 0x3A,    ///< Gets the size of application launcher array
+        EGetApplicationLaunchersData     = 0x3B,    ///< Gets the array application launchers
+        
+		EGetIsMediaPresent				 = 0x40,	///< Retrieve the presence info of medias where the component is installed.
+		EGetIsComponentOrphaned			 = 0x41,	///< Retrieve whether the given component is orphaned.
+		EGetIsComponentOnReadOnlyDrive	 = 0x42,	///< Retrieve if the component is present on a read-only drive.
+		EGetIsComponentPresent			 = 0x43,	///< Retrieve if the software component is fully present.
+        EGetComponentIdForApp            = 0x44,    ///< Retrieve the component Id for a given App.
+        EGetAppUidsForComponentSize      = 0x45,    ///< Retrieve the size of the list of AppUids associated with a component.
+        EGetAppUidsForComponentData      = 0x46,    ///< Retrieve the list of AppUids associated with a component.
 						
+		EAddApplicationEntry             = 0x47,    ///< Add a new application entry into SCR.
+		EDeleteApplicationEntries        = 0x48,    ///< Delete the applications associated with a component from SCR.
+		EDeleteApplicationEntry          = 0x49,    ///< Delete an application from SCR.
 		ESetScomoState				 	 = 0x50,	///< Set the scomo state of a given component.
 		ESetIsComponentPresent			 = 0x51,	///< Set the attribute if the component is present fully.
 		EGetPluginUidWithMimeType    	 = 0x52,	///< Retrieve the SIF plugin UID for a given MIME type.
@@ -129,15 +139,22 @@
 		
 		ESubSessCreateComponentsView 	 = 0x60,	///< Creates a sub-session to handle a components view. 
 		ESubSessCreateFileList 	     	 = 0x61,	///< Creates a sub-session to handle a file list.
+
+		ESubSessCreateRegInfoForApp      = 0x62,	///< Creates a sub-session to handle a App ID related query.
+		ESubSessCreateAppRegInfo         = 0x63,   ///< Creates a sub-session to handle a query.
 		
 		EAddSoftwareType			 	 = 0x65,    ///< Add a new software type to the SCR database with MIME types, unique and localized names.
 		EDeleteSoftwareType			 	 = 0x66,    ///< Delete an existing software type from the SCR database.
 		EGetDeletedMimeTypes			 = 0x67,    ///< Retrieve the list of MIME types deleted in last software type deletion operation.
+		
+		ESubSessCreateAppInfoView        = 0x68,    ///< Creates a sub-session to handle a appinfo view.
+		ESubSessCreateAppRegistryView    = 0x69     ///< Creates a sub-session to handle a application registration view.
+		// NOTE: The range after this is used up. Add new function ids carefully.
 		};
 		
 	enum TScrSubSessionFunction
 	/**
-		Functions supported by a SCR server session.
+		Functions supported by a SCR server subsession.
 	 */
 		{
 		EOpenComponentsView       = 0x70,		///< A components view isopened on the server side by using a given filter
@@ -149,7 +166,34 @@
 		EGetNextFileSize      	  = 0x78,		///< Get the size of the next file from the present file list.
 		EGetNextFileData      	  = 0x79,		///< Get the next file from the present file list.
 		EGetNextFileSetSize   	  = 0x7A,		///< Get teh size of the next file set from the present file list.
-		EGetNextFileSetData       = 0x7B		///< Get the next file set from the present file list.
+		EGetNextFileSetData       = 0x7B,		///< Get the next file set from the present file list.
+		EOpenAppInfoView          = 0x7C,       ///< An AppInfo view is opened on the server side by using a given filter
+		EGetNextAppInfoSize       = 0x7D,       ///< Next AppInfo size is calculated and sent to the client
+		EGetNextAppInfoData       = 0x7E,       ///< Next AppInfo data is returned to the client  
+		
+		ESetAppUid         		      = 0x80,       ///< AppId is set on the server side to be used for the specific subsession.
+		EGetServiceUidSize		      = 0x88,       ///< Get the size of the service Id list. 
+		EGetServiceUidList		      = 0x89,       ///< Get the list of ServiceIds.
+		EGetApplicationLanguage       = 0x8A,		///< Get the Application Language of the App and is nearest to the device language.
+		EGetDefaultScreenNumber       = 0x8B,       ///< Get the Default screen number specified for an App.
+		EGetNumberOfOwnDefinedIcons   = 0x8C,       ///< Get the number of defined icons of a specified locale of the App.
+		EGetAppForDataTypeAndService  = 0x8D,       ///< Get the AppUid with the specified type and ServiceId		
+		EGetAppForDataType	   	      = 0x8E,	    ///< Get the AppUid with the specified type and a highest priority.
+		EGetViewSize			      = 0x8F,		///< Get the size of the view details of a given application
+		EGetViewData			      = 0x90,		///< Get the array of view details of a given application
+		EGetAppOwnedFilesSize         = 0x91,       ///< Get the size of files owned by given application
+		EGetAppOwnedFilesData         = 0x92,       ///< Get the array of files owned by given application
+		EGetAppCharacteristics        = 0x93,       ///< Get the characteristics of given application
+		EGetAppIconForFileName    	  = 0x94,       ///< Get the application icon file name for given application
+		EGetAppViewIconFileName       = 0x95,       ///< Get the application view  icon file name for given application
+		EGetAppServiceInfoSize		  = 0x96,		///< Get the size of the required service details associated with the parameters set in the filter.
+		EGetAppServiceInfoData        = 0x97,       ///< Get the required service details associated with the parameters set in the filter.
+		EGetApplicationInfo           = 0x98,       ///< Get the required app's information details contained in TAppRegInfo.
+				
+		EOpenApplicationRegistrationInfoView           = 0xB0,  ///< An Application registration view is opened on the server side
+		EGetApplicationRegistrationSize                = 0xB1,  ///< Get the size of the next application registration data
+		EGetApplicationRegistrationData                = 0xB2,  ///< Get the next application registration data
+		EOpenApplicationRegistrationInfoForAppUidsView = 0xB3,  ///< An Application registration AppUids view is opened on the server side
 		};
 	
 	/**
@@ -159,8 +203,7 @@
 	static const TInt KScrServerShutdownPeriod = 2 * 1000 * 1000;
 	
 	/** Maximum length of a UID string. */
-	static const TInt KUidStringLen = 8;
-	
+	static const TInt KUidStringLen = 8;	
 	} // End of namespace Usif
  
  #include <usif/scr/scrcommon.inl>
--- a/installationservices/swcomponentregistry/inc/screntries.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc/screntries.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -1066,6 +1066,7 @@
 		HBufC* iGlobalId;
 		TComponentId iComponentId; 
 		};
+	
 #endif //SYMBIAN_ENABLE_SPLIT_HEADERS	
 
 	} // End of namespace Usif
--- a/installationservices/swcomponentregistry/inc/tscr.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc/tscr.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -28,6 +28,7 @@
 file=ABI_DIR\BUILD_DIR\tscr.exe				\sys\bin\tscr.exe
 file=ABI_DIR\BUILD_DIR\tscrdatalayer.exe	\sys\bin\tscrdatalayer.exe
 file=ABI_DIR\BUILD_DIR\tscraccessor.exe		\sys\bin\tscraccessor.exe
+file=ABI_DIR\BUILD_DIR\tscrapparc.exe		\sys\bin\tscrapparc.exe
 
 data=ZDRIVE\tusif\tscr\tscr.ini					\tusif\tscr\tscr.ini	
 data=ZDRIVE\tusif\tscr\tscr.script				\tusif\tscr\tscr.script	
@@ -38,6 +39,10 @@
 data=ZDRIVE\tusif\tscr\tscr_performance.script			\tusif\tscr\tscr_performance.script
 data=ZDRIVE\tusif\tscr\tscr_performance_cases.script	\tusif\tscr\tscr_performance_cases.script
 
+data=ZDRIVE\tusif\tscr\tscr_appreginfo.ini		\tusif\tscr\tscr_appreginfo.ini	
+data=ZDRIVE\tusif\tscr\tscr_appreginfo.script		\tusif\tscr\tscr_appreginfo.script
+data=ZDRIVE\tusif\tscr\tscrapparc.script		\tusif\tscr\tscrapparc.script	
+
 data=ZDRIVE\tusif\tscrdatalayer\data\nondb.db			\tusif\tscrdatalayer\data\nondb.db
 data=ZDRIVE\tusif\tscr\data\scr_small.db		\tusif\tscr\data\scr_small.db
 data=ZDRIVE\tusif\tscr\data\scr_medium.db		\tusif\tscr\data\scr_medium.db
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/inc_private/scr_internal.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* SCR Internal client which should be used to implement all internal functions
+* to the SCR server.
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+#ifndef SCR_INTERNAL_H
+#define SCR_INTERNAL_H
+
+namespace Usif {
+
+NONSHARABLE_CLASS(RScrInternalClient) : public RScsClientBase
+    {
+    /**
+     * This client should be used to implement all internal functions to the SCR server.
+     */
+public:
+    
+    IMPORT_C RScrInternalClient();
+        
+    IMPORT_C TInt Connect();
+
+    IMPORT_C void Close();
+    
+    /**
+         Generates a new Application Uid which can be used to register a non native application.
+                  
+         @return An unused UID if available, else a NULL TUid object is returned. 
+     */
+    IMPORT_C TUid GenerateNewAppUidL() const;
+
+    };
+
+} // namespace Usif
+
+#endif // SCR_INTERNAL_H
--- a/installationservices/swcomponentregistry/inc_private/scrclient.inl	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc_private/scrclient.inl	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -26,7 +26,7 @@
 #ifndef SCRCLIENT_INL
 #define SCRCLIENT_INL
 
-#include "scr.h"
+#include <usif/scr/scr.h>
 #include <scs/cleanuputils.h>
 #include <scs/streamingarray.h>
 #include <s32mem.h>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/inc_private/scrrepository.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* SCR Repository definition.
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+#ifndef SCRREPOSITORY_H
+#define SCRREPOSITORY_H
+
+#include <centralrepository.h>
+
+namespace Usif {
+
+/** The UID of the SCR repository. */
+const TUid KUidScrServerRepository = {0x10285bc0};  //271080384
+
+/** The key for the AppUid range count. */
+const TUint KScrAppUidRangeCount = {0x00000000};
+
+/** The key for the AppUid ranges. */
+const TUint KScrAppUidRanges = {0x00000100};
+
+/** Singleton class controlling access to the repository. */
+class CScrRepository : public CBase
+    {
+public:
+
+    static CScrRepository* GetRepositoryInstanceL();
+
+    TInt AppUidRangeCountL();
+
+    void GetAppUidRangeL(TInt aNum, TUid& aRangeBegin, TUid& aRangeEnd);
+
+    static void DeleteRepositoryInstance();
+    
+private:
+    static void ConstructL();
+    ~CScrRepository();
+    
+private:
+    static CScrRepository* iInstance;
+    static CRepository* iRepository;
+    static bool iInstanceFlag;
+    };
+}
+
+#endif /* SCRREPOSITORY_H */
--- a/installationservices/swcomponentregistry/inc_private/scrrequestimpl.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc_private/scrrequestimpl.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -30,6 +30,8 @@
 #include "screntries_internal.h"
 #endif //SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "screntries.h"
+#include "appregentries.h"
+#include "appreginfo.h"
 
 namespace Usif
 	{
@@ -45,6 +47,10 @@
 	class CScrSession;
 	class CScrSubsession;
 	class CCompViewSubsessionContext;
+	class CAppInfoViewSubsessionContext;
+	class CRegInfoForApplicationSubsessionContext;
+	class CAppRegistrySubsessionContext;
+	class CApplicationRegInfoSubsessionContext; 
 
 	class CScrRequestImpl : public CBase
 		{
@@ -124,11 +130,16 @@
 		void GetPluginUidWithComponentIdL(const RMessage2& aMessage) const;
 		
 		// Security Layer Requests
-		TBool GetInstallerSidForComponentL(TComponentId aComponentId, TSecureId& aSid) const;
-		TBool GetSidsForSoftwareTypeL(const HBufC* aSoftwareTypeName, TSecureId& aInstallerSid, TSecureId& aExecutableEnvSid) const;
-		TBool GetExecutionEnvSidForComponentL(TComponentId aComponentId, TSecureId& aSid) const;
+		TBool GetInstallerOrExecutionEnvSidsForComponentL(TComponentId aComponentId, RArray<TSecureId>& aSids) const;
+		TBool GetSidsForSoftwareTypeIdL(TInt aSoftwareTypeId, RArray<TSecureId>& aSids) const;
+		TBool GetSidsForSoftwareTypeL(const HBufC* aSoftwareTypeName, RArray<TSecureId>& aSids) const;
 		TBool IsInstallerOrExecutionEnvSidL(TSecureId& aSid) const;
 		TBool GetIsComponentOrphanedL(TComponentId aComponentId) const;
+		TInt GetSoftwareTypeForComponentL(TComponentId aComponentId) const;
+		
+		// AppArc Requests
+		void GetApplicationLaunchersSizeL(const RMessage2& aMessage) const;
+		void GetApplicationLaunchersDataL(const RMessage2& aMessage) const;
 		
 		// Component's view operations
 		CComponentFilter* ReadComponentFilterL(const RMessage2& aMessage) const;
@@ -137,7 +148,7 @@
 		void NextComponentDataL(const RMessage2& aMessage, CComponentEntry*& aEntry) const;
 		void NextComponentSetSizeL(const RMessage2& aMessage, CStatement* aStmt, CComponentFilter* aFilter, RPointerArray<CComponentEntry>& aEntryList, CCompViewSubsessionContext* aSubsessionContext) const;
 		void NextComponentSetDataL(const RMessage2& aMessage, RPointerArray<CComponentEntry>& aEntryList) const;
-				
+		
 		// Files's list operations
 		CStatement* OpenFileListL(const RMessage2& aMessage) const; 	 
 		void NextFileSizeL(const RMessage2& aMessage, CStatement* aStmt, HBufC*& aFilePath) const;
@@ -155,6 +166,89 @@
 		void DeleteSoftwareTypeL(const RMessage2& aMessage);
 		void GetDeletedMimeTypesL(const RMessage2& aMessage) const;
 		
+		// AppInfo's view operations
+		//CAppRegistrySubsession
+        void OpenApplicationRegistrationViewL(const RMessage2& aMessage, CAppRegistrySubsessionContext*  aSubsessionContext);
+        void OpenApplicationRegistrationForAppUidsViewL(const RMessage2& aMessage, CAppRegistrySubsessionContext*  aSubsessionContext);
+        void NextApplicationRegistrationInfoSizeL(const RMessage2& aMessage, CApplicationRegistrationData*& aApplicationRegistration, CAppRegistrySubsessionContext*  aSubsessionContext);
+        void NextApplicationRegistrationInfoDataL(const RMessage2& aMessage, CApplicationRegistrationData*& aApplicationRegistration);
+        
+		//CAppInfoViewSubsession
+        CAppInfoFilter* ReadAppInfoFilterL(const RMessage2& aMessage) const;
+        void OpenAppInfoViewL(CAppInfoFilter& aFilter, CAppInfoViewSubsessionContext* aSubsessionContext);
+        TBool DoesAppWithScreenModeExistL(TUid aUid, TInt aScreenMode, TLanguage aLocale) const;
+        void GetAppUidsL(CAppInfoViewSubsessionContext* aSubsessionContext, TBool aScreenModePresent = EFalse) const;
+        void GetEmbeddableAppUidsL(CAppInfoViewSubsessionContext* aSubsessionContext, TBool aScreenModePresent = EFalse) const;
+        void GetServerAppUidsL(CAppInfoViewSubsessionContext* aSubsessionContext, TUid aServiceUid, TBool aScreenModePresent = EFalse) const;
+        void GetAppUidsWithEmbeddabilityFilterL(CAppInfoViewSubsessionContext* aSubsessionContext, TEmbeddableFilter& aFilter, TBool aScreenModePresent = EFalse) const;
+        void GetAppUidsWithCapabilityMaskAndValueL(CAppInfoViewSubsessionContext* aSubsessionContext,TUint aCapabilityAttrFilterMask, TUint aCapabilityAttrFilterValue, TBool aScreenModePresent = EFalse) const;
+        void GetAppServicesL(TUid aAppUid, RPointerArray<CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const;
+        void GetServiceImplementationsL(TUid aServiceUid, RPointerArray<CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const;
+        void GetServiceImplementationsL(TUid aServiceUid, TDesC& aDataType, RPointerArray<CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const;
+        void GetAppServiceOpaqueDataL(TUid aAppUid, TUid aServiceUid, RPointerArray<CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const;
+        void GetOpaqueDataArrayL(TUid aAppUid, TUid aServiceUid, RPointerArray<COpaqueData>& aOpaqueDataArray, TLanguage aLanguage) const;
+        void NextAppInfoSizeL(const RMessage2& aMessage, TAppRegInfo*& aAppInfo, CAppInfoViewSubsessionContext* aSubsessionContext);
+        void NextAppInfoDataL(const RMessage2& aMessage, TAppRegInfo*& aAppInfo);
+
+        //CRegInfoForApplicationSubsession
+        void GetServiceUidSizeL(const RMessage2& aMessage, TUid aAppUid,CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+        void GetServiceUidDataL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+        void SetLocaleForRegInfoForApplicationSubsessionContextL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext);
+        void GetApplicationLanguageL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+        void GetDefaultScreenNumberL(const RMessage2& aMessage, TUid aAppUid) const;
+        void GetNumberOfOwnDefinedIconsL(const RMessage2& aMessage, TUid aAppUid,CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+        void GetViewSizeL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+        void GetViewDataL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+        void GetViewsL(RPointerArray<Usif::CAppViewData>& aViewInfoArray,TUid aAppUid, TLanguage aLanguage)const;
+        void GetAppOwnedFilesSizeL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext)const ;
+        void GetAppOwnedFilesDataL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext)const ;
+        void GetAppCharacteristicsL(const RMessage2& aMessage, TUid aAppUid) const;
+        void GetAppIconForFileNameL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+        void GetAppViewIconFileNameL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const;
+		void GetAppPropertiesInfoL(CApplicationRegistrationData& aApplicationRegistrationaApplicationRegistration,TUid aAppUid, TLanguage aLanguage);
+		//CApplicationRegInfoSubsession
+        void GetAppForDataTypeAndServiceL(const RMessage2& aMessage) const;
+        void GetAppForDataTypeL(const RMessage2& aMessage) const;
+        void GetAppServiceInfoSizeL(const RMessage2& aMessage, CApplicationRegInfoSubsessionContext *aSubsessionContext) const;
+        void GetAppServiceInfoDataL(const RMessage2& aMessage, CApplicationRegInfoSubsessionContext *aSubsessionContext) const;
+        void GetApplicationInfoL(const RMessage2& aMessage);
+        
+        //General functions to retrieve various application information, mostly used by CAppRegistrySubsession
+        TBool GetApplicationRegistrationInfoL(CApplicationRegistrationData& aApplicationRegistrationaApplicationRegistration,TUid aAppUid) const;
+        void GetFileOwnershipInfoL(CApplicationRegistrationData& aApplicationRegistrationaApplicationRegistration,TUid aAppUid) const;
+        void GetDataTypesL(RPointerArray<Usif::CDataType> & aDataTypes,TInt aServiceId)const;
+        void GetServiceInfoL(CApplicationRegistrationData& aApplicationRegistrationaApplicationRegistration,TUid aAppUid,TLanguage aLanguage) const;
+        void GetLocalizableAppInfoL(CApplicationRegistrationData& aApplicationRegistrationaApplicationRegistration,TUid aAppUid, TLanguage aLanguage);
+        CCaptionAndIconInfo* GetCaptionAndIconInfoL(TInt aCaptionAndIconId)const;
+        void GetAppRegOpaqueDataL(CApplicationRegistrationData& aApplicationRegistration,TUid aAppUid,TLanguage aLanguage) const;
+        
+        //General functions
+		void GetLocalesForAppIdL(RArray<TInt>& aLocales, TUid aAppUid) const;
+		TBool CheckIfAppUidExistsL(const TUid aAppUid) const;
+        CStatement* CreateStatementForAppInfoL(const TDesC& aStatement, TLanguage aLocale, TInt aValuesNum,...) const;
+        void GetCaptionAndShortCaptionInfoForLocaleL(TUid aAppUid, TLanguage aLocale, TAppCaption& aShortCaption, TAppCaption& aCaption);
+        void GenerateNonNativeAppUidL(const RMessage2& aMessage);
+
+		//Application related
+		void AddApplicationEntryL(const RMessage2& aMessage);		
+		void DeleteAllAppsWithinPackageL(const RMessage2& aMessage);
+		void DeleteAllAppsWithinPackageInternalL(const TComponentId aComponentId);
+		void DeleteApplicationEntryL(const RMessage2& aMessage);
+		void DeleteApplicationEntryInternalL(const TInt aAppUid);
+		void GetComponentIdForAppL(const RMessage2& aMessage) const;
+	    TBool GetComponentIdForAppInternalL(TUid aAppUid, TComponentId& aComponentId) const;
+		void GetAppUidsForComponentSizeL(const RMessage2& aMessage) const;
+		void GetAppUidsForComponentDataL(const RMessage2& aMessage)const; 
+
+		void AddFileOwnershipInfoL(TUid aAppUid, const TDesC& aFileName);
+		void AddServiceInfoL(TUid aAppUid, CServiceInfo*  aAppServiceInfoEntry);
+		void AddServiceDataTypeL(TInt aServiceUid, Usif::CDataType* aDataTypeEntry);
+		void AddLocalizableAppInfoL(TUid aAppUid, Usif::CLocalizableAppInfo* aLocalizableAppInfoEntry);
+		void AddViewDataL(TInt aLocalAppInfoId, Usif::CAppViewData* aViewDataEntry);
+		TInt AddCaptionAndIconInfoL(CCaptionAndIconInfo* aCaptionAndIconEntry);
+		void AddPropertyL(TUid aAppUid, Usif::CPropertyEntry* aAppPropertiesEntry);
+		void AddOpaqueDataL(TUid aAppUid, Usif::COpaqueData*  aOpaqueDataEntry, TUid aServiceUid = TUid::Null());
+		void DeleteFromTableL(const TDesC& aTableName, const TDesC& aAttribute, const TInt aValue);		
 	private:
 		CScrRequestImpl(RFs& aFs);
 		void ConstructL(RFile& aDatabaseFile, RFile& aJournalFile);
@@ -183,6 +277,12 @@
 			EFileUnregistered
 			};
 		
+		enum TAccessMode
+            {
+            ETransactionalSid   = 0x0001,    // Sids requiring component/application transactional support, usually Installers/Execution layers
+            EMaxAccessMode      = 0xFFFF
+            };
+		
 		class TRollbackParams
 			{
 		public:
@@ -241,7 +341,7 @@
         TInt GetDriveFromFilePath(const TDesC& aFilePath, TDriveUnit& aDriveUnit) const;
 		TInt InstalledDrivesToBitmaskL(const TDriveList& aDriveList) const;
 		void UpdateInstalledDrivesL(TComponentId aComponentId, const TDesC& aFilePath, TFileOperationType aType);
-		TBool GetIntSoftwareTypeDataForComponentLC(TComponentId aComponentId, const TDesC& aColumnName, TInt& aValue) const;
+		TBool GetSifPluginUidIInternalL(TInt aSoftwareTypeId, TInt& aValue) const;
 		TInt GetInstalledDrivesBitmaskL(TComponentId aComponentId) const;
 		CGlobalComponentId* ParseGlobalComponendIdLC(const TDesC& aGlobalId) const;
 		void GetGeneralDependencyListL(const TDesC& aSelectColumn, const TDesC& aConditionColumn, const TDesC& aConditionValue, RPointerArray<CVersionedComponentId> &aVerCompIdList) const;
@@ -253,6 +353,11 @@
 		TBool IsDriveReadOnlyL(TInt driveIndex) const;
 		TBool CheckForMediaPresenceL(TComponentId aComponentId) const;
 		
+		TBool GetIntforConditionL(const TDesC& aSelectColumn, const TDesC& aTableInfo, const TDesC& aConditionColumn,TInt aConditionValue,TInt& aRetrievedValue) const;
+		TInt  GetServiceIdForDataTypeL(const TDesC& aType) const;
+		TBool GetAppUidForServiceIdL(const TInt ServiceId, TUid& aAppUid) const;
+		TBool GetNearestAppLanguageL(TLanguage aRequiredLocale,TUid appUid,TLanguage& aFinalAppLocale) const;
+
 		// DB Version management
 		void InitializeDbVersionL();
 		void VerifyDbVersionCompatibilityL() const;
@@ -270,7 +375,9 @@
 		mutable RPointerArray<HBufC> iDeletedMimeTypes; // The list of MIME types deleted as the result of software type deletion.
 		mutable RPointerArray<CScrLogEntry> iLogEntries; // The list of log entries recorded in a session
 		mutable RArray<TLanguage> iMatchingSupportedLanguageList; // The list of matching supported language list recorded in a session
-		mutable RPointerArray<CLocalizableComponentInfo> iCompLocalizedInfoArray; //Component's localized information (name, vendor, locale) 
+		mutable RPointerArray<CLocalizableComponentInfo> iCompLocalizedInfoArray; //Component's localized information (name, vendor, locale)
+		mutable RArray<TUid> iComponentAppUids;  //List of Application Uids associated with a component
+		mutable RPointerArray<CLauncherExecutable> iLaunchers;
 		};
 	
 	} // End of namespace Usif
--- a/installationservices/swcomponentregistry/inc_private/scrserver.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc_private/scrserver.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,6 +31,9 @@
 #include "scrcommon.h"
 #include "usifcommon.h"
 
+_LIT_SECURE_ID(KSisRegistryServerSid, 0x10202DCA); 
+_LIT_SECURE_ID(KApparcServerSid, 0x10003A3F);
+
 namespace Usif
 	{
 	// forward declarations
@@ -98,7 +101,7 @@
 		void ConstructL();
 		void SetupL();
 		CPolicyServer::TCustomResult CheckDeleteComponentAllowedL(const RMessage2& aMsg);
-		CPolicyServer::TCustomResult CheckComponentIdMatchingEnvironmentL(const RMessage2& aMsg);				
+		CPolicyServer::TCustomResult CheckComponentIdMatchingEnvironmentL(const RMessage2& aMsg, TBool aCheckForSingleApp=EFalse);				
 		CPolicyServer::TCustomResult CheckSoftwareNameMatchingEnvironmentL(const RMessage2& aMsg);
 		CPolicyServer::TCustomResult CheckAllowedFilePathL(const RMessage2& aMsg);
 		CPolicyServer::TCustomResult CheckClientIsInstallerL(const RMessage2& aMsg);
--- a/installationservices/swcomponentregistry/inc_private/scrsubsession.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/inc_private/scrsubsession.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -28,6 +28,9 @@
 
 #include "scrserver.h"
 #include "usifcommon.h"
+#include "appregentries.h"
+#include "appreginfo.h"
+#include "appregentries.h"
 
 namespace Usif
 	{
@@ -35,6 +38,7 @@
 	class CStatement;
 	class CComponentEntry;
 	class CComponentFilter;
+	class CAppInfoFilter;
 	
 	class CScrSubsession : public CScsSubsession
 	/**
@@ -114,6 +118,139 @@
 		RPointerArray<HBufC> iFileList;
 		};	
 	
+    struct TAppUidWithLocaleInfo
+         {
+         TUid iAppUid;
+         TLanguage iLocale;
+         };
+
+	class CAppInfoViewSubsessionContext : public CBase
+	    {
+	    friend class CScrRequestImpl;
+	    friend class CAppInfoViewSubsession;
+	    public:
+	        ~CAppInfoViewSubsessionContext();
+	    private:
+	        TInt iAppInfoIndex;	     
+	        TLanguage iLocale;
+	        TInt iScreenMode;
+	        RArray<TAppUidWithLocaleInfo> iApps;
+	    };
+	
+	class CAppInfoViewSubsession : public CScrSubsession
+	    /**
+	        This object is created for each AppInfo view subsession opened by the SCR client.
+	        Handles component view creation by using a provided filter.
+	     */
+	        {
+	    public:
+	        static CAppInfoViewSubsession* NewL(CScrSession& aSession);
+	        ~CAppInfoViewSubsession();
+	        TBool DoServiceL(TInt aFunction, const RMessage2& aMessage);
+	            
+	    private:
+	        CAppInfoViewSubsession(CScrSession& aSession);
+	        void ConstructL();
+	            
+	    private:
+	        CAppInfoFilter* iAppInfoFilter;
+	        TAppRegInfo* iApaAppInfo;
+	        CAppInfoViewSubsessionContext* iSubsessionContext;
+	        };
+	
+	class CRegInfoForApplicationSubsessionContext : public CBase
+	            {
+	            friend class CScrRequestImpl;
+	            friend class CRegInfoForApplicationSubsession;
+	            public:
+	                ~CRegInfoForApplicationSubsessionContext();
+	            private:
+	                RPointerArray<Usif::CAppViewData> iViewInfoArray; //Application's view data information
+	                RArray<TUid> iServiceUidList;
+	                TLanguage iAppLanguageForCurrentLocale;
+	                RPointerArray<HBufC> iAppOwnedFiles;
+	            };
+	
+	class CRegInfoForApplicationSubsession : public CScrSubsession
+	    /**
+	        This object is created for an App Uid subsession opened by the SCR client
+	        to retrieve the App info.
+	     */
+	    {
+	    public:
+	        static CRegInfoForApplicationSubsession* NewL(CScrSession& aSession);
+	        ~CRegInfoForApplicationSubsession();
+	        // Implement CScsSession
+	        TBool DoServiceL(TInt aFunction, const RMessage2& aMessage);
+	                
+	    private:
+	        CRegInfoForApplicationSubsession(CScrSession& aSession);
+	        void ConstructL();       
+	    private:
+	        TUid iAppUid;
+	        CRegInfoForApplicationSubsessionContext *iSubsessionContext;
+	        };  
+
+	   class CApplicationRegInfoSubsessionContext : public CBase
+	       {
+	       friend class CScrRequestImpl;
+	       friend class CApplicationRegInfoSubsession;
+	   public:
+	       ~CApplicationRegInfoSubsessionContext();
+	       private:
+	       RPointerArray<Usif::CServiceInfo> iServiceInfoArray; //Application's service info details
+	       CAppServiceInfoFilter* iAppServiceInfoFilter;
+	       };
+
+	   class CApplicationRegInfoSubsession : public CScrSubsession
+        /**
+            This object is created for an App Uid subsession opened by the SCR client
+            to retrieve the App info.
+         */
+	    {
+        public:
+            static CApplicationRegInfoSubsession* NewL(CScrSession& aSession);
+            ~CApplicationRegInfoSubsession();
+	        // Implement CScsSession
+	        TBool DoServiceL(TInt aFunction, const RMessage2& aMessage);
+	        
+        private:
+            void ConstructL();
+	    private:
+	        CApplicationRegInfoSubsession(CScrSession& aSession);	            
+	        CApplicationRegInfoSubsessionContext *iSubsessionContext;
+	    };  
+	
+	class CAppRegistrySubsessionContext : public CBase
+	        {
+	        friend class CScrRequestImpl;
+	        friend class CAppRegistrySubsession;
+	        public:
+	            ~CAppRegistrySubsessionContext();
+	        private:
+	            TLanguage iLanguage;
+	            TInt iAppRegIndex;       
+	            RArray<TUid> iAppUids;       //array of all the App Uid's      
+	        };
+	
+    class CAppRegistrySubsession : public CScrSubsession
+	    /**
+	       This object is created for an Application registration subsession 
+	       opened by the SCR client to retrieve the Application registration info.
+	    */
+	    {
+	    public:
+	        static CAppRegistrySubsession* NewL(CScrSession& aSession);
+	        ~CAppRegistrySubsession();
+	        // Implement CScsSession
+	        TBool DoServiceL(TInt aFunction, const RMessage2& aMessage);
+	    private:
+	        CAppRegistrySubsession(CScrSession& aSession); 
+	        void ConstructL();	   
+	        CApplicationRegistrationData* iApplicationRegistrationInfo;
+	        CAppRegistrySubsessionContext* iSubsessionContext;
+	     };
+    
 	}// End of namespace Usif
 
 
--- a/installationservices/swcomponentregistry/scrhelper/source/scrhelperserver.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/scrhelper/source/scrhelperserver.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -161,7 +161,6 @@
 	User::LeaveIfError(fileManager->Copy(KScrDbRomPath, aTargetPath, 0));
 
 	// Reset the read-only attribute on the copied file
-	TTime time;
 	User::LeaveIfError(aFs.SetAtt(aTargetPath, 0, KEntryAttReadOnly));
 	CleanupStack::PopAndDestroy(fileManager);
 	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/source/client/appregentries.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,1221 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Implement entry classes for Software Components Registry interface.
+*
+*/
+
+#include <usif/scr/appregentries.h>
+#include <usif/scr/screntries.h>
+#include <scs/streamingarray.h>
+#include <scs/cleanuputils.h>
+
+using namespace Usif;
+///////////////////////
+//TApplicationCharacteristics
+///////////////////////
+EXPORT_C TApplicationCharacteristics::TApplicationCharacteristics()
+    {
+    iEmbeddability = ENotEmbeddable;
+    iSupportsNewFile = EFalse;
+    iAppIsHidden = EFalse;
+    iLaunchInBackground = EFalse;
+    iGroupName = KNullDesC;
+    iAttributes = 0;
+    }
+
+EXPORT_C void TApplicationCharacteristics::ExternalizeL(RWriteStream& aStream) const
+    {
+    aStream.WriteInt32L((TInt)iEmbeddability);
+    aStream.WriteInt32L(iSupportsNewFile);
+    aStream.WriteInt32L(iAppIsHidden);
+    aStream.WriteInt32L(iLaunchInBackground);
+    aStream.WriteInt32L(iGroupName.Length());
+    aStream.WriteL(iGroupName);
+    aStream.WriteUint32L(iAttributes);
+    }
+
+EXPORT_C void TApplicationCharacteristics::InternalizeL(RReadStream& aStream) 
+    {
+    iEmbeddability = (TAppEmbeddability)aStream.ReadInt32L();
+    iSupportsNewFile = aStream.ReadInt32L();
+    iAppIsHidden = aStream.ReadInt32L();
+    iLaunchInBackground = aStream.ReadInt32L();
+    TInt groupNameLength = aStream.ReadInt32L();
+    aStream.ReadL(iGroupName, groupNameLength);
+    iAttributes = aStream.ReadUint32L();
+    }
+
+///////////////////////
+//CEmbeddabilityFilter
+///////////////////////
+EXPORT_C TEmbeddableFilter::TEmbeddableFilter(): iEmbeddabilityFlags(0)
+    {
+    
+    }
+
+EXPORT_C TUint TEmbeddableFilter::EmbeddabilityFlags() const
+    {
+    return iEmbeddabilityFlags;
+    }
+
+void TEmbeddableFilter::SetEmbeddabilityFlags(TUint aEmbeddabilityFlags)
+    {
+    iEmbeddabilityFlags = aEmbeddabilityFlags;
+    }
+
+EXPORT_C void TEmbeddableFilter::AddEmbeddability(TApplicationCharacteristics::TAppEmbeddability aEmbeddability)
+    {
+    iEmbeddabilityFlags |= (1 << aEmbeddability);
+    }
+
+EXPORT_C TBool TEmbeddableFilter::MatchesEmbeddability(TApplicationCharacteristics::TAppEmbeddability aEmbeddability) const
+    {
+    TUint embeddabilityFlag = (1 << aEmbeddability);
+    return ((embeddabilityFlag & iEmbeddabilityFlags) == 0) ? EFalse : ETrue;
+    }
+
+//////////////////
+//CAppInfoFilter
+//////////////////
+
+CAppInfoFilter::CAppInfoFilter()
+        {
+        
+        }
+
+CAppInfoFilter::~CAppInfoFilter()
+        {
+        
+        }
+
+EXPORT_C CAppInfoFilter* CAppInfoFilter::NewLC()
+        {
+        CAppInfoFilter *self = new(ELeave) CAppInfoFilter();
+        CleanupStack::PushL(self);
+        self->ConstructL();
+        return self;
+        }
+
+
+EXPORT_C CAppInfoFilter* CAppInfoFilter::NewL()
+        {
+        CAppInfoFilter *self = CAppInfoFilter::NewLC();
+        CleanupStack::Pop(self);
+        return self;
+        }
+
+EXPORT_C CAppInfoFilter* CAppInfoFilter::NewL(RReadStream& aStream)
+        {   
+        CAppInfoFilter *self = CAppInfoFilter::NewLC();
+        self->InternalizeL(aStream);
+        CleanupStack::Pop(self);
+        return self;
+        }
+
+void CAppInfoFilter::ConstructL()
+        {
+        iSetFlag = EAllApps;
+        }
+
+EXPORT_C void CAppInfoFilter::ExternalizeL(RWriteStream& aStream) const
+        {
+        aStream.WriteUint16L(iSetFlag);
+        aStream.WriteInt32L(iScreenMode);
+        aStream.WriteUint32L(iEmbeddabilityFilter.EmbeddabilityFlags());
+        aStream.WriteUint32L(iCapabilityAttributeMask);
+        aStream.WriteUint32L(iCapabilityAttributeValue);          
+        aStream.WriteUint32L(iServiceUid.iUid);
+        aStream.WriteUint32L(iAppUid.iUid);
+        }
+
+void CAppInfoFilter::InternalizeL(RReadStream& aStream)
+    {
+    iSetFlag = aStream.ReadUint16L();
+    iScreenMode = aStream.ReadInt32L();  
+    iEmbeddabilityFilter.SetEmbeddabilityFlags(aStream.ReadUint32L());
+    iCapabilityAttributeMask  = aStream.ReadUint32L();
+    iCapabilityAttributeValue = aStream.ReadUint32L();
+    iServiceUid = TUid::Uid(aStream.ReadUint32L());
+    iAppUid = TUid::Uid(aStream.ReadUint32L());
+    }
+
+EXPORT_C void CAppInfoFilter::SetAllApps()
+        {
+        iSetFlag = EAllApps;
+        }
+
+EXPORT_C void CAppInfoFilter::SetAllApps(const TInt aScreenMode)
+        {
+        iScreenMode = aScreenMode;
+        iSetFlag = EAllAppsWithScreenMode;
+        }
+
+EXPORT_C void CAppInfoFilter::SetEmbeddableApps()
+        {
+        iSetFlag = EGetEmbeddableApps;
+        }
+
+EXPORT_C void CAppInfoFilter::SetEmbeddableApps(const TInt aScreenMode)   
+        {
+        iScreenMode = aScreenMode;
+        iSetFlag = EGetEmbeddableAppsWithSreenMode;
+        }
+
+EXPORT_C void CAppInfoFilter::SetEmbeddabilityFilter(TEmbeddableFilter& aEmbeddabilityFilter)
+        {
+        iEmbeddabilityFilter = aEmbeddabilityFilter;
+        iSetFlag = EGetFilteredAppsWithEmbeddabilityFilter;        
+        }
+
+EXPORT_C void CAppInfoFilter::SetEmbeddabilityFilterWithScreenMode(TEmbeddableFilter& aEmbeddabilityFilter, const TInt aScreenMode)
+        {
+        iEmbeddabilityFilter = aEmbeddabilityFilter;
+        iScreenMode = aScreenMode;
+        iSetFlag = EGetFilteredAppsWithEmbeddabilityFilterWithScreenMode;           
+        }
+EXPORT_C void CAppInfoFilter::SetServerApps(const TUid aServiceUid)
+        {
+        iServiceUid = aServiceUid;
+        iSetFlag = EGetServerApps;
+        }
+EXPORT_C void CAppInfoFilter::SetServerApps(const TUid aServiceUid,const TInt aScreenMode)
+        {
+        iServiceUid = aServiceUid;
+        iScreenMode = aScreenMode;
+        iSetFlag = EGetServerAppsWithScreenMode;
+        }
+
+EXPORT_C void CAppInfoFilter::SetCapabilityAttributeMaskAndValue(const TInt aCapabilityAttributeMask, const TInt aCapabilityAttributeValue)
+        {
+        iCapabilityAttributeMask = aCapabilityAttributeMask;
+        iCapabilityAttributeValue =  aCapabilityAttributeValue;
+        iSetFlag =  EGetFilteredAppsWithCapabilityMaskAndValue;
+        }
+
+EXPORT_C void CAppInfoFilter::SetCapabilityAttributeMaskAndValue(const TInt aCapabilityAttributeMask, const TInt aCapabilityAttributeValue, const TInt aScreenMode)
+        {
+        iCapabilityAttributeMask = aCapabilityAttributeMask;
+        iCapabilityAttributeValue =  aCapabilityAttributeValue;
+        iScreenMode = aScreenMode;
+        iSetFlag = EGetFilteredAppsWithCapabilityMaskAndValueWithScreenMode;
+        }
+
+////////////////////////
+//CAppServiceInfoFilter
+////////////////////////
+
+CAppServiceInfoFilter::CAppServiceInfoFilter()
+    {
+        
+    }
+
+CAppServiceInfoFilter::~CAppServiceInfoFilter()
+    {
+    delete iDataType;
+    }
+
+EXPORT_C CAppServiceInfoFilter* CAppServiceInfoFilter::NewLC()
+    {
+    CAppServiceInfoFilter *self = new(ELeave) CAppServiceInfoFilter();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+
+EXPORT_C CAppServiceInfoFilter* CAppServiceInfoFilter::NewL()
+    {
+    CAppServiceInfoFilter *self = CAppServiceInfoFilter::NewLC();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+EXPORT_C CAppServiceInfoFilter* CAppServiceInfoFilter::NewL(RReadStream& aStream)
+    {   
+    CAppServiceInfoFilter *self = CAppServiceInfoFilter::NewLC();
+    self->InternalizeL(aStream);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+void CAppServiceInfoFilter::ConstructL()
+    {
+    DeleteObjectZ(iDataType);
+    iDataType = KNullDesC().AllocL();
+    
+    }
+
+EXPORT_C void CAppServiceInfoFilter::ExternalizeL(RWriteStream& aStream) const
+    {
+    aStream.WriteUint16L(iSetFlag);
+    aStream.WriteUint32L(iAppUid.iUid);
+    aStream.WriteUint32L(iServiceUid.iUid);
+    aStream << *iDataType;
+    }
+
+void CAppServiceInfoFilter::InternalizeL(RReadStream& aStream)
+    {
+    iSetFlag = aStream.ReadUint16L();
+    iAppUid = TUid::Uid(aStream.ReadUint32L());
+    iServiceUid = TUid::Uid(aStream.ReadUint32L());
+    DeleteObjectZ(iDataType);
+    iDataType = HBufC::NewL(aStream, KMaxTInt);
+
+    }
+
+
+EXPORT_C void CAppServiceInfoFilter::SetAppUidForServiceInfo (const TUid aAppUid)
+    {
+    iAppUid = aAppUid;
+    iSetFlag = EGetServiceInfoForApp;
+    }
+
+EXPORT_C void CAppServiceInfoFilter::SetServiceUidForServiceImplementations (const TUid aServiceUid)
+    {
+    iServiceUid = aServiceUid;
+    iSetFlag = EGetServiceImplementationForServiceUid;
+    }
+
+EXPORT_C void CAppServiceInfoFilter::SetServiceUidAndDatatTypeForServiceImplementationsL (const TUid aServiceUid, const TDesC& aDataType)
+    {
+    iServiceUid = aServiceUid;
+    DeleteObjectZ(iDataType);
+    iDataType = aDataType.AllocL();
+    iSetFlag = EGetServiceImplementationForServiceUidAndDatatType;
+    }
+
+EXPORT_C void CAppServiceInfoFilter::SetAppUidAndServiceUidForOpaqueData (const TUid aAppUid, const TUid aServiceUid)
+    {
+    iAppUid = aAppUid;
+    iServiceUid = aServiceUid;
+    iSetFlag = EGetOpaqueDataForAppWithServiceUid;
+    }
+
+///////////////////////
+// COpaqueData
+///////////////////////
+
+COpaqueData::COpaqueData()
+    {
+    // empty
+    }
+
+COpaqueData::~COpaqueData()
+    {
+    delete iOpaqueData;
+    }
+
+EXPORT_C COpaqueData* COpaqueData::NewL()
+    {
+    COpaqueData *self = COpaqueData::NewLC();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+EXPORT_C COpaqueData* COpaqueData::NewLC()
+    {
+    COpaqueData *self = new(ELeave) COpaqueData();
+    CleanupStack::PushL(self);
+    self->ConstructL(KNullDesC8(), TLanguage(0));
+    return self;
+    }
+
+EXPORT_C COpaqueData* COpaqueData::NewL(TDesC8& aOpaqueData, TLanguage aLanguage)
+    {
+    COpaqueData *self = COpaqueData::NewLC(aOpaqueData, aLanguage);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+EXPORT_C COpaqueData* COpaqueData::NewLC(TDesC8& aOpaqueData, TLanguage aLanguage)
+    {
+    COpaqueData *self = new(ELeave) COpaqueData();
+    CleanupStack::PushL(self);
+    self->ConstructL(aOpaqueData, aLanguage);
+    return self;
+    }
+
+EXPORT_C COpaqueData* COpaqueData::NewL(RReadStream& aStream)
+    {
+    COpaqueData *self = COpaqueData::NewLC();
+    self->InternalizeL(aStream);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+void COpaqueData::ConstructL(const TDesC8& aOpaqueData, TLanguage aLanguage)
+    {
+    iOpaqueData = aOpaqueData.AllocL();
+    iLanguage = aLanguage;
+    }
+
+EXPORT_C HBufC8& COpaqueData::OpaqueData()
+    {
+    return *iOpaqueData;
+    }
+
+EXPORT_C TLanguage COpaqueData::Language()
+    {
+    return iLanguage;
+    }
+
+
+EXPORT_C void COpaqueData::ExternalizeL(RWriteStream& aStream) const
+    {
+    aStream.WriteInt32L(iOpaqueData->Length());
+    aStream << *iOpaqueData;
+    aStream.WriteUint16L(iLanguage);
+    }
+
+EXPORT_C void COpaqueData::InternalizeL(RReadStream& aStream)
+    {
+    DeleteObjectZ(iOpaqueData);
+    
+    TInt32 opaqueDataLength = aStream.ReadInt32L();
+    iOpaqueData = HBufC8::NewL(aStream, opaqueDataLength);
+    iLanguage = (TLanguage) aStream.ReadUint16L();
+    }
+
+///////////////////////
+// CApplicationRegistrationData
+///////////////////////
+
+CApplicationRegistrationData::CApplicationRegistrationData()
+	{
+	// empty
+	}
+
+CApplicationRegistrationData::~CApplicationRegistrationData()
+	{
+	iOwnedFileArray.ResetAndDestroy();
+    iServiceArray.ResetAndDestroy();
+    iLocalizableAppInfoList.ResetAndDestroy();
+    iAppPropertiesArray.ResetAndDestroy();
+    iOpaqueDataArray.ResetAndDestroy();
+	delete iAppFile;									
+	}
+
+EXPORT_C CApplicationRegistrationData* CApplicationRegistrationData::NewL()
+	{
+	CApplicationRegistrationData *self = CApplicationRegistrationData::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CApplicationRegistrationData* CApplicationRegistrationData::NewLC()
+	{
+	CApplicationRegistrationData *self = new(ELeave) CApplicationRegistrationData();
+	CleanupStack::PushL(self);
+	self->ConstructL(KNullDesC());
+	return self;
+	}
+
+EXPORT_C CApplicationRegistrationData* CApplicationRegistrationData::NewL(RReadStream& aStream)
+	{
+	CApplicationRegistrationData *self = CApplicationRegistrationData::NewLC();
+	self->InternalizeL(aStream);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CApplicationRegistrationData* CApplicationRegistrationData::NewL(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<CServiceInfo>& aServiceArray, RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList,
+                                              RPointerArray<CPropertyEntry>& aAppPropertiesArray, TUid aAppUid, 
+                                              const TDesC& aAppFile)
+    {
+    CApplicationRegistrationData *self = CApplicationRegistrationData::NewLC(aOwnedFileArray, aServiceArray, aLocalizableAppInfoList,
+                                              aAppPropertiesArray, aAppUid, aAppFile);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+EXPORT_C CApplicationRegistrationData* CApplicationRegistrationData::NewLC(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<CServiceInfo>& aServiceArray, RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoList,
+                                               RPointerArray<CPropertyEntry>& aAppPropertiesArray, TUid aAppUid, 
+                                               const TDesC& aAppFile)
+    {
+    CApplicationRegistrationData *self = new(ELeave) CApplicationRegistrationData();
+    CleanupStack::PushL(self);
+    self->ConstructL(aOwnedFileArray, aServiceArray, aLocalizableAppInfoList,
+                     aAppPropertiesArray, aAppUid, aAppFile);
+    return self;
+    }
+
+EXPORT_C CApplicationRegistrationData* CApplicationRegistrationData::NewL(
+        RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<
+                Usif::CServiceInfo>& aServiceArray, RPointerArray<
+                Usif::CLocalizableAppInfo>& aLocalizableAppInfoList,
+        RPointerArray<Usif::CPropertyEntry>& aAppPropertiesArray,
+        RPointerArray<Usif::COpaqueData>& aOpaqueDataArray, TUid aAppUid,
+        const TDesC& aAppFile, TApplicationCharacteristics& aCharacteristics,
+        TInt aDefaultScreenNumber, TInt aTypeId)
+    {
+    CApplicationRegistrationData *self = CApplicationRegistrationData::NewLC(
+            aOwnedFileArray, aServiceArray, aLocalizableAppInfoList,
+            aAppPropertiesArray, aOpaqueDataArray, aAppUid, aAppFile,
+            aCharacteristics, aDefaultScreenNumber, aTypeId);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CApplicationRegistrationData* CApplicationRegistrationData::NewLC(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<Usif::CServiceInfo> &aServiceArray, RPointerArray<Usif::CLocalizableAppInfo>& aLocalizableAppInfoList,
+                                               RPointerArray<Usif::CPropertyEntry>& aAppPropertiesArray, 
+                                               RPointerArray<Usif::COpaqueData>& aOpaqueDataArray, TUid aAppUid, 
+                                               const TDesC& aAppFile, TApplicationCharacteristics& aCharacteristics,
+                                               TInt aDefaultScreenNumber, TInt aTypeId)
+	{
+	CApplicationRegistrationData *self = new(ELeave) CApplicationRegistrationData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aOwnedFileArray, aServiceArray, aLocalizableAppInfoList,
+                     aAppPropertiesArray, aOpaqueDataArray, aAppUid, aAppFile, aCharacteristics,
+                     aDefaultScreenNumber, aTypeId);
+	return self;
+	}
+	
+void CApplicationRegistrationData::ConstructL(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<Usif::CServiceInfo> &aServiceArray, RPointerArray<Usif::CLocalizableAppInfo>& aLocalizableAppInfoList,
+                                               RPointerArray<Usif::CPropertyEntry>& aAppPropertiesArray, 
+                                               RPointerArray<Usif::COpaqueData>& aOpaqueDataArray, TUid aAppUid, 
+                                               const TDesC& aAppFile, TApplicationCharacteristics& aCharacteristics, 
+                                               TInt aDefaultScreenNumber, TInt aTypeId)
+	{
+	iOwnedFileArray = aOwnedFileArray;
+    iServiceArray = aServiceArray;
+    iLocalizableAppInfoList = aLocalizableAppInfoList;
+    iAppPropertiesArray = aAppPropertiesArray;
+    iOpaqueDataArray = aOpaqueDataArray;
+	iAppUid = aAppUid;
+	DeleteObjectZ(iAppFile);
+	iAppFile = aAppFile.AllocL();
+	iTypeId = aTypeId;
+	iCharacteristics.iAttributes = aCharacteristics.iAttributes;
+	iCharacteristics.iAppIsHidden = aCharacteristics.iAppIsHidden;
+	iCharacteristics.iEmbeddability = aCharacteristics.iEmbeddability;
+	iCharacteristics.iSupportsNewFile = aCharacteristics.iSupportsNewFile;
+	iCharacteristics.iLaunchInBackground = aCharacteristics.iLaunchInBackground;
+	iCharacteristics.iGroupName = aCharacteristics.iGroupName;
+	iDefaultScreenNumber = aDefaultScreenNumber;							
+	}
+
+void CApplicationRegistrationData::ConstructL(RPointerArray<HBufC>& aOwnedFileArray, RPointerArray<Usif::CServiceInfo> &aServiceArray, RPointerArray<Usif::CLocalizableAppInfo>& aLocalizableAppInfoList,
+                                               RPointerArray<Usif::CPropertyEntry>& aAppPropertiesArray, TUid aAppUid, 
+                                               const TDesC& aAppFile)
+    {
+    iOwnedFileArray = aOwnedFileArray;
+    iServiceArray = aServiceArray;
+    iLocalizableAppInfoList = aLocalizableAppInfoList;
+    iAppPropertiesArray = aAppPropertiesArray;
+    iAppUid = aAppUid;
+    DeleteObjectZ(iAppFile);
+    iAppFile = aAppFile.AllocL();  
+    }
+
+void CApplicationRegistrationData::ConstructL(const TDesC& aAppFile)
+    {
+    DeleteObjectZ(iAppFile);
+    iAppFile = aAppFile.AllocL(); 
+    }
+
+EXPORT_C void CApplicationRegistrationData::ExternalizeL(RWriteStream& aStream) const
+	{
+	ExternalizePointersArrayL(iOwnedFileArray, aStream);
+	ExternalizePointersArrayL(iServiceArray, aStream);
+	ExternalizePointersArrayL(iLocalizableAppInfoList, aStream);
+	ExternalizePointersArrayL(iAppPropertiesArray, aStream);
+	ExternalizePointersArrayL(iOpaqueDataArray, aStream);
+	aStream << iAppUid;
+	aStream << *iAppFile;
+	aStream.WriteInt32L(iTypeId);
+	aStream << iCharacteristics;
+	aStream.WriteInt32L(iDefaultScreenNumber);
+	}
+	
+EXPORT_C void CApplicationRegistrationData::InternalizeL(RReadStream& aStream)
+	{
+	iOwnedFileArray.ResetAndDestroy();
+	InternalizePointersArrayL(iOwnedFileArray, aStream);
+	iServiceArray.ResetAndDestroy();
+	InternalizePointersArrayL(iServiceArray, aStream);
+	iLocalizableAppInfoList.ResetAndDestroy();
+	InternalizePointersArrayL(iLocalizableAppInfoList, aStream);
+	iAppPropertiesArray.ResetAndDestroy();
+	InternalizePointersArrayL(iAppPropertiesArray, aStream);
+	iOpaqueDataArray.ResetAndDestroy();
+	InternalizePointersArrayL(iOpaqueDataArray, aStream);
+
+	aStream >> iAppUid;
+
+	DeleteObjectZ(iAppFile);
+	iAppFile = HBufC::NewL(aStream, KMaxTInt);
+
+	iTypeId = aStream.ReadInt32L();
+	aStream >> iCharacteristics;
+	iDefaultScreenNumber = aStream.ReadInt32L();
+	}
+
+EXPORT_C const TUid CApplicationRegistrationData::AppUid() const
+	{
+	return iAppUid;
+	}
+
+EXPORT_C const TDesC& CApplicationRegistrationData::AppFile() const
+	{
+	return *iAppFile;
+	}
+
+EXPORT_C TInt CApplicationRegistrationData::TypeId() const
+    {
+    return iTypeId;
+    }
+
+EXPORT_C TUint CApplicationRegistrationData::Attributes() const
+	{
+	return iCharacteristics.iAttributes;
+	}
+
+EXPORT_C TBool CApplicationRegistrationData::Hidden() const
+	{
+	return iCharacteristics.iAppIsHidden;
+	}
+
+EXPORT_C TApplicationCharacteristics::TAppEmbeddability CApplicationRegistrationData::Embeddability() const
+	{
+	return iCharacteristics.iEmbeddability;
+	}
+
+EXPORT_C TBool CApplicationRegistrationData::NewFile() const
+	{
+	return iCharacteristics.iSupportsNewFile;
+	}
+
+EXPORT_C TBool CApplicationRegistrationData::Launch() const
+	{
+	return iCharacteristics.iLaunchInBackground;
+	}
+
+EXPORT_C const TDesC& CApplicationRegistrationData::GroupName() const
+	{
+	return iCharacteristics.iGroupName;
+	}
+
+EXPORT_C TInt CApplicationRegistrationData::DefaultScreenNumber() const
+	{
+	return iDefaultScreenNumber;
+	}
+
+EXPORT_C const RPointerArray<HBufC>& CApplicationRegistrationData::OwnedFileArray() const
+	{
+	return iOwnedFileArray;
+	}
+
+EXPORT_C const RPointerArray<CServiceInfo>& CApplicationRegistrationData::ServiceArray() const
+	{
+	return iServiceArray;
+	}
+
+EXPORT_C const RPointerArray<CLocalizableAppInfo>& CApplicationRegistrationData::LocalizableAppInfoList() const
+	{
+	return iLocalizableAppInfoList;
+	}
+
+EXPORT_C const RPointerArray<CPropertyEntry>& CApplicationRegistrationData::AppProperties() const
+	{
+	return iAppPropertiesArray;
+	}
+
+EXPORT_C const RPointerArray<COpaqueData>& CApplicationRegistrationData::AppOpaqueData() const
+    {
+    return iOpaqueDataArray;
+    }
+
+///////////////////////
+// CDataType
+///////////////////////
+
+CDataType::CDataType()
+	{
+	// empty
+	}
+
+CDataType::~CDataType()
+	{
+    delete iType;
+	}
+
+EXPORT_C CDataType* CDataType::NewL()
+	{
+	CDataType *self = CDataType::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CDataType* CDataType::NewLC()
+	{
+	CDataType *self = new(ELeave) CDataType();
+	CleanupStack::PushL(self);
+	self->ConstructL(0, KNullDesC());
+	return self;
+	}
+
+EXPORT_C CDataType* CDataType::NewL(RReadStream& aStream)
+	{
+	CDataType *self = CDataType::NewLC();
+	self->InternalizeL(aStream);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CDataType* CDataType::NewL(TInt aPriority, const TDesC& aType)
+	{
+	CDataType *self = CDataType::NewLC(aPriority, aType);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CDataType* CDataType::NewLC(TInt aPriority, const TDesC& aType)
+	{
+	CDataType *self = new(ELeave) CDataType();
+	CleanupStack::PushL(self);
+	self->ConstructL(aPriority, aType);
+	return self;
+	}
+
+void CDataType::ConstructL(TInt aPriority, const TDesC& aType)
+	{
+	iPriority = aPriority;
+	DeleteObjectZ(iType);
+    iType = aType.AllocL();
+    }
+
+EXPORT_C void CDataType::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream.WriteInt32L(iPriority);
+	aStream << *iType;
+	}
+			
+EXPORT_C void CDataType::InternalizeL(RReadStream& aStream)
+	{
+	iPriority = aStream.ReadInt32L();
+	DeleteObjectZ(iType);
+	iType = HBufC::NewL(aStream, KMaxTInt);
+	}
+
+EXPORT_C TInt CDataType::Priority() const
+	{
+	return iPriority;
+	}
+
+EXPORT_C const TDesC& CDataType::Type() const
+	{
+	return *iType;
+	}
+
+///////////////////////
+// CServiceInfo
+///////////////////////
+
+CServiceInfo::CServiceInfo()
+	{
+	// empty
+	}
+
+CServiceInfo::~CServiceInfo()
+	{
+	iDataTypes.ResetAndDestroy();
+	iOpaqueDataArray.ResetAndDestroy();
+   }
+
+EXPORT_C CServiceInfo* CServiceInfo::NewL()
+	{
+	CServiceInfo *self = CServiceInfo::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CServiceInfo* CServiceInfo::NewLC()
+	{
+	CServiceInfo *self = new(ELeave) CServiceInfo();
+	CleanupStack::PushL(self);
+	return self;
+	}
+
+EXPORT_C CServiceInfo* CServiceInfo::NewL(RReadStream& aStream)
+	{
+	CServiceInfo *self = CServiceInfo::NewLC();
+	self->InternalizeL(aStream);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CServiceInfo* CServiceInfo::NewL(const TUid aUid, RPointerArray<COpaqueData>& aOpaqueDataArray, RPointerArray<CDataType>& aDataTypes)
+	{
+	CServiceInfo *self = CServiceInfo::NewLC(aUid, aOpaqueDataArray, aDataTypes);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CServiceInfo* CServiceInfo::NewLC(const TUid aUid, RPointerArray<COpaqueData>& aOpaqueDataArray, RPointerArray<CDataType>& aDataTypes)
+	{
+	CServiceInfo *self = new(ELeave) CServiceInfo();
+	CleanupStack::PushL(self);
+	self->ConstructL(aUid, aOpaqueDataArray, aDataTypes);
+	return self;
+	}
+	
+void CServiceInfo::ConstructL(const TUid aUid, RPointerArray<COpaqueData>& aOpaqueDataArray, RPointerArray<CDataType>& aDataTypes)
+	{
+	iUid = aUid;
+	iOpaqueDataArray = aOpaqueDataArray;
+    iDataTypes = aDataTypes;
+    }
+
+EXPORT_C void CServiceInfo::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream << iUid;
+	ExternalizePointersArrayL(iOpaqueDataArray, aStream);
+	ExternalizePointersArrayL(iDataTypes, aStream);
+	}
+		
+EXPORT_C void CServiceInfo::InternalizeL(RReadStream& aStream)
+	{
+	aStream >> iUid;
+	iOpaqueDataArray.Reset();
+	InternalizePointersArrayL(iOpaqueDataArray, aStream);
+	InternalizePointersArrayL(iDataTypes, aStream);
+	}
+
+EXPORT_C const TUid CServiceInfo::Uid() const
+	{
+	return iUid;
+	}
+
+EXPORT_C const RPointerArray<CDataType>& CServiceInfo::DataTypes() const
+	{
+	return iDataTypes;
+	}
+
+EXPORT_C const RPointerArray<COpaqueData>& CServiceInfo::OpaqueData() const
+    {
+    return iOpaqueDataArray;
+    }
+
+///////////////////////
+// CLocalizableAppInfo
+///////////////////////
+
+CLocalizableAppInfo::CLocalizableAppInfo()
+	{
+	// empty
+	}
+
+CLocalizableAppInfo::~CLocalizableAppInfo()
+	{
+	delete iShortCaption;
+    delete iGroupName;
+	delete iCaptionAndIconInfo;
+	iViewDataList.ResetAndDestroy();
+	}
+
+EXPORT_C CLocalizableAppInfo* CLocalizableAppInfo::NewL()
+	{
+	CLocalizableAppInfo *self = CLocalizableAppInfo::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CLocalizableAppInfo* CLocalizableAppInfo::NewLC()
+	{
+	CLocalizableAppInfo *self = new(ELeave) CLocalizableAppInfo();
+	CleanupStack::PushL(self);
+	self->ConstructL(KNullDesC(), KNullDesC());
+	return self;
+	}
+
+EXPORT_C CLocalizableAppInfo* CLocalizableAppInfo::NewL(RReadStream& aStream)
+	{
+	CLocalizableAppInfo *self = CLocalizableAppInfo::NewLC();
+	self->InternalizeL(aStream);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CLocalizableAppInfo* CLocalizableAppInfo::NewL(const TDesC& aShortCaption, TLanguage aApplicationLanguage, const TDesC& aGroupName, CCaptionAndIconInfo* aCaptionAndIconInfo, RPointerArray<CAppViewData>& aViewDataList)
+	{
+	CLocalizableAppInfo *self = CLocalizableAppInfo::NewLC(aShortCaption, aApplicationLanguage, aGroupName, aCaptionAndIconInfo, aViewDataList);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CLocalizableAppInfo* CLocalizableAppInfo::NewLC(const TDesC& aShortCaption, TLanguage aApplicationLanguage, const TDesC& aGroupName, CCaptionAndIconInfo* aCaptionAndIconInfo, RPointerArray<CAppViewData>& aViewDataList)
+	{
+	CLocalizableAppInfo *self = new(ELeave) CLocalizableAppInfo();
+	CleanupStack::PushL(self);
+	self->ConstructL(aShortCaption, aApplicationLanguage, aGroupName, aCaptionAndIconInfo, aViewDataList);
+	return self;
+	}
+	
+void CLocalizableAppInfo::ConstructL(const TDesC& aShortCaption, TLanguage aApplicationLanguage, const TDesC& aGroupName, CCaptionAndIconInfo* aCaptionAndIconInfo, RPointerArray<Usif::CAppViewData> aViewDataList)
+	{
+	DeleteObjectZ(iShortCaption);
+	iShortCaption = aShortCaption.AllocL();
+	iApplicationLanguage = aApplicationLanguage;
+	DeleteObjectZ(iGroupName);
+	iGroupName = aGroupName.AllocL();
+	iCaptionAndIconInfo = aCaptionAndIconInfo;
+	iViewDataList = aViewDataList;	
+    }
+
+void CLocalizableAppInfo::ConstructL(const TDesC& aShortCaption, const TDesC& aGroupName)
+    {
+    DeleteObjectZ(iShortCaption);
+    iShortCaption = aShortCaption.AllocL();
+    DeleteObjectZ(iGroupName);
+    iGroupName = aGroupName.AllocL();
+    }
+
+
+EXPORT_C void CLocalizableAppInfo::ExternalizeL(RWriteStream& aStream) const
+	{	
+	 aStream << *iShortCaption;
+	 aStream << TCardinality(iApplicationLanguage);
+     aStream << *iGroupName;
+	if(NULL != iCaptionAndIconInfo)
+	    {	    
+	    aStream.WriteInt8L(ETrue);
+	    aStream << *iCaptionAndIconInfo;
+	    }
+	else
+	    {	    
+	    aStream.WriteInt8L(EFalse);    
+	    }
+	ExternalizePointersArrayL(iViewDataList, aStream);
+	}
+	
+EXPORT_C void CLocalizableAppInfo::InternalizeL(RReadStream& aStream) 
+	{
+	DeleteObjectZ(iShortCaption);
+	iShortCaption = HBufC::NewL(aStream, KMaxTInt);
+	TCardinality c;
+	aStream >> c;
+	iApplicationLanguage = static_cast<TLanguage>(static_cast<TInt>(c));
+	DeleteObjectZ(iGroupName);
+	iGroupName = HBufC::NewL(aStream, KMaxTInt);
+	DeleteObjectZ(iCaptionAndIconInfo);
+	TBool isCaptionAndIconInfo= aStream.ReadInt8L();
+	if(isCaptionAndIconInfo)
+	    {
+	    iCaptionAndIconInfo = CCaptionAndIconInfo::NewL(aStream);
+	    }
+	InternalizePointersArrayL(iViewDataList, aStream);
+	}
+
+EXPORT_C const TDesC& CLocalizableAppInfo::ShortCaption() const
+	{
+	return *iShortCaption;
+	}
+
+EXPORT_C TLanguage CLocalizableAppInfo::ApplicationLanguage() const
+	{
+	return iApplicationLanguage;
+	}
+
+EXPORT_C const TDesC& CLocalizableAppInfo::GroupName() const
+	{
+	return *iGroupName;
+	}
+
+EXPORT_C const RPointerArray<CAppViewData>& CLocalizableAppInfo::ViewDataList() const
+	{
+	return iViewDataList;
+	}
+
+EXPORT_C const CCaptionAndIconInfo* CLocalizableAppInfo::CaptionAndIconInfo() const
+	{
+	return iCaptionAndIconInfo;
+	}
+
+///////////////////////
+// CCaptionAndIconInfo
+///////////////////////
+
+CCaptionAndIconInfo::CCaptionAndIconInfo()
+	{
+	// empty
+	}
+
+CCaptionAndIconInfo::~CCaptionAndIconInfo()
+	{
+	delete iCaption;
+	delete iIconFileName;
+	}
+
+EXPORT_C CCaptionAndIconInfo* CCaptionAndIconInfo::NewL()
+	{
+	CCaptionAndIconInfo *self = CCaptionAndIconInfo::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CCaptionAndIconInfo* CCaptionAndIconInfo::NewLC()
+	{
+	CCaptionAndIconInfo *self = new(ELeave) CCaptionAndIconInfo();
+	CleanupStack::PushL(self);
+	self->ConstructL(KNullDesC(), KNullDesC(), 0);
+	return self;
+	}
+
+EXPORT_C CCaptionAndIconInfo* CCaptionAndIconInfo::NewL(RReadStream& aStream)
+	{
+	CCaptionAndIconInfo *self = CCaptionAndIconInfo::NewLC();
+	self->InternalizeL(aStream);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CCaptionAndIconInfo* CCaptionAndIconInfo::NewL(const TDesC& aCaption, const TDesC& aIconFileName, TInt aNumOfAppIcons)
+	{
+	CCaptionAndIconInfo *self = CCaptionAndIconInfo::NewLC(aCaption, aIconFileName, aNumOfAppIcons);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CCaptionAndIconInfo* CCaptionAndIconInfo::NewLC(const TDesC& aCaption, const TDesC& aIconFileName, TInt aNumOfAppIcons)
+	{
+	CCaptionAndIconInfo *self = new(ELeave) CCaptionAndIconInfo();
+	CleanupStack::PushL(self);
+	self->ConstructL(aCaption, aIconFileName, aNumOfAppIcons);
+	return self;
+	}
+	
+void CCaptionAndIconInfo::ConstructL(const TDesC& aCaption, const TDesC& aIconFileName, TInt aNumOfAppIcons)
+	{
+	DeleteObjectZ(iCaption);
+	iCaption = aCaption.AllocL();
+	DeleteObjectZ(iIconFileName);
+    iIconFileName = aIconFileName.AllocL();
+	iNumOfAppIcons = aNumOfAppIcons;
+	}
+
+EXPORT_C void CCaptionAndIconInfo::ExternalizeL(RWriteStream& aStream) const
+	{
+     aStream << *iCaption;
+     aStream << *iIconFileName;
+	 aStream.WriteInt32L(iNumOfAppIcons);
+	}
+		
+EXPORT_C void CCaptionAndIconInfo::InternalizeL(RReadStream& aStream)
+	{
+	DeleteObjectZ(iCaption);
+	iCaption = HBufC::NewL(aStream, KMaxTInt);
+	DeleteObjectZ(iIconFileName);
+	iIconFileName = HBufC::NewL(aStream, KMaxTInt);
+	iNumOfAppIcons = aStream.ReadInt32L();
+	}
+
+EXPORT_C const TDesC& CCaptionAndIconInfo::Caption() const
+	{
+	return *iCaption;
+	}
+
+EXPORT_C const TDesC& CCaptionAndIconInfo::IconFileName() const
+	{
+	return *iIconFileName;
+	}
+
+EXPORT_C TInt CCaptionAndIconInfo::NumOfAppIcons() const
+	{
+	return iNumOfAppIcons;
+	}
+
+///////////////////////
+// CAppViewData
+///////////////////////
+
+CAppViewData::CAppViewData()
+	{
+	// empty
+	}
+
+CAppViewData::~CAppViewData()
+	{
+	delete iCaptionAndIconInfo;
+	}
+
+EXPORT_C CAppViewData* CAppViewData::NewL()
+	{
+	CAppViewData *self = CAppViewData::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CAppViewData* CAppViewData::NewLC()
+	{
+	CAppViewData *self = new(ELeave) CAppViewData();
+	CleanupStack::PushL(self);
+	return self;
+	}
+
+EXPORT_C CAppViewData* CAppViewData::NewL(RReadStream& aStream)
+	{
+	CAppViewData *self = CAppViewData::NewLC();
+	self->InternalizeL(aStream);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CAppViewData* CAppViewData::NewL(TUid aUid, TInt aScreenMode, CCaptionAndIconInfo* aCaptionAndIconInfo)
+	{
+	CAppViewData *self = CAppViewData::NewLC(aUid, aScreenMode, aCaptionAndIconInfo);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CAppViewData* CAppViewData::NewLC(TUid aUid, TInt aScreenMode, CCaptionAndIconInfo* aCaptionAndIconInfo)
+	{
+	CAppViewData *self = new(ELeave) CAppViewData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aUid, aScreenMode, aCaptionAndIconInfo);
+	return self;
+	}
+	
+void CAppViewData::ConstructL(TUid aUid, TInt aScreenMode, CCaptionAndIconInfo* aCaptionAndIconInfo)
+	{
+	iUid = aUid;
+    iScreenMode = aScreenMode;
+	iCaptionAndIconInfo = aCaptionAndIconInfo;
+	}
+
+EXPORT_C void CAppViewData::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream << iUid;
+	aStream.WriteInt32L(iScreenMode);
+	if(NULL != iCaptionAndIconInfo)
+	   {       
+	   aStream.WriteInt8L(ETrue);
+	   aStream << *iCaptionAndIconInfo;
+	   }
+	else
+	   {       
+	   aStream.WriteInt8L(EFalse);    
+	   }
+	}
+			
+EXPORT_C void CAppViewData::InternalizeL(RReadStream& aStream)
+	{
+	aStream >> iUid;
+	iScreenMode = aStream.ReadInt32L();
+	DeleteObjectZ(iCaptionAndIconInfo);
+	TBool isCaptionAndIconInfo= aStream.ReadInt8L();
+	if(isCaptionAndIconInfo)
+	  {
+	  iCaptionAndIconInfo = CCaptionAndIconInfo::NewL(aStream);
+	  }
+	}
+
+EXPORT_C const TUid CAppViewData::Uid() const
+	{
+	return iUid;
+	}
+
+EXPORT_C TInt CAppViewData::ScreenMode() const
+	{
+	return iScreenMode;
+	}
+
+EXPORT_C const CCaptionAndIconInfo* CAppViewData::CaptionAndIconInfo() const
+	{
+	return iCaptionAndIconInfo;
+	}
+
+
+///////////////////////
+// CLauncherExecutable
+///////////////////////
+
+CLauncherExecutable::CLauncherExecutable()
+    {
+    }
+
+CLauncherExecutable::~CLauncherExecutable()
+    {
+    delete iLauncher;
+    }
+
+EXPORT_C CLauncherExecutable* CLauncherExecutable::NewL()
+    {
+    CLauncherExecutable *self = CLauncherExecutable::NewLC();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+EXPORT_C CLauncherExecutable* CLauncherExecutable::NewLC()
+    {
+    CLauncherExecutable *self = new(ELeave) CLauncherExecutable();
+    CleanupStack::PushL(self);
+    self->ConstructL(0, KNullDesC());
+    return self;
+    }
+
+EXPORT_C CLauncherExecutable* CLauncherExecutable::NewL(TInt aTypeId, const TDesC& aLauncher)
+    {
+    CLauncherExecutable *self = CLauncherExecutable::NewLC(aTypeId, aLauncher);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+EXPORT_C CLauncherExecutable* CLauncherExecutable::NewLC(TInt aTypeId, const TDesC& aLauncher)
+    {
+    CLauncherExecutable *self = new(ELeave) CLauncherExecutable();
+    CleanupStack::PushL(self);
+    self->ConstructL(aTypeId, aLauncher);
+    return self;
+    }
+
+EXPORT_C CLauncherExecutable* CLauncherExecutable::NewL(RReadStream& aStream)
+    {
+    CLauncherExecutable *self = CLauncherExecutable::NewLC();
+    self->InternalizeL(aStream);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+void CLauncherExecutable::ConstructL(TInt aTypeId, const TDesC& aLauncher)
+    {
+    iTypeId = aTypeId;
+    DeleteObjectZ(iLauncher);
+    iLauncher = aLauncher.AllocL();
+    }
+
+EXPORT_C const TDesC& CLauncherExecutable::Launcher() const
+    {
+    return *iLauncher;
+    }
+
+EXPORT_C TInt CLauncherExecutable::TypeId() const
+    {
+    return iTypeId;
+    }
+
+EXPORT_C void CLauncherExecutable::ExternalizeL(RWriteStream& aStream) const
+    {
+    aStream.WriteInt32L(iTypeId);
+    aStream << *iLauncher;
+    }
+
+EXPORT_C void CLauncherExecutable::InternalizeL(RReadStream& aStream)
+    {       
+    iTypeId = aStream.ReadInt32L();
+    
+    DeleteObjectZ(iLauncher);
+    iLauncher = HBufC::NewL(aStream, KMaxTInt);
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/source/client/appreginfo.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* appreginfo.cpp
+*
+*/
+
+#include <s32strm.h>
+#include <usif/scr/appreginfo.h>
+
+namespace Usif
+    {
+
+EXPORT_C TAppRegInfo::TAppRegInfo()
+	: iUid(TUid()),
+	iFullName(KNullDesC),
+	iCaption(KNullDesC),
+	iShortCaption(KNullDesC)
+	{}
+
+
+EXPORT_C TAppRegInfo::TAppRegInfo(TUid aAppUid, const TFileName& aAppName, const TAppCaption& aCaption)
+	: iUid(aAppUid),
+	iFullName(aAppName),
+	iCaption(aCaption),
+	iShortCaption(aCaption)
+	{}
+
+
+EXPORT_C TAppRegInfo::TAppRegInfo(TUid aAppUid, const TFileName& aAppName, const TAppCaption& aCaption, const TAppCaption& aShortCaption)
+	: iUid(aAppUid),
+	iFullName(aAppName),
+	iCaption(aCaption),
+	iShortCaption(aShortCaption)
+	{}
+
+
+EXPORT_C void TAppRegInfo::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream<< iUid;
+	aStream<< iFullName;
+	aStream<< iCaption;
+	aStream<< iShortCaption;
+	}
+
+
+
+EXPORT_C void TAppRegInfo::InternalizeL(RReadStream& aStream)
+	{
+	aStream>> iUid;
+	aStream>> iFullName;
+	aStream>> iCaption;
+	aStream>> iShortCaption;
+	}
+
+EXPORT_C TUid TAppRegInfo::Uid() const
+   {
+   return iUid;
+   }
+
+EXPORT_C TFileName TAppRegInfo::FullName() const
+   {
+   return iFullName;
+   }
+
+EXPORT_C TAppCaption TAppRegInfo::Caption() const
+   {
+   return iCaption;
+   }
+
+EXPORT_C TAppCaption TAppRegInfo::ShortCaption() const
+   {
+   return iShortCaption;
+   }
+}
--- a/installationservices/swcomponentregistry/source/client/scrclient.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/source/client/scrclient.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -22,6 +22,7 @@
 #include "scrclient.inl"
 #include "scrcommon.h"
 #include "usiflog.h"
+#include "scr_internal.h"
 #include <e32cmn.h>
 #include <scs/streamingarray.h>
 #include <scs/scscommon.h>
@@ -655,3 +656,100 @@
 	GetObjectArrayL(*this, EGetComponentSupportedLocalesListSize, EGetComponentSupportedLocalesListData, argNum, args, aMatchingSupportedLanguages);
 	}
 
+
+EXPORT_C void RSoftwareComponentRegistry::AddApplicationEntryL(const TComponentId aComponentId, const CApplicationRegistrationData& aApplicationRegistrationData) 
+    {
+    DEBUG_PRINTF2(_L("Sending a request to add an application to be associated with component (%d) from SCR"), aComponentId);
+
+    if(aApplicationRegistrationData.AppUid() == KNullUid || !((aApplicationRegistrationData.AppFile()).CompareF(KNullDesC())) ) 
+        {
+        DEBUG_PRINTF(_L8("AppUid is zero or the App filename is absent. In either of the above cases values cannot be inserted into the db"));
+        User::Leave(KErrArgument);
+        }    
+    RBuf8 buf;
+    buf.CleanupClosePushL();
+    ExternalizeObjectL(&aApplicationRegistrationData, buf);
+      
+    TIpcArgs args(aComponentId, &buf);
+    User::LeaveIfError(CallSessionFunction(EAddApplicationEntry, args));
+    CleanupStack::PopAndDestroy(&buf);
+    }
+
+EXPORT_C void RSoftwareComponentRegistry::DeleteApplicationEntriesL(TComponentId aComponentId) 
+    {
+    TIpcArgs args(aComponentId);
+    DEBUG_PRINTF2(_L("Sending a request to delete the applications associated with component (%d) from SCR"), aComponentId);
+    User::LeaveIfError(CallSessionFunction(EDeleteApplicationEntries, args));
+    }
+
+EXPORT_C void RSoftwareComponentRegistry::DeleteApplicationEntryL(TUid aApplicationUid) 
+    {
+    TIpcArgs args(aApplicationUid.iUid);
+    DEBUG_PRINTF2(_L("Sending a request to delete an application 0x%x from SCR" ), aApplicationUid.iUid);
+    User::LeaveIfError(CallSessionFunction(EDeleteApplicationEntry, args));
+    }
+
+EXPORT_C TComponentId RSoftwareComponentRegistry::GetComponentIdForAppL(TUid aAppUid) const
+    {
+    DEBUG_PRINTF2(_L("Sending a request to retrieve the component id for AppUid(%d)."), aAppUid);
+    TPckg<TUid> appUidPckg(aAppUid);
+    TComponentId compId;
+    TPckg<TComponentId> compIdPckg(compId);
+    TIpcArgs args(&appUidPckg, &compIdPckg);
+    User::LeaveIfError(CallSessionFunction(EGetComponentIdForApp, args));
+    return compId;
+    }
+
+EXPORT_C void RSoftwareComponentRegistry::GetAppUidsForComponentL(TComponentId aCompId, RArray<TUid>& aAppUids) const
+    {
+    DEBUG_PRINTF2(_L("Sending a request to retrieve the list of apps associated with component(%d)."), aCompId);
+    TIpcArgs args(aCompId);
+    TInt argNum = 1; // size descriptor will be added to this slot
+    GetObjectArrayL(*this, EGetAppUidsForComponentSize, EGetAppUidsForComponentData, argNum, args, aAppUids);    
+    }
+
+EXPORT_C void RSoftwareComponentRegistry::GetApplicationLaunchersL(RPointerArray<CLauncherExecutable>& aLaunchers) const
+	{
+    DEBUG_PRINTF(_L("Getting the list of applicaiton launchers."));
+    TIpcArgs args;
+    TInt argNum = 1;
+    GetObjectArrayL(*this, EGetApplicationLaunchersSize, EGetApplicationLaunchersData, argNum, args, aLaunchers);
+	}
+
+/*
+ * RScrInternalClient Implementation.
+ */
+EXPORT_C RScrInternalClient::RScrInternalClient()
+    :   RScsClientBase()
+    {
+    // empty
+    }
+
+EXPORT_C TInt RScrInternalClient::Connect()
+    {
+    DEBUG_PRINTF2(_L("Connecting to %S using the internal client(RScrInternalClient)."), &KSoftwareComponentRegistryName);
+    TVersion version = ScrServerVersion();
+    TUidType scrFullUid = ScrServerImageFullUid();
+    
+    return RScsClientBase::Connect(KSoftwareComponentRegistryName(), version, KScrServerImageName(), scrFullUid);
+    }
+
+EXPORT_C void RScrInternalClient::Close()
+    {
+    DEBUG_PRINTF2(_L("Closing connection to %S using the internal client(RScrInternalClient)."), &KSoftwareComponentRegistryName);
+    RScsClientBase::Close();
+    }
+
+
+EXPORT_C TUid RScrInternalClient::GenerateNewAppUidL() const
+    {
+    DEBUG_PRINTF(_L("Sending a request to generate a new Application Uid for non native applications."));
+
+    TUid newUid = TUid::Null();
+    TPckg<TUid> appUidPckg(newUid);
+    
+    TIpcArgs args(&appUidPckg);
+    User::LeaveIfError(CallSessionFunction(EGenerateNonNativeAppUid, args));
+    return newUid;
+    }
+
--- a/installationservices/swcomponentregistry/source/client/scrclientsubsessions.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/source/client/scrclientsubsessions.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -54,6 +54,7 @@
 	{
 	DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the components view."));
 	
+	Close(); //Close the SubSession before Re-Opening the same.
 	TInt err = CreateSubsession(aCompReg, ESubSessCreateComponentsView, TIpcArgs());
 	if(KErrNone != err)
 		{
@@ -86,6 +87,9 @@
 EXPORT_C TBool RSoftwareComponentRegistryView::NextComponentL(CComponentEntry& aEntry, TLanguage aLocale) const
 	{
 	DEBUG_PRINTF(_L("Sending the request to retrieve the next component from the component view."));
+    //To avoid call to NextComponentL before calling OpenViewL 
+	CheckSubSessionHandleL();
+    
 	TIpcArgs args(aLocale);
 	TInt argNum = 1;
 	return GetObjectL(*this, aEntry, EGetNextComponentSize, EGetNextComponentData, argNum, args);
@@ -94,11 +98,23 @@
 EXPORT_C void RSoftwareComponentRegistryView::NextComponentSetL(TInt aMaxCount, RPointerArray<CComponentEntry>& aComponentList, TLanguage aLocale) const
 	{
 	DEBUG_PRINTF(_L("Sending the request to retrieve the next set of components from the component view."));
+    //To avoid call to NextComponentSetL before calling OpenViewL 
+	CheckSubSessionHandleL();
+    
 	TIpcArgs args(aMaxCount, aLocale);
 	TInt argNum = 2;
 	GetObjectArrayL(*this, EGetNextComponentSetSize, EGetNextComponentSetData, argNum, args, aComponentList);
 	}
 
+void RSoftwareComponentRegistryView::CheckSubSessionHandleL() const
+    {
+    if(KNullHandle == SubSessionHandle())
+        {
+        DEBUG_PRINTF(_L("An invalid handle has been passed."));
+        User::Leave(KErrBadHandle);
+        }
+    }
+
 //
 // RSoftwareComponentRegistryFilesList
 //
@@ -121,7 +137,8 @@
 EXPORT_C void RSoftwareComponentRegistryFilesList::OpenListL(const RSoftwareComponentRegistry& aCompReg, TComponentId aComponentId)
 	{
 	DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the file list."));
-		
+	
+	Close(); //Close the SubSession before Re-Opening the same.
 	TInt err = CreateSubsession(aCompReg, ESubSessCreateFileList, TIpcArgs());
 	if(KErrNone != err)
 		{
@@ -136,6 +153,9 @@
 
 EXPORT_C HBufC* RSoftwareComponentRegistryFilesList::NextFileL() const
 	{
+    //To avoid call to NextFileL before calling OpenListL 
+    CheckSubSessionHandleL();
+    
 	TIpcArgs args(TIpcArgs::ENothing);
 	TInt argNum = 0;
 	return GetObjectL<HBufC>(*this, EGetNextFileSize, EGetNextFileData, argNum, args);
@@ -144,6 +164,9 @@
 EXPORT_C void RSoftwareComponentRegistryFilesList::NextFileSetL(TInt aMaxCount, RPointerArray<HBufC>& aFileList) const
 	{
 	DEBUG_PRINTF(_L("Sending the request to retrieve the next set of components from the component view."));
+    //To avoid call to NextFileSetL before calling OpenListL 
+	CheckSubSessionHandleL();
+    
 	TIpcArgs args(aMaxCount);
 	TInt argNum = 1;
 	GetObjectArrayL(*this, EGetNextFileSetSize, EGetNextFileSetData, argNum, args, aFileList);
@@ -153,3 +176,488 @@
 	{
 	RScsClientSubsessionBase::Close();
 	}
+
+void RSoftwareComponentRegistryFilesList::CheckSubSessionHandleL() const
+    {
+    if(KNullHandle == SubSessionHandle())
+        {
+        DEBUG_PRINTF(_L("An invalid handle has been passed."));
+        User::Leave(KErrBadHandle);
+        }
+    }
+
+//
+// RApplicationInfoView
+//
+
+TInt RApplicationInfoView::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const
+    {
+    return CallSubsessionFunction(aFunction, aArgs);
+    }
+
+EXPORT_C RApplicationInfoView::RApplicationInfoView()
+/**
+    This constructor provides a single point of definition from
+    which the superclass constructor is called.
+ */
+    : RScsClientSubsessionBase()
+    {
+    }
+
+EXPORT_C void RApplicationInfoView::Close()
+    {
+    RScsClientSubsessionBase::Close();
+    }
+
+EXPORT_C void RApplicationInfoView::OpenViewL(const RSoftwareComponentRegistry& aCompReg, CAppInfoFilter* aAppInfoFilter,TLanguage aLocale)
+    {
+
+    DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the AppInfo view."));
+    
+    Close(); //Close the SubSession before Re-Opening the same.
+    TInt err = CreateSubsession(aCompReg, ESubSessCreateAppInfoView, TIpcArgs());
+    if(KErrNone != err)
+        {
+        DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the appinfo view (Error:%d)"), err);
+        User::Leave(err);
+        }
+    
+    RBuf8 buf;
+    buf.CleanupClosePushL();
+    ExternalizeObjectL(aAppInfoFilter, buf);
+    
+    DEBUG_PRINTF(_L("Sending the request to create a component view on the server side."));
+    TIpcArgs args(&buf, aLocale);
+    User::LeaveIfError(CallSubsessionFunction(EOpenAppInfoView, args));
+    CleanupStack::PopAndDestroy(&buf);
+    }
+
+
+EXPORT_C void  RApplicationInfoView::GetNextAppInfoL(TInt aNoOfEntries, RPointerArray<TAppRegInfo>& aAppInfoList) const
+    {
+    if(0 >= aNoOfEntries)
+         {
+         DEBUG_PRINTF(_L("No of Required AppInfo entries passed should be greater than 0"));
+         User::Leave(KErrArgument);
+         }
+
+    //To avoid call to GetNextAppInfoL before calling OpenAppInfoViewL 
+    if(KNullHandle == SubSessionHandle())
+        {
+        DEBUG_PRINTF(_L("An invalid handle has been passed."));
+        User::Leave(KErrBadHandle);
+        }
+    
+    TAppRegInfo* appInfo = NULL;         
+    TBool isAppInfoPresent = EFalse;
+    for(TInt i=0; i < aNoOfEntries ; ++i)
+       {
+       appInfo = new(ELeave) TAppRegInfo();
+       DEBUG_PRINTF(_L("Sending the request to retrieve the next Application Info from the AppInfo view."));
+       TIpcArgs args(TIpcArgs::ENothing);
+       TInt argNum = 1;
+            
+       TRAPD(err,isAppInfoPresent = GetObjectL(*this, *appInfo, EGetNextAppInfoSize, EGetNextAppInfoData, argNum, args));
+       if(KErrNone != err)
+           {
+           delete appInfo;
+           User::Leave(err);
+           }
+                        
+       if(!isAppInfoPresent)
+         {
+         DEBUG_PRINTF(_L8("Reached the end of the view."));     
+         delete appInfo;
+         break;
+         }
+       else
+         {
+         DEBUG_PRINTF2(_L("The Uid of the App received from the SCR server is 0x%x "), appInfo->Uid());
+         DEBUG_PRINTF2(_L("The App filename of the App received from the SCR server is %s "), appInfo->FullName().PtrZ());
+         DEBUG_PRINTF2(_L("The Short caption of the received from the SCR server App is %s "), appInfo->ShortCaption().PtrZ());
+         DEBUG_PRINTF2(_L("The Caption of the App received from the SCR server is %s "), appInfo->Caption().PtrZ());
+         aAppInfoList.AppendL(appInfo);
+         }            
+       }
+    }
+
+//
+// RRegistrationInfoForApplication
+
+TInt RRegistrationInfoForApplication::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const
+	{
+	return CallSubsessionFunction(aFunction, aArgs);
+	}
+
+EXPORT_C RRegistrationInfoForApplication::RRegistrationInfoForApplication()	: RScsClientSubsessionBase()
+	{
+	// empty
+	}
+
+EXPORT_C void RRegistrationInfoForApplication::OpenL(const RSoftwareComponentRegistry& aCompReg,const TUid aAppUid,TLanguage aLocale)
+	{
+	DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the App list based on AppId."));
+	
+	Close(); //Close the SubSession before Re-Opening the same.
+	TInt err = CreateSubsession(aCompReg, ESubSessCreateRegInfoForApp, TIpcArgs());
+	if(KErrNone != err)
+		{
+		DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), err);
+		User::Leave(err);
+		}
+	
+	DEBUG_PRINTF(_L("Sending a request to set the AppId on the server side."));
+	TIpcArgs args(aAppUid.iUid,aLocale);
+	User::LeaveIfError(CallSubsessionFunction(ESetAppUid, args));
+	}
+
+EXPORT_C  void RRegistrationInfoForApplication::GetAppServicesUidsL(RArray<TUid>& aServiceUids) const
+	{
+	DEBUG_PRINTF(_L("Getting the Service UID array for the subsession appUid"));
+    //To avoid call to GetAppServicesUidsL before calling OpenL 
+	CheckSubSessionHandleL();
+    
+	TIpcArgs args(TIpcArgs::ENothing);
+	TInt argNum = 1;
+	
+	GetObjectArrayL(*this, EGetServiceUidSize,EGetServiceUidList,argNum, args, aServiceUids);	
+	}
+
+EXPORT_C  TLanguage RRegistrationInfoForApplication::ApplicationLanguageL() const
+	{
+	DEBUG_PRINTF(_L("Getting the Locale of the specified App that best fits the current device language"));
+    //To avoid call to GetApplicationLanguageL before calling OpenL 
+	CheckSubSessionHandleL();
+    
+	TLanguage aLanguage = ELangNone;
+	TPckg<TLanguage> applicationLanguage(aLanguage);
+	    
+	TIpcArgs args(&applicationLanguage);
+	
+	User::LeaveIfError(CallSubsessionFunction(EGetApplicationLanguage, args));
+	return(aLanguage);
+	}
+
+EXPORT_C  TInt RRegistrationInfoForApplication::DefaultScreenNumberL() const
+	{
+	DEBUG_PRINTF(_L("Getting the Default screen number from the App reg info"));
+    //To avoid call to GetDefaultScreenNumberL before calling OpenL 
+	CheckSubSessionHandleL();
+    
+	TInt aDefaultScreenNumber = 0;
+	TPckg<TInt> uidDes(aDefaultScreenNumber);
+	
+	TIpcArgs args(&uidDes);
+	User::LeaveIfError(CallSubsessionFunction(EGetDefaultScreenNumber, args));	
+	return(aDefaultScreenNumber);
+	}
+
+EXPORT_C  TInt RRegistrationInfoForApplication::NumberOfOwnDefinedIconsL() const
+	{
+	DEBUG_PRINTF(_L("Getting the number of defined icons for the associated application and locale "));
+    //To avoid call to GetNumberOfOwnDefinedIconsL before calling OpenL 
+	CheckSubSessionHandleL();
+    
+	TInt aCount = 0;
+	TPckg<TInt> uidDes(aCount);
+	TIpcArgs args(&uidDes);
+	
+	User::LeaveIfError(CallSubsessionFunction(EGetNumberOfOwnDefinedIcons, args));
+	return(aCount);
+	}
+
+EXPORT_C void RRegistrationInfoForApplication::GetAppViewsL(RPointerArray<Usif::CAppViewData>& aAppViewInfoArray) const
+    {
+        DEBUG_PRINTF(_L("Getting the view details associated with subsession appUid"));
+        //To avoid call to GetAppViewsL before calling OpenL 
+        CheckSubSessionHandleL();
+        
+        TIpcArgs args(TIpcArgs::ENothing);
+	 	TInt argNum = 1;
+        GetObjectArrayL(*this, EGetViewSize, EGetViewData, argNum, args, aAppViewInfoArray);
+    }
+
+EXPORT_C void RRegistrationInfoForApplication::Close()
+    {
+    RScsClientSubsessionBase::Close();
+    }
+
+EXPORT_C void RRegistrationInfoForApplication::GetAppOwnedFilesL(RPointerArray<HBufC>& aAppOwnedFiles) const
+    {
+     DEBUG_PRINTF(_L("Sending the request to retrieve the list of files owned by appUid associated with subsession "));
+     //To avoid call to GetAppOwnedFilesL before calling OpenL 
+     CheckSubSessionHandleL();
+     
+     TIpcArgs args(TIpcArgs::ENothing);
+     TInt argNum = 1;
+     GetObjectArrayL(*this, EGetAppOwnedFilesSize, EGetAppOwnedFilesData, argNum, args,aAppOwnedFiles);
+    }
+
+EXPORT_C void RRegistrationInfoForApplication::GetAppCharacteristicsL(TApplicationCharacteristics &aApplicationCharacteristics) const
+    {
+    DEBUG_PRINTF(_L("Sending the request to retrieve application characteristics."));
+    //To avoid call to GetAppCharacteristicsL before calling OpenL 
+    CheckSubSessionHandleL();
+    
+    TPckg<Usif::TApplicationCharacteristics> pckg(aApplicationCharacteristics);
+    TIpcArgs args(&pckg);
+    User::LeaveIfError(CallSubsessionFunction(EGetAppCharacteristics, args));
+    }
+	
+EXPORT_C void RRegistrationInfoForApplication::GetAppIconL(HBufC*& aFullFileName) const
+    {
+    DEBUG_PRINTF(_L("Sending the request to get application icon file name ."));    
+    //To avoid call to GetAppIconL before calling OpenL 
+    CheckSubSessionHandleL();
+    
+    TFileName fileName;
+    TPckg<TFileName> filenamePckg(fileName);
+    TIpcArgs args(&filenamePckg);
+
+    User::LeaveIfError(CallSubsessionFunction(EGetAppIconForFileName, args));
+    
+    aFullFileName = fileName.AllocL();
+
+    }
+	
+EXPORT_C void RRegistrationInfoForApplication::GetAppViewIconL(TUid aViewUid,HBufC*& aFullFileName) const
+    {
+    DEBUG_PRINTF(_L("Sending the request to get application view icon file name ."));
+    //To avoid call to GetAppViewIconL before calling OpenL 
+    CheckSubSessionHandleL();
+    
+    TFileName fileName;
+    TPckg<TFileName> filenamePckg(fileName);
+    TIpcArgs args(aViewUid.iUid,&filenamePckg);
+    
+    User::LeaveIfError(CallSubsessionFunction(EGetAppViewIconFileName, args));
+ 
+    aFullFileName = fileName.AllocL();
+    }
+	
+void RRegistrationInfoForApplication::CheckSubSessionHandleL() const
+    {
+    if(KNullHandle == SubSessionHandle())
+        {
+        DEBUG_PRINTF(_L("An invalid handle has been passed."));
+        User::Leave(KErrBadHandle);
+        }
+    }
+
+//
+// RApplicationRegistrationInfo
+
+TInt RApplicationRegistrationInfo::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const
+    {
+    return CallSubsessionFunction(aFunction, aArgs);
+    }
+
+EXPORT_C RApplicationRegistrationInfo::RApplicationRegistrationInfo() : RScsClientSubsessionBase()
+    {
+    // empty
+    }
+
+EXPORT_C void RApplicationRegistrationInfo::OpenL(const RSoftwareComponentRegistry& aCompReg)
+    {
+    DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the App list."));
+    
+    Close(); //Close the SubSession before Re-Opening the same.
+    TInt err = CreateSubsession(aCompReg, ESubSessCreateAppRegInfo, TIpcArgs());
+    if(KErrNone != err)
+        {
+        DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), err);
+        User::Leave(err);
+        }    
+    }
+
+EXPORT_C  TUid RApplicationRegistrationInfo::GetAppForDataTypeAndServiceL(const TDesC &aName,const TUid aServiceUid) const
+	{
+	DEBUG_PRINTF(_L("Get the AppUid corresponding to the mentioned Service and Type with the highest priority"));
+    //To avoid call to GetAppForDataTypeAndServiceL before calling OpenL 
+	CheckSubSessionHandleL();
+    
+	TUid appUid;
+	
+	TPckg<TUid> uidDes(appUid);	    
+	TIpcArgs args(&aName, aServiceUid.iUid,&uidDes );
+	
+	User::LeaveIfError(CallSubsessionFunction(EGetAppForDataTypeAndService, args));
+	return(appUid);
+	}
+
+EXPORT_C  TUid RApplicationRegistrationInfo::GetAppForDataTypeL(const TDesC &aName) const
+	{
+	DEBUG_PRINTF(_L("Getting the AppUid corresponding to the mentioned Type with the highest priority"));
+    //To avoid call to GetAppForDataTypeL before calling OpenL 
+	CheckSubSessionHandleL();
+    
+	TUid appUid;
+	
+    TPckg<TUid> uidDes(appUid);  
+	TIpcArgs args(&aName, &uidDes);
+	 
+	User::LeaveIfError(CallSubsessionFunction(EGetAppForDataType, args));
+	return(appUid);
+	
+	}
+
+EXPORT_C void RApplicationRegistrationInfo::GetServiceInfoL(CAppServiceInfoFilter* aAppServiceInfoFilter, RPointerArray<Usif::CServiceInfo>& aAppServiceInfoArray, TLanguage aLocale) const
+    {
+    DEBUG_PRINTF(_L("Getting the Service Info details associated with the parameters set in the filter."));
+    //To avoid call to GetServiceInfoL before calling OpenL 
+    CheckSubSessionHandleL();
+    
+    RBuf8 buf;
+    buf.CleanupClosePushL();
+    ExternalizeObjectL(aAppServiceInfoFilter, buf);
+        
+    TIpcArgs args(&buf, aLocale);
+    TInt argNum = 2;
+    GetObjectArrayL(*this, EGetAppServiceInfoSize, EGetAppServiceInfoData, argNum, args, aAppServiceInfoArray);
+    CleanupStack::PopAndDestroy(&buf);
+    }
+
+EXPORT_C TBool RApplicationRegistrationInfo::GetAppInfoL(TUid aAppUid, TAppRegInfo& aAppInfo, TLanguage aLocale)
+    {
+    DEBUG_PRINTF2(_L("Getting information details of app 0x%x."), aAppUid.iUid);
+    
+    //To avoid call to GetAppInfoL before calling OpenL 
+    CheckSubSessionHandleL();
+    
+    TPckg<TAppRegInfo> appRegInfoPckg(aAppInfo);
+   
+    TIpcArgs args(aAppUid.iUid, aLocale, &appRegInfoPckg);
+    User::LeaveIfError(CallSubsessionFunction(EGetApplicationInfo, args));
+    if(aAppInfo.Uid().iUid!= NULL)
+        {
+        return ETrue;
+        }
+    else
+        return EFalse;
+    }
+
+
+EXPORT_C void RApplicationRegistrationInfo::Close()
+	{
+	RScsClientSubsessionBase::Close();
+	}
+
+void RApplicationRegistrationInfo::CheckSubSessionHandleL() const
+    {
+    if(KNullHandle == SubSessionHandle())
+        {
+        DEBUG_PRINTF(_L("An invalid handle has been passed."));
+        User::Leave(KErrBadHandle);
+        }
+    }
+
+
+//
+// RApplicationRegistryView
+//
+
+TInt RApplicationRegistryView::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const
+    {
+    return CallSubsessionFunction(aFunction, aArgs);
+    }
+
+EXPORT_C RApplicationRegistryView::RApplicationRegistryView() : RScsClientSubsessionBase()
+    {
+    }
+
+EXPORT_C void RApplicationRegistryView::Close()
+    {
+    RScsClientSubsessionBase::Close();
+    }
+
+EXPORT_C void RApplicationRegistryView::OpenViewL(const RSoftwareComponentRegistry& aCompReg, TLanguage aLocale)
+    {   
+    DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the Application Registration view."));
+
+    Close(); //Close the SubSession before Re-Opening the same.
+    
+    TInt err = CreateSubsession(aCompReg, ESubSessCreateAppRegistryView, TIpcArgs());
+    if(KErrNone != err)
+        {
+        DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the Application Registration view (Error:%d)"), err);
+        User::Leave(err);
+        }                
+    DEBUG_PRINTF(_L("Sending the request to create a component view on the server side."));
+    TIpcArgs args(aLocale);
+    User::LeaveIfError(CallSubsessionFunction(EOpenApplicationRegistrationInfoView, args));        
+    }
+	
+EXPORT_C void RApplicationRegistryView::OpenViewL(const RSoftwareComponentRegistry& aCompReg, const RArray<TUid>& aAppRegAppUids, TLanguage aLocale)
+    {   
+    DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the Application Registration view with specified AppUids."));
+    
+    Close();  //Close the SubSession before Re-Opening the same.
+    
+    TInt err = CreateSubsession(aCompReg, ESubSessCreateAppRegistryView, TIpcArgs());
+    if(KErrNone != err)
+        {
+        DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the Application Registration view with specified AppUids (Error:%d)"), err);
+        User::Leave(err);
+        }                
+    DEBUG_PRINTF(_L("Sending the request to create a component view on the server side."));
+     
+    TInt32 size = aAppRegAppUids.Count();
+    const TInt32 maxBufSize= sizeof(TInt32)+ size*sizeof(TInt32);   // number of entries +  number of entry * size of AppUid stored as TUid
+      
+    // allocate buffer for the array
+    HBufC8* bufForAppUids = HBufC8::NewMaxLC(maxBufSize);
+    TPtr8 ptrBufForAppUids = bufForAppUids->Des();
+    RDesWriteStream instream(ptrBufForAppUids);
+    CleanupClosePushL(instream);
+    instream.WriteInt32L(size);
+    for (TInt i = 0; i < size; ++i)
+        {
+        instream.WriteInt32L(aAppRegAppUids[i].iUid);
+        }
+        
+    instream.CommitL();
+ 
+    TIpcArgs args(aLocale);
+    args.Set(1,&ptrBufForAppUids);
+    User::LeaveIfError(CallSubsessionFunction(EOpenApplicationRegistrationInfoForAppUidsView, args));  
+   
+    CleanupStack::PopAndDestroy(2,bufForAppUids); // bufForAppUid, instream 
+    }
+
+EXPORT_C void RApplicationRegistryView::GetNextApplicationRegistrationInfoL(TInt aNoOfEntries, RPointerArray<CApplicationRegistrationData>& aApplicationRegistration) const
+    {
+    if(0 >= aNoOfEntries)
+      {
+      DEBUG_PRINTF(_L("No of Required View entries passed should be greater than 0"));
+      User::Leave(KErrArgument);
+      }
+   //To avoid call to GetNextApplicationRegistrationInfoL before calling OpenApplicationRegistrationViewL 
+   if(KNullHandle == SubSessionHandle())
+     {
+     DEBUG_PRINTF(_L("An invalid handle has been passed."));
+     User::Leave(KErrBadHandle);
+     }
+    
+    CApplicationRegistrationData* applicationRegistration = NULL;
+    for(TInt i = 0 ; i < aNoOfEntries ; ++i)
+        {
+          applicationRegistration = CApplicationRegistrationData::NewLC();
+          TBool isApplicationRegistrationDataPresent = EFalse;                                    
+          DEBUG_PRINTF(_L("Sending the request to retrieve the next Application Info from the AppInfo view."));
+          TIpcArgs args;
+          TInt argNum = 1;
+          isApplicationRegistrationDataPresent = GetObjectL(*this, *applicationRegistration, EGetApplicationRegistrationSize, EGetApplicationRegistrationData, argNum, args);
+          if(!isApplicationRegistrationDataPresent)
+            {
+            DEBUG_PRINTF(_L8("Reached the end of the view."));  
+            CleanupStack::PopAndDestroy(applicationRegistration);
+            break;
+            }
+          else
+            {
+            DEBUG_PRINTF(_L("received the application registration data from the SCR Server "));                                       
+            aApplicationRegistration.AppendL(applicationRegistration);
+            CleanupStack::Pop(applicationRegistration);
+            }            
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/source/server/scrrepository.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* CScrRepository implementation.
+*
+*/
+
+#include "scrrepository.h"
+using namespace Usif;
+
+//Initialize static variables
+bool CScrRepository::iInstanceFlag = EFalse;
+CScrRepository* CScrRepository::iInstance = NULL;
+CRepository* CScrRepository::iRepository = NULL;
+
+CScrRepository* CScrRepository :: GetRepositoryInstanceL()
+    {   
+    if(!iInstanceFlag)
+        {        
+        iInstance = new (ELeave)CScrRepository;
+        iInstance->ConstructL();
+        iInstanceFlag = ETrue;
+        }
+    return iInstance;
+    }
+
+CScrRepository :: ~CScrRepository()
+    {
+    delete iRepository;    
+    }
+
+
+void CScrRepository :: DeleteRepositoryInstance()
+    {
+    if(iInstanceFlag)
+        {
+        delete iInstance;
+        iInstanceFlag = EFalse;
+        }
+        
+    }
+void CScrRepository :: ConstructL()
+    {
+    iRepository = CRepository::NewL(KUidScrServerRepository);
+    }
+
+
+
+TInt CScrRepository :: AppUidRangeCountL()
+    {  
+    //Read the range count value from the cenrep file.
+    TInt rangeCount(0);
+    User::LeaveIfError(iRepository->Get(KScrAppUidRangeCount, rangeCount));
+    
+    //If the range count is not set.
+    if(rangeCount <= 0)
+        {   
+        User::Leave(KErrArgument);
+        }
+    
+    return rangeCount;    
+    }
+
+
+void CScrRepository :: GetAppUidRangeL(TInt aNum, TUid& aRangeBegin, TUid& aRangeEnd)
+    {
+    TInt rangeBegin(0);
+    TInt rangeEnd(0);
+    User::LeaveIfError(iRepository->Get(KScrAppUidRanges+((2*aNum)-1), rangeBegin));
+    User::LeaveIfError(iRepository->Get(KScrAppUidRanges+(2*aNum), rangeEnd));
+    
+    aRangeBegin = TUid::Uid(rangeBegin);
+    aRangeEnd = TUid::Uid(rangeEnd);
+    }
+
+
--- a/installationservices/swcomponentregistry/source/server/scrrequestimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/source/server/scrrequestimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,6 +31,7 @@
 #include "scrsubsession.h"
 #include "usiflog.h"
 #include "usiferror.h"
+#include "scrrepository.h"
 #include <s32mem.h>
 #include <bautils.h>
 #include <scs/streamingarray.h>
@@ -44,8 +45,16 @@
 
 _LIT(KComponentIdColumnName, "ComponentId"); 
 _LIT(KCompFileIdColumnName, "CmpFileId"); 
+_LIT(KAppIdColumnName, "AppUid");
 _LIT(KComponentPropertiesTable, "ComponentProperties");
 _LIT(KFilePropertiesTable, "FileProperties");
+_LIT(KFileOwnershipInfoTable, "FileOwnershipInfo");
+_LIT(KServiceInfoTable, "ServiceInfo");
+_LIT(KLocalizableAppInfoTable, "LocalizableAppInfo");
+_LIT(KViewDataTable, "ViewData");
+_LIT(KAppRegistrationInfoTable, "AppRegistrationInfo");
+_LIT(KAppPropertiesTable, "AppProperties");
+
 
 /** Maximum number of log records could be recorded by SCR. */
 // It is estimated that a thousand log entries create 40K-100K log file.
@@ -102,6 +111,9 @@
 	iDeletedMimeTypes.ResetAndDestroy();
 	iLogEntries.ResetAndDestroy();
 	iMatchingSupportedLanguageList.Close();
+	
+    //Delete the instance of CScrRepository, if present.
+    CScrRepository::DeleteRepositoryInstance();
 	}
 
 CScrRequestImpl* CScrRequestImpl::CScrRequestImpl::NewL(RFs& aFs, RFile& aDatabaseFile, RFile& aJournalFile)
@@ -329,7 +341,7 @@
 		{
 		CScrLogEntry *logRecord = CScrLogEntry::NewLC(componentInfoArray[componentNameIndexForLog]->NameL(), *uniqueSwTypeName, *globalId, KNullDesC, compOpType);
 		logRecord->iComponentId = newComponentId;
-		iLogEntries.Append(logRecord);
+		iLogEntries.AppendL(logRecord);
 		CleanupStack::Pop(logRecord); // Ownershipd is transferred
 		}
 	CleanupStack::PopAndDestroy(4, &componentInfoReader); // componentInfoReader, componentInfoArray, uniqueSwTypeName, globalId
@@ -1143,7 +1155,9 @@
 	{
 	DEBUG_PRINTF(_L8("Deleting a component."));
 	TComponentId componentId = GetComponentIdFromMsgL(aMessage);
-	DEBUG_PRINTF2(_L8("Deleting component(%d)."), componentId);
+	
+	// first delete the applications associated with this id if there are any
+	DeleteAllAppsWithinPackageInternalL(componentId);
 	
 	// Create the log record before deleting the component
 	_LIT(KSelectComponentInfo, "SELECT SoftwareTypeName,GlobalId,Version FROM Components WHERE ComponentId=?;");
@@ -1966,62 +1980,60 @@
 	aMessage.WriteL(1, uidDes);
 	}
 
-TBool CScrRequestImpl::GetIntSoftwareTypeDataForComponentLC(TComponentId aComponentId, const TDesC& aColumnName, TInt& aValue) const
+TBool CScrRequestImpl::GetSifPluginUidIInternalL(TInt aSoftwareTypeId, TInt& aValue) const
 	{
-	_LIT(KSelectComponents, "SELECT SoftwareTypeId FROM Components WHERE ComponentId=?;");
-	TBool found = EFalse;
-	CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectComponents);
-	stmt->BindIntL(1, aComponentId);
-	if(!stmt->ProcessNextRowL())
+	TBool found = EFalse;	
+		
+	_LIT(KSelectSifPluginUid, "SELECT SifPluginUid FROM SoftwareTypes WHERE SoftwareTypeId=?;");
+	CStatement* stmt = iDbHandle->PrepareStatementLC(KSelectSifPluginUid);
+	stmt->BindIntL(1, aSoftwareTypeId);
+	
+	if(stmt->ProcessNextRowL())
 		{
-		DEBUG_PRINTF2(_L("Component Id (%d) doesn't exist in the SCR database!"), aComponentId);
-		User::LeaveIfError(KErrNotFound);
-		}
-	TInt swTypeId = stmt->IntColumnL(0);
-	CleanupStack::PopAndDestroy(stmt);
-	
-	_LIT(KSelectSoftwareTypes, "SELECT %S FROM SoftwareTypes WHERE SoftwareTypeId=?;");
-	HBufC *statementStr = FormatStatementLC(KSelectSoftwareTypes(), aColumnName.Length(), &aColumnName);
-	CStatement *stmtSwType = iDbHandle->PrepareStatementLC(*statementStr);
-	stmtSwType->BindIntL(1, swTypeId);
-	
-	if(stmtSwType->ProcessNextRowL())
-		{
-		aValue = stmtSwType->IntColumnL(0);
+		aValue = stmt->IntColumnL(0);
 		found = ETrue;
 		}
-	CleanupStack::PopAndDestroy(2, statementStr); // statementStr, stmtSwType
+	CleanupStack::PopAndDestroy(stmt);
 	return found;
 	}
 
-TBool CScrRequestImpl::GetInstallerSidForComponentL(TComponentId aComponentId, TSecureId& aSid) const	
-	{
-	_LIT(KInstallerSecureId, "InstallerSecureId");
-	TInt secureIdInt (0);
-	TBool found = GetIntSoftwareTypeDataForComponentLC(aComponentId, KInstallerSecureId, secureIdInt);	
-	aSid.iId = secureIdInt;
-	return found;
-	}
-
-TBool CScrRequestImpl::GetExecutionEnvSidForComponentL(TComponentId aComponentId, TSecureId& aSid) const
-	{
-	_LIT(KExecutionLayerSecureId, "ExecutionLayerSecureId");
-	TInt secureIdInt(0);
-	TBool found = GetIntSoftwareTypeDataForComponentLC(aComponentId, KExecutionLayerSecureId, secureIdInt);	
-	aSid.iId = secureIdInt;
-	return found;	
-	}
+TBool CScrRequestImpl::GetSidsForSoftwareTypeIdL(TInt aSoftwareTypeId, RArray<TSecureId>& aSids) const
+    {
+    TBool found = EFalse;
+       
+    _LIT(KSelectSecureIds, "SELECT SecureId FROM CustomAccessList WHERE SoftwareTypeId=?;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectSecureIds);
+    stmt->BindIntL(1, aSoftwareTypeId);
+    
+    aSids.Reset();
+    while(stmt->ProcessNextRowL())
+        {
+        aSids.AppendL(stmt->IntColumnL(0));
+        found = ETrue;
+        }
+    
+    CleanupStack::PopAndDestroy(stmt);
+    return found;
+    }
+
+TBool CScrRequestImpl::GetInstallerOrExecutionEnvSidsForComponentL(TComponentId aComponentId, RArray<TSecureId>& aSids) const
+    {
+    // Get the software type id for the component
+    TInt swTypeId = GetSoftwareTypeForComponentL(aComponentId);
+    // Retrieve the Sids for the type id
+    return GetSidsForSoftwareTypeIdL(swTypeId, aSids);
+    }
 
 TBool CScrRequestImpl::IsInstallerOrExecutionEnvSidL(TSecureId& aSid) const
 	{
-	_LIT(KSelectStatement, "SELECT InstallerSecureId FROM SoftwareTypes WHERE InstallerSecureId=? OR ExecutionLayerSecureId=?;");
+	_LIT(KSelectStatement, "SELECT SecureId FROM CustomAccessList WHERE SecureId=? AND AccessMode=?;");
 	CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectStatement);
 	stmt->BindIntL(1, aSid);
-	stmt->BindIntL(2, aSid);	
+	stmt->BindIntL(2, (TInt)ETransactionalSid);	
 	TBool res = ETrue;
 	if(!stmt->ProcessNextRowL())
 		{
-		DEBUG_PRINTF2(_L("%d is not an installer SID"), TUint32(aSid));
+		DEBUG_PRINTF2(_L("%d is not an installer or execution environment SID"), TUint32(aSid));
 		res = EFalse;
 		}
 	CleanupStack::PopAndDestroy(stmt);
@@ -2032,9 +2044,12 @@
 	{
 	TComponentId componentId = GetComponentIdFromMsgL(aMessage);
 	DEBUG_PRINTF2(_L8("Returning the plugin of component(%d)."), componentId);
-	_LIT(KSifPluginUid, "SifPluginUid");
+	
+	// Get the software type id for the component
+	TInt swTypeId = GetSoftwareTypeForComponentL(componentId);
+	    
 	TInt uid (0);
-	TBool found = GetIntSoftwareTypeDataForComponentLC(componentId, KSifPluginUid, uid);
+	TBool found = GetSifPluginUidIInternalL(swTypeId, uid);
 	__ASSERT_ALWAYS(found, User::Leave(KErrNotFound));
 	
 	TPckg<TUint32> uidDes(uid);
@@ -2042,27 +2057,277 @@
 	}
 
 // This function returns whether the SID looked up has been found in the software types table.
-TBool CScrRequestImpl::GetSidsForSoftwareTypeL(const HBufC* aSoftwareTypeName, TSecureId& aInstallerSid, TSecureId& aExecutableEnvSid) const
+TBool CScrRequestImpl::GetSidsForSoftwareTypeL(const HBufC* aSoftwareTypeName, RArray<TSecureId>& aSids) const
 	{
 	DEBUG_PRINTF2(_L("Returning SIDs for software type(%S)."), aSoftwareTypeName);
-	TBool found = EFalse;
-	TUint32 swTypeId = HashCaseSensitiveL(*aSoftwareTypeName);
-	
-	_LIT(KSelectStatement, "SELECT ExecutionLayerSecureId, InstallerSecureId FROM SoftwareTypes WHERE SoftwareTypeId =?;");
-	CStatement* stmt = iDbHandle->PrepareStatementLC(KSelectStatement);
-	stmt->BindIntL(1, swTypeId);
-	
-	if(stmt->ProcessNextRowL())
-		{
-		aExecutableEnvSid = stmt->IntColumnL(0);
-		aInstallerSid = stmt->IntColumnL(1);
-		found = ETrue;
-		}
-	
-	CleanupStack::PopAndDestroy(stmt);
-	return found;
+	
+	TUint32 swTypeId = HashCaseSensitiveL(*aSoftwareTypeName);	
+	return GetSidsForSoftwareTypeIdL(swTypeId, aSids);
 	}
 
+TBool CScrRequestImpl::CheckIfAppUidExistsL(const TUid aAppUid) const
+    {
+    DEBUG_PRINTF(_L8("Check if the given application UID exists."));
+    TUid retrievedAppUid;
+    _LIT(KSelectColumn, "AppUid");
+    _LIT(KTable, "AppRegistrationInfo");
+    _LIT(KConditionColumn, "AppUid");
+    if(GetIntforConditionL(KSelectColumn, KTable, KConditionColumn, aAppUid.iUid, (TInt&)retrievedAppUid.iUid))
+        {    
+       	return ETrue;
+    	}
+    return EFalse ; 
+    }
+	
+void CScrRequestImpl::SetLocaleForRegInfoForApplicationSubsessionContextL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext)
+    {
+    TLanguage appLocale= (TLanguage)aMessage.Int1();
+    TUid appUid;
+    appUid.iUid=aMessage.Int0();
+    if(!GetNearestAppLanguageL(appLocale,appUid, aSubsessionContext->iAppLanguageForCurrentLocale))
+    	{
+      	if (KUnspecifiedLocale!=appLocale)
+      		{
+        	DEBUG_PRINTF2(_L8("Given Locale %d is not supported by application"),appLocale);
+        	User::Leave(KErrNotFound);
+      		}
+    	}
+    }
+	
+void CScrRequestImpl::GetServiceUidSizeL(const RMessage2& aMessage,TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {    
+    TUid uid;
+    _LIT(KSelectServiceUidWithAppUid, "SELECT Uid FROM ServiceInfo WHERE AppUid =?;");
+    CStatement* stmt = iDbHandle->PrepareStatementLC(KSelectServiceUidWithAppUid);
+    stmt->BindIntL(1, aAppUid.iUid);
+    aSubsessionContext->iServiceUidList.Close();
+    while(stmt->ProcessNextRowL())
+    {    
+        uid.iUid = stmt->IntColumnL(0);       
+        aSubsessionContext->iServiceUidList.Append(uid);       
+    }
+    if(aSubsessionContext->iServiceUidList.Count() == 0)
+    {
+        DEBUG_PRINTF2(_L8("No service ids correspond to the given AppUid,%d"),aAppUid);
+    }    
+    CleanupStack::PopAndDestroy(stmt);
+    WriteArraySizeL(aMessage, 1, aSubsessionContext->iServiceUidList);
+    }
+
+void CScrRequestImpl::GetServiceUidDataL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+{
+    WriteArrayDataL(aMessage, 0, aSubsessionContext->iServiceUidList);
+    aSubsessionContext->iServiceUidList.Close();
+}
+
+void CScrRequestImpl::GetApplicationLanguageL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {
+    DEBUG_PRINTF(_L8("Returning the Application Language ."));
+    TPckg<TLanguage> applicationLanguage (aSubsessionContext->iAppLanguageForCurrentLocale);
+    aMessage.WriteL(0, applicationLanguage);
+    }
+
+void CScrRequestImpl::GetDefaultScreenNumberL(const RMessage2& aMessage,TUid aAppUid) const
+    {
+    DEBUG_PRINTF(_L8("Returning the default screen number."));             
+    
+    TInt screenNumber=0;
+    _LIT(KSelectColumn, "DefaultScreenNumber");
+    _LIT(KTable, "AppRegistrationInfo");
+    _LIT(KConditionColumn, "AppUid");
+        
+    GetIntforConditionL(KSelectColumn(),KTable(),KConditionColumn(),aAppUid.iUid, screenNumber);
+        {
+        TPckg<TInt> screenNumberDes(screenNumber);
+        aMessage.WriteL(0, screenNumberDes);
+        }
+    }
+
+void CScrRequestImpl::GetNumberOfOwnDefinedIconsL(const RMessage2& aMessage,TUid aAppUid , CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {
+    DEBUG_PRINTF(_L8("Returning the no of own defined Icons count "));
+    TInt numberOfIcons;
+    _LIT(KSelectNoOfIcones, "SELECT NumberOfIcons FROM CaptionAndIconInfo WHERE  CaptionAndIconId IN (SELECT CaptionAndIconId FROM LocalizableAppInfo WHERE AppUid= ? AND Locale = ?);");
+    CStatement* stmt = iDbHandle->PrepareStatementLC(KSelectNoOfIcones);
+    stmt->BindIntL(1, aAppUid.iUid);
+    stmt->BindIntL(2, aSubsessionContext->iAppLanguageForCurrentLocale);
+    if(stmt->ProcessNextRowL())
+       {
+       numberOfIcons = stmt->IntColumnL(0);
+       TPckg<TInt> numberOfIconsDes(numberOfIcons);
+       aMessage.WriteL(0, numberOfIconsDes);
+       }
+    CleanupStack::PopAndDestroy(stmt);
+    }
+
+void CScrRequestImpl::GetAppForDataTypeAndServiceL(const RMessage2& aMessage) const
+    {
+    DEBUG_PRINTF(_L8("Returns the App Uid for a given Service Uid that handles the specified datatype with the highest priority."));
+    HBufC *dataType = ReadDescLC(aMessage,0);
+    TUid inputServiceUid = TUid::Uid(aMessage.Int1());
+
+    _LIT(KSelectAppUidsForGivenUidAndDataType, "SELECT AppUid FROM (ServiceInfo JOIN DataType ON ServiceInfo.ServiceId = DataType.ServiceId) WHERE Uid=? AND Type=? ORDER BY Priority DESC;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAppUidsForGivenUidAndDataType);
+    stmt->BindIntL(1, inputServiceUid.iUid);
+    stmt->BindStrL(2, *dataType);
+
+    if(stmt->ProcessNextRowL())
+        {
+        TPckg<TInt> appUidDes(stmt->IntColumnL(0));
+        aMessage.WriteL(2, appUidDes); 
+        CleanupStack::PopAndDestroy(2, dataType); //stmt, dataType
+        }
+    else
+        {
+        DEBUG_PRINTF(_L("No AppUid for given datatype and Service Uid"));
+        CleanupStack::PopAndDestroy(2, dataType); //stmt, dataType        
+        User::Leave(KErrNotFound);
+        }
+    }
+
+void CScrRequestImpl::GetAppForDataTypeL(const RMessage2& aMessage) const
+    {
+    DEBUG_PRINTF(_L8("Returning the app UID."));
+    
+    TUid appUid = TUid::Null();
+    HBufC *type = ReadDescLC(aMessage, 0);
+    TInt serviceId = GetServiceIdForDataTypeL(*type);
+    
+    if(serviceId == KErrNotFound)
+        {
+        DEBUG_PRINTF(_L("No Service Id for the given datatype"));
+        User::Leave(KErrNotFound);
+        }
+               
+    CleanupStack::PopAndDestroy(type);
+    if(!GetAppUidForServiceIdL(serviceId, appUid))
+        {
+        DEBUG_PRINTF(_L("No AppUid for given datatype"));
+        }
+    TPckg<TUid> appUidDes(appUid);
+    aMessage.WriteL(1, appUidDes);       
+    }
+
+TInt CScrRequestImpl::GetServiceIdForDataTypeL(const TDesC& aType) const
+    {
+    TInt serviceId = 0;
+    _LIT(KSelectAppForDataTypeAndService, "SELECT ServiceId FROM DataType WHERE Type=? ORDER BY Priority DESC;");    
+    CStatement* stmt = iDbHandle->PrepareStatementLC(KSelectAppForDataTypeAndService);
+    stmt->BindStrL(1, aType);
+                
+    if(!stmt->ProcessNextRowL())
+        {
+        DEBUG_PRINTF(_L("No Service for given datatype"));
+        }
+    else
+        {
+        serviceId = stmt->IntColumnL(0);
+        }
+    CleanupStack::PopAndDestroy(stmt);
+    return serviceId;
+    }
+    
+TBool CScrRequestImpl::GetAppUidForServiceIdL(const TInt ServiceId, TUid& aAppUid) const
+    {
+    _LIT(KSelectColumn, "AppUid");
+    _LIT(KTable, "ServiceInfo");
+    _LIT(KConditionColumn, "ServiceId");
+    if(GetIntforConditionL(KSelectColumn(),KTable(),KConditionColumn(),ServiceId, (TInt&)aAppUid.iUid))
+        {
+        return ETrue;
+        }
+    else
+        {
+        DEBUG_PRINTF(_L("No AppUid for given datatype"));
+        return EFalse;
+        }
+    }
+
+TBool CScrRequestImpl::GetNearestAppLanguageL(TLanguage aRequiredLocale,TUid appUid, TLanguage& aFinalAppLocale) const
+    {
+    TLanguagePath equivalentLanguages;
+    TInt index = 0;
+    RArray<TInt> appLocales;
+    TBool isLocalizedInfoPresent = EFalse;
+    aFinalAppLocale = KUnspecifiedLocale;
+    
+    //If required language is not specified, take the current user language. 
+    if (aRequiredLocale == KUnspecifiedLocale)
+        {
+        aRequiredLocale = User::Language();
+        }
+    
+    
+    //Get the app language list.    
+    GetLocalesForAppIdL(appLocales,appUid);
+  
+    //Check if current language is supported by application
+    if ( KErrNotFound!=appLocales.Find((TInt)aRequiredLocale))
+        {
+        aFinalAppLocale = aRequiredLocale;
+        isLocalizedInfoPresent = ETrue;
+		appLocales.Close();
+        return isLocalizedInfoPresent;
+        }
+    //Get the nearest languages corresponding to the required language.
+    BaflUtils::GetEquivalentLanguageList(aRequiredLocale, equivalentLanguages);
+    
+    
+    //Identify the app language corresponding to the nearest required language.
+    if(0 != appLocales.Count()) 
+        {
+        while(1)
+            {                                      
+            if(equivalentLanguages[index] != ELangNone && appLocales.FindInOrder((TInt)equivalentLanguages[index]) != KErrNotFound)
+                {
+                aFinalAppLocale = equivalentLanguages[index];
+                isLocalizedInfoPresent = ETrue;
+                break;
+                }
+                
+            if(equivalentLanguages[index] == ELangNone)
+                {
+                break;
+                }
+
+            index++;
+
+            } 
+        // If a matching language is not found in the list of equivalent languages,
+        // we check if a default locale (KNonLocalized) is present.
+        if(!isLocalizedInfoPresent && appLocales[0] == (TInt)KNonLocalized)
+            {
+            isLocalizedInfoPresent = ETrue;
+            aFinalAppLocale = KNonLocalized;
+            }        
+        } 
+    appLocales.Close();
+    return isLocalizedInfoPresent;
+    }
+
+TBool CScrRequestImpl::GetIntforConditionL(const TDesC& aSelectColumn,const TDesC& aTableInfo,const TDesC& aConditionColumn,TInt aConditionValue,TInt& aRetrievedValue) const 
+    {     
+    TBool isIntValFound = 0;
+    _LIT(KSelectDependencies, "SELECT %S FROM %S WHERE %S=?;");
+    TInt formattedLen = aSelectColumn.Length() + aTableInfo.Length()+ aConditionColumn.Length();
+    HBufC *stmtStr = FormatStatementLC(KSelectDependencies(), formattedLen, &aSelectColumn, &aTableInfo,&aConditionColumn);
+               
+    CStatement* stmt = iDbHandle->PrepareStatementLC(*stmtStr);
+    stmt->BindIntL(1, aConditionValue);
+    if(!stmt->ProcessNextRowL())
+       {
+       DEBUG_PRINTF3(_L("%S with value %d not found!"), &aSelectColumn, aConditionValue);           
+       }
+    else
+       {
+       aRetrievedValue = stmt->IntColumnL(0);
+       isIntValFound = 1;
+       }
+    CleanupStack::PopAndDestroy(2,stmtStr);
+    
+    return isIntValFound;
+    }
+    
 void IntersectSortedArraysL(RArray<TComponentId>& aLhs, RArray<TComponentId> aRhs)
 	{
 	RArray<TComponentId> tmp;
@@ -2755,25 +3020,50 @@
 
 TBool CScrRequestImpl::IsSoftwareTypeExistingL(TUint32 aSwTypeId, TUint32 aSifPluginUid, TUint32 aInstallerSecureId, TUint32 aExecutionLayerSecureId, const RPointerArray<HBufC>& aMimeTypesArray, const RPointerArray<CLocalizedSoftwareTypeName>& aLocalizedNamesArray)
 	{
-	_LIT(KSelectSoftwareType, "SELECT SifPluginUid,InstallerSecureId,ExecutionLayerSecureId FROM SoftwareTypes WHERE SoftwareTypeId=?;");
-	CStatement* stmt = iDbHandle->PrepareStatementLC(KSelectSoftwareType);
-	stmt->BindIntL(1, aSwTypeId);
-	if(!stmt->ProcessNextRowL())
+    if(!IsSoftwareTypeExistingL(aSwTypeId))
+        {
+        DEBUG_PRINTF2(_L8("IsSoftwareTypeExistingL: Software Type Id (%d) doesn't exist in the SCR."), aSwTypeId);
+        return EFalse;
+        }
+    
+    TInt pluginUid(0);
+    if(!GetSifPluginUidIInternalL(aSwTypeId, pluginUid))
+        {
+        DEBUG_PRINTF2(_L8("IsSoftwareTypeExistingL: SIF Plugin Uid doesn't exist in the SCR for TypeId %d."), aSwTypeId);
+        return EFalse;
+        }
+    
+    if(aSifPluginUid != pluginUid)
+        {
+        DEBUG_PRINTF2(_L8("IsSoftwareTypeExistingL: SIF Plugin Uid doesn't match with the one in the SCR."), pluginUid);
+        return EFalse;
+        }
+        
+    TBool isInstallerSidPresent = EFalse;
+    TBool isExecutionLayerSidPresent = EFalse;
+    RArray<TSecureId> installerSids;
+    CleanupClosePushL(installerSids);
+    if(GetSidsForSoftwareTypeIdL(aSwTypeId, installerSids))
+        {
+        TInt count = installerSids.Count();
+        for (TInt i = 0; i < count; i++)
+            {
+            if (aInstallerSecureId == installerSids[i])
+                isInstallerSidPresent = ETrue;
+            if (aExecutionLayerSecureId == installerSids[i])
+                isExecutionLayerSidPresent = ETrue;
+
+			if(isInstallerSidPresent && isExecutionLayerSidPresent)
+				break;
+            }
+        }
+    CleanupStack::PopAndDestroy(&installerSids);
+    
+	if(!isInstallerSidPresent || !isExecutionLayerSidPresent)
 		{
-		DEBUG_PRINTF2(_L8("IsSoftwareTypeExistingL: Software Type Id (%d) doesn't exist in the SCR."), aSwTypeId);
-		CleanupStack::PopAndDestroy(stmt);
+		DEBUG_PRINTF(_L8("IsSoftwareTypeExistingL: One of the UIDs is different from the one in the database."));
 		return EFalse;
 		}
-	TBool uidsNotEqual = aSifPluginUid != stmt->IntColumnL(0) ||
-						 aInstallerSecureId != stmt->IntColumnL(1) ||
-						 aExecutionLayerSecureId != stmt->IntColumnL(2);
-	if(uidsNotEqual)
-		{
-		DEBUG_PRINTF(_L8("IsSoftwareTypeExistingL: One of the UIDs is different from the one in the database."));
-		CleanupStack::PopAndDestroy(stmt);
-		return EFalse;
-		}
-	CleanupStack::PopAndDestroy(stmt);
 	
 	_LIT(KSelectSwTypeNames, "SELECT Locale,Name FROM SoftwareTypeNames WHERE SoftwareTypeId=? AND Locale!=?;");
 	CStatement* stmtNames = iDbHandle->PrepareStatementLC(KSelectSwTypeNames);
@@ -2879,9 +3169,16 @@
 		}
 	
 	// First, insert the main record to SoftwareTypes table
-	_LIT(KInsertSwType, "INSERT INTO SoftwareTypes(SoftwareTypeId,SifPluginUid,InstallerSecureId,ExecutionLayerSecureId) VALUES(?,?,?,?);");
-	TInt numberOfValuesSwType = 4;
-	ExecuteStatementL(KInsertSwType(), numberOfValuesSwType, EValueInteger, swTypeId, EValueInteger, sifPluginUid, EValueInteger, installerSecureId, EValueInteger, executionLayerSecureId);
+	// TODO: Have to insert the Launcher Executable name here
+	_LIT(KInsertSwType, "INSERT INTO SoftwareTypes(SoftwareTypeId,SifPluginUid) VALUES(?,?);");
+	TInt numberOfValuesSwType = 2;
+	ExecuteStatementL(KInsertSwType(), numberOfValuesSwType, EValueInteger, swTypeId, EValueInteger, sifPluginUid);
+	
+	_LIT(KInsertCustomAccess, "INSERT INTO CustomAccessList(SoftwareTypeId,SecureId,AccessMode) VALUES(?,?,?);");
+	TInt numberOfValuesCustomAccess = 3;
+	// TODO: This should be modified to insert more than 2 Sids
+	ExecuteStatementL(KInsertCustomAccess(), numberOfValuesCustomAccess, EValueInteger, swTypeId, EValueInteger, installerSecureId, EValueInteger, (TInt)ETransactionalSid);
+	ExecuteStatementL(KInsertCustomAccess(), numberOfValuesCustomAccess, EValueInteger, swTypeId, EValueInteger, executionLayerSecureId, EValueInteger, (TInt)ETransactionalSid);
 	
 	// Then, insert MIME types of this software type into MimeTypes table
 	_LIT(KInsertMimeType, "INSERT INTO MimeTypes(SoftwareTypeId,MimeType) VALUES(?,?);");
@@ -2924,6 +3221,9 @@
 	_LIT(KDeleteSoftwareType, "DELETE FROM SoftwareTypes WHERE SoftwareTypeId=?;");
 	ExecuteStatementL(KDeleteSoftwareType(), numberOfValues, EValueInteger, swTypeId);
 	
+	_LIT(KDeleteCustomAccess, "DELETE FROM CustomAccessList WHERE SoftwareTypeId=?;");
+	ExecuteStatementL(KDeleteCustomAccess(), numberOfValues, EValueInteger, swTypeId);
+	
 	// Thirdly, get the list of MIME types belong to the deleted software type. 
 	// This list will be returned to the client with another request (GetDeletedMimeTypesL)
 	_LIT(KSelectMimeTypes, "SELECT MimeType FROM MimeTypes WHERE SoftwareTypeId=?;");
@@ -2949,22 +3249,31 @@
 	iDeletedMimeTypes.ResetAndDestroy();
 	}
 
+TInt CScrRequestImpl::GetSoftwareTypeForComponentL(TComponentId aComponentId) const
+    {
+    _LIT(KSelectComponentSoftwareTypeId, "SELECT SoftwareTypeId FROM Components WHERE ComponentId=?;");   
+    
+    TInt swTypeId = 0;
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectComponentSoftwareTypeId);
+    stmt->BindIntL(1, aComponentId);
+        
+    if(!stmt->ProcessNextRowL())
+        { 
+        DEBUG_PRINTF2(_L("Component Id (%d) couldn't be found!"), aComponentId);
+        User::Leave(KErrNotFound);
+        }
+    
+    swTypeId = stmt->IntColumnL(0);
+    CleanupStack::PopAndDestroy(stmt);
+    
+    return swTypeId;
+    }
+
 TBool CScrRequestImpl::GetIsComponentOrphanedL(TComponentId aComponentId) const	
 	{
-	_LIT(KComponentSoftwareTypeId, "SELECT SoftwareTypeId FROM Components WHERE ComponentId=?;");	
-	
-	CStatement *stmt = iDbHandle->PrepareStatementLC(KComponentSoftwareTypeId);
-	stmt->BindIntL(1, aComponentId);
+	// Get the software type for component
+	TUint32 swTypeId = GetSoftwareTypeForComponentL(aComponentId);
 		
-	if(!stmt->ProcessNextRowL())
-		{ 
-		DEBUG_PRINTF2(_L("Component Id (%d) couldn't be found!"), aComponentId);
-		User::Leave(KErrNotFound);
-		}
-	
-	TUint32 swTypeId = stmt->IntColumnL(0);
-	CleanupStack::PopAndDestroy(stmt);
-	
 	// The component is orphaned iff the software type does not exist.
 	return !IsSoftwareTypeExistingL(swTypeId);
 	}
@@ -3102,7 +3411,7 @@
 	stream.CommitL();
 	stream.Release();
 	file.Close();
-	
+		
 	// Update the log count
 	User::LeaveIfError(stream.Open(iFs, *logFileName, EFileRead|EFileWrite|EFileShareExclusive|EFileStream));
 	stream.Sink()->SeekL(MStreamBuf::EWrite,EStreamBeginning,8); // Skip the version info
@@ -3230,3 +3539,1491 @@
 	WriteArrayDataL(aMessage, 0, iMatchingSupportedLanguageList);
 	iMatchingSupportedLanguageList.Close();
 	}
+
+TBool CScrRequestImpl::DoesAppWithScreenModeExistL(TUid aAppUid, TInt aScreenMode, TLanguage aLocale) const
+    {
+    _LIT(KSelectAppUidFromLocalizableAppInfo,"SELECT COUNT(*)FROM (LocalizableAppInfo JOIN ViewData ON LocalizableAppInfo.LocalAppInfoId = ViewData.LocalAppInfoId) WHERE AppUid = ? AND ScreenMode = ? AND Locale = ?;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAppUidFromLocalizableAppInfo);
+    stmt->BindIntL(1, aAppUid.iUid);            
+    stmt->BindIntL(2, aScreenMode);
+    stmt->BindIntL(3, aLocale);
+    stmt->ProcessNextRowL();
+    TInt count = stmt->IntColumnL(0);
+    CleanupStack::PopAndDestroy(stmt);
+    if(count!=0)
+        return ETrue;
+    else 
+        return EFalse;
+    }
+
+void CScrRequestImpl::GetAppUidsL(CAppInfoViewSubsessionContext* aSubsessionContext, TBool aScreenModePresent) const
+    {
+    CStatement* stmt;
+    _LIT(KAllAppIds,"SELECT AppUid from AppRegistrationInfo"); 
+    stmt = iDbHandle->PrepareStatementLC(KAllAppIds);
+    aSubsessionContext->iApps.Close();
+    while(stmt->ProcessNextRowL())
+        {
+        TAppUidWithLocaleInfo appUidWithLocaleInfo;
+        appUidWithLocaleInfo.iAppUid = TUid::Uid(stmt->IntColumnL(0));
+        appUidWithLocaleInfo.iLocale = KUnspecifiedLocale;
+        GetNearestAppLanguageL(aSubsessionContext->iLocale, appUidWithLocaleInfo.iAppUid, appUidWithLocaleInfo.iLocale);
+        if(aScreenModePresent)
+        	{
+            if(DoesAppWithScreenModeExistL(appUidWithLocaleInfo.iAppUid, aSubsessionContext->iScreenMode, appUidWithLocaleInfo.iLocale))
+                {
+                 aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+                }
+        	}
+        
+        else
+        	{
+            aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+        	}
+        }
+    CleanupStack::PopAndDestroy(stmt);  
+    }
+        
+void CScrRequestImpl::GetEmbeddableAppUidsL(CAppInfoViewSubsessionContext* aSubsessionContext, TBool aScreenModePresent) const
+    {
+    CStatement *stmt1;
+    _LIT (KGetAppIdWithEmbeddability, "SELECT DISTINCT AppUid from AppRegistrationInfo where Embeddable IN(1,2)"); 
+    stmt1 = iDbHandle->PrepareStatementLC(KGetAppIdWithEmbeddability);
+    aSubsessionContext->iApps.Close();
+    while(stmt1->ProcessNextRowL())
+    	{
+        TAppUidWithLocaleInfo appUidWithLocaleInfo;
+        appUidWithLocaleInfo.iAppUid = TUid::Uid(stmt1->IntColumnL(0));
+        appUidWithLocaleInfo.iLocale = KUnspecifiedLocale;
+        GetNearestAppLanguageL(aSubsessionContext->iLocale, appUidWithLocaleInfo.iAppUid, appUidWithLocaleInfo.iLocale);
+        if(aScreenModePresent)
+        	{
+            if(DoesAppWithScreenModeExistL(appUidWithLocaleInfo.iAppUid, aSubsessionContext->iScreenMode, appUidWithLocaleInfo.iLocale))
+                {
+                 aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+                }
+        	}
+        else
+        	{
+            aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+        	}
+    	}
+    CleanupStack::PopAndDestroy(stmt1); 
+    }
+
+
+void CScrRequestImpl::GetServerAppUidsL(CAppInfoViewSubsessionContext* aSubsessionContext, TUid aServiceUid, TBool aScreenModePresent) const
+    {
+    CStatement *stmt1;
+    _LIT(KSelectAppUidForServiceId,"SELECT DISTINCT AppUid from ServiceInfo where Uid = ?"); 
+    stmt1 = iDbHandle->PrepareStatementLC(KSelectAppUidForServiceId);
+    stmt1->BindIntL(1, aServiceUid.iUid);
+    aSubsessionContext->iApps.Close();
+    while(stmt1->ProcessNextRowL())
+    	{
+        TAppUidWithLocaleInfo appUidWithLocaleInfo;
+        appUidWithLocaleInfo.iAppUid = TUid::Uid(stmt1->IntColumnL(0));
+        appUidWithLocaleInfo.iLocale = KUnspecifiedLocale;
+        GetNearestAppLanguageL(aSubsessionContext->iLocale, appUidWithLocaleInfo.iAppUid, appUidWithLocaleInfo.iLocale);
+        if(aScreenModePresent)
+        	{
+            if(DoesAppWithScreenModeExistL(appUidWithLocaleInfo.iAppUid, aSubsessionContext->iScreenMode, appUidWithLocaleInfo.iLocale))
+                {
+                 aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+                }
+        	}
+        else
+        	{
+            aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+        	}
+    	}
+    CleanupStack::PopAndDestroy(stmt1); 
+    }
+
+void CScrRequestImpl::GetAppUidsWithEmbeddabilityFilterL(CAppInfoViewSubsessionContext* aSubsessionContext, TEmbeddableFilter& aFilter, TBool aScreenModePresent) const
+    {
+    CStatement *stmt1;
+    TApplicationCharacteristics::TAppEmbeddability embeddability;
+    _LIT(KSelectAppUidForServiceId,"SELECT DISTINCT AppUid,Embeddable from AppRegistrationInfo"); 
+    stmt1 = iDbHandle->PrepareStatementLC(KSelectAppUidForServiceId);
+    aSubsessionContext->iApps.Close();  
+    while(stmt1->ProcessNextRowL())
+            {   
+            embeddability  = (TApplicationCharacteristics::TAppEmbeddability)stmt1->IntColumnL(1);
+            if(aFilter.MatchesEmbeddability(embeddability))
+            	{
+                TAppUidWithLocaleInfo appUidWithLocaleInfo;
+                appUidWithLocaleInfo.iAppUid = TUid::Uid(stmt1->IntColumnL(0));
+                appUidWithLocaleInfo.iLocale = KUnspecifiedLocale;
+                GetNearestAppLanguageL(aSubsessionContext->iLocale, appUidWithLocaleInfo.iAppUid, appUidWithLocaleInfo.iLocale);
+                if(aScreenModePresent)
+                	{
+                    if(DoesAppWithScreenModeExistL(appUidWithLocaleInfo.iAppUid, aSubsessionContext->iScreenMode, appUidWithLocaleInfo.iLocale))
+                        {
+                         aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+                        }
+                	}
+                else
+                	{
+                    aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+                	}
+            	}
+            else
+            	continue;
+            }
+    CleanupStack::PopAndDestroy(stmt1);
+    }
+
+void CScrRequestImpl::GetAppUidsWithCapabilityMaskAndValueL(CAppInfoViewSubsessionContext* aSubsessionContext,TUint aCapabilityAttrFilterMask, TUint aCapabilityAttrFilterValue, TBool aScreenModePresent) const
+    {
+    CStatement *stmt1;
+    TUint attributes;
+    _LIT(KSelectAppUidForServiceId,"SELECT DISTINCT AppUid,Attributes from AppRegistrationInfo"); 
+    stmt1 = iDbHandle->PrepareStatementLC(KSelectAppUidForServiceId);            
+    aSubsessionContext->iApps.Close(); 
+    while(stmt1->ProcessNextRowL())
+    	{
+    	attributes = stmt1->IntColumnL(1);
+        if(((attributes & aCapabilityAttrFilterMask) == (aCapabilityAttrFilterValue & aCapabilityAttrFilterMask)))
+        	{
+            TAppUidWithLocaleInfo appUidWithLocaleInfo;
+            appUidWithLocaleInfo.iAppUid = TUid::Uid(stmt1->IntColumnL(0));
+            appUidWithLocaleInfo.iLocale = KUnspecifiedLocale;
+            GetNearestAppLanguageL(aSubsessionContext->iLocale, appUidWithLocaleInfo.iAppUid, appUidWithLocaleInfo.iLocale);
+            if(aScreenModePresent)
+            	{
+                if(DoesAppWithScreenModeExistL(appUidWithLocaleInfo.iAppUid, aSubsessionContext->iScreenMode, appUidWithLocaleInfo.iLocale))
+                    {
+                     aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+                    }
+            	}
+            else
+            	{
+                aSubsessionContext->iApps.AppendL(appUidWithLocaleInfo);
+            	}
+        	}
+        else
+        	continue;
+    	}
+    CleanupStack::PopAndDestroy(stmt1);
+    }
+
+void CScrRequestImpl::GetLocalesForAppIdL(RArray<TInt>& aLocales, TUid aAppUid) const
+    {     
+    _LIT(KAllLocales," SELECT Locale from LocalizableAppInfo where AppUid = ? ORDER BY Locale");               
+    CStatement* stmt = iDbHandle->PrepareStatementLC(KAllLocales); 
+    stmt->BindIntL(1, aAppUid.iUid);
+    aLocales.Close();
+    while(stmt->ProcessNextRowL())
+         {
+         aLocales.Append(stmt->IntColumnL(0));                  
+         }
+    CleanupStack::PopAndDestroy(1,stmt);                    
+    }
+
+CStatement* CScrRequestImpl::CreateStatementForAppInfoL(const TDesC& aStatement, TLanguage aLocale, TInt aValuesNum,...) const 
+    {
+    VA_LIST argList;
+    VA_START(argList, aValuesNum);  
+    
+    CStatement *stmt = iDbHandle->PrepareStatementLC(aStatement);   
+    BindStatementValuesL(*stmt, aLocale,aValuesNum, argList); 
+    CleanupStack::Pop(stmt);
+    return stmt;    
+    }
+
+CAppInfoFilter* CScrRequestImpl::ReadAppInfoFilterL(const RMessage2& aMessage) const
+    {
+    CAppInfoFilter *filter = ReadObjectFromMessageLC<CAppInfoFilter>(aMessage, 0);
+    CleanupStack::Pop(filter);
+    return filter;
+    }
+
+void CScrRequestImpl::OpenAppInfoViewL(CAppInfoFilter& aFilter, CAppInfoViewSubsessionContext* aSubsessionContext)
+    {
+               
+    switch(aFilter.iSetFlag)
+        {
+        
+        case CAppInfoFilter::EAllApps:
+            {
+            GetAppUidsL(aSubsessionContext);                    
+            break;
+            }
+        case CAppInfoFilter::EAllAppsWithScreenMode:
+            {            
+            aSubsessionContext->iScreenMode = aFilter.iScreenMode;
+            GetAppUidsL(aSubsessionContext, ETrue);
+            break;
+            }
+            
+        case CAppInfoFilter::EGetEmbeddableApps:
+            {            
+            GetEmbeddableAppUidsL(aSubsessionContext);
+            break;
+            }
+            
+        case CAppInfoFilter::EGetEmbeddableAppsWithSreenMode:
+            {
+            aSubsessionContext->iScreenMode = aFilter.iScreenMode;
+            GetEmbeddableAppUidsL(aSubsessionContext, ETrue);
+            break;
+            }
+        
+        case CAppInfoFilter::EGetFilteredAppsWithEmbeddabilityFilter:
+            {
+            GetAppUidsWithEmbeddabilityFilterL(aSubsessionContext, aFilter.iEmbeddabilityFilter);
+            break;
+            }
+            
+        case CAppInfoFilter::EGetFilteredAppsWithEmbeddabilityFilterWithScreenMode:
+            {
+            aSubsessionContext->iScreenMode = aFilter.iScreenMode;
+            GetAppUidsWithEmbeddabilityFilterL(aSubsessionContext, aFilter.iEmbeddabilityFilter, ETrue);
+            break;
+            }
+            
+        case CAppInfoFilter::EGetFilteredAppsWithCapabilityMaskAndValue:
+            {
+            GetAppUidsWithCapabilityMaskAndValueL(aSubsessionContext,aFilter.iCapabilityAttributeMask,aFilter.iCapabilityAttributeValue);
+            break;
+            }
+            
+        case CAppInfoFilter::EGetFilteredAppsWithCapabilityMaskAndValueWithScreenMode:
+            {
+            aSubsessionContext->iScreenMode = aFilter.iScreenMode;
+            GetAppUidsWithCapabilityMaskAndValueL(aSubsessionContext,aFilter.iCapabilityAttributeMask,aFilter.iCapabilityAttributeValue, ETrue);
+            break;
+            }
+        case CAppInfoFilter::EGetServerApps:
+            {
+            GetServerAppUidsL(aSubsessionContext, aFilter.iServiceUid);
+            break;
+            }
+            
+        case CAppInfoFilter::EGetServerAppsWithScreenMode:
+            {
+            aSubsessionContext->iScreenMode = aFilter.iScreenMode;
+            GetServerAppUidsL(aSubsessionContext, aFilter.iServiceUid, ETrue);
+            break;
+            }
+            
+        default:
+            User::Leave(KErrArgument);
+        }
+    
+    }
+
+void CScrRequestImpl::NextAppInfoSizeL(const RMessage2& aMessage, TAppRegInfo*& aAppInfo, CAppInfoViewSubsessionContext* aSubsessionContext)
+    {
+    if(aSubsessionContext->iAppInfoIndex < aSubsessionContext->iApps.Count())
+        {
+        TInt count1 = User::CountAllocCells();
+        aAppInfo = new(ELeave) TAppRegInfo;
+        TInt count2 = User::CountAllocCells();        
+        aAppInfo->iUid = (aSubsessionContext->iApps[aSubsessionContext->iAppInfoIndex]).iAppUid;
+
+        _LIT(KSelectAppFilename, "SELECT AppFile FROM AppRegistrationInfo WHERE AppUid=?;");
+        CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAppFilename);
+        stmt->BindIntL(1, aAppInfo->iUid.iUid);
+        stmt->ProcessNextRowL();
+        aAppInfo->iFullName = stmt->StrColumnL(0);
+        CleanupStack::PopAndDestroy(stmt);
+
+        if((aSubsessionContext->iApps[aSubsessionContext->iAppInfoIndex]).iLocale != KUnspecifiedLocale)
+            {
+            GetCaptionAndShortCaptionInfoForLocaleL(aAppInfo->iUid, aSubsessionContext->iApps[aSubsessionContext->iAppInfoIndex].iLocale, aAppInfo->iShortCaption, aAppInfo->iCaption);
+            }
+        aSubsessionContext->iAppInfoIndex++;
+        }
+    else
+        {
+        DEBUG_PRINTF(_L8("Reached the end of the view."));
+        }
+
+    WriteObjectSizeL(aMessage, 1, aAppInfo);
+    }
+
+void CScrRequestImpl::NextAppInfoDataL(const RMessage2& aMessage, TAppRegInfo*& aAppInfo)
+    {
+    DEBUG_PRINTF(_L8("Returning the AppInfo data."));
+    WriteObjectDataL(aMessage, 0, aAppInfo);
+    DeleteObjectZ(aAppInfo); // Delete the object to prevent it to be resent.
+    aAppInfo = NULL;
+    }
+
+void CScrRequestImpl::AddApplicationEntryL(const RMessage2& aMessage)
+    {
+    DEBUG_PRINTF(_L8("Adding the application details into SCR"));
+	TComponentId componentId = GetComponentIdFromMsgL(aMessage);
+    CApplicationRegistrationData *regInfo = ReadObjectFromMessageLC<CApplicationRegistrationData>(aMessage, 1);
+        
+    TSecureId clientSid = aMessage.SecureId();
+    TUint32 swTypeId = 0;
+    if (componentId == 0 && clientSid == KSisRegistryServerSid)
+        {
+        swTypeId = HashCaseSensitiveL(Usif::KSoftwareTypeNative);
+        }
+    else
+        {
+        // Applicaiton is always associated with a component. We use the SoftwareTypeId of the 
+        // component as the ApplicationTypeId.
+        swTypeId = GetSoftwareTypeForComponentL(componentId);
+        }
+    
+        
+    _LIT(KInsertAppRegistrationInfo,"INSERT INTO AppRegistrationInfo(AppUid, ComponentId, AppFile, TypeId, Attributes, Hidden, Embeddable, NewFile, Launch, GroupName, DefaultScreenNumber) VALUES(?,?,?,?,?,?,?,?,?,?,?);");
+    TInt numberOfValues = 11;    
+    ExecuteStatementL(KInsertAppRegistrationInfo(), numberOfValues, EValueInteger, regInfo->AppUid(), EValueInteger, componentId, EValueString, &(regInfo->AppFile()), EValueInteger, swTypeId, EValueInteger, regInfo->Attributes(), EValueInteger, regInfo->Hidden(), EValueInteger, regInfo->Embeddability(), EValueInteger, regInfo->NewFile(), EValueInteger, regInfo->Launch(), EValueString, &(regInfo->GroupName()),  EValueInteger, regInfo->DefaultScreenNumber());
+    
+    RPointerArray<HBufC> ownedFileArray = regInfo->OwnedFileArray();    
+    for(TInt i=0;i<ownedFileArray.Count();++i)
+    	{
+        AddFileOwnershipInfoL(regInfo->AppUid(),*(ownedFileArray[i]));
+        }
+
+	RPointerArray<CServiceInfo> serviceArray = regInfo->ServiceArray();
+    for(TInt i=0;i<serviceArray.Count();++i)
+        {
+        AddServiceInfoL(regInfo->AppUid(),serviceArray[i]);
+        }
+    
+	RPointerArray<CLocalizableAppInfo> localizableAppInfo = regInfo->LocalizableAppInfoList();
+    for(TInt i=0;i<localizableAppInfo.Count();++i)
+       	{       	
+       	AddLocalizableAppInfoL(regInfo->AppUid(), localizableAppInfo[i]);
+       	}
+    
+	RPointerArray<CPropertyEntry> appPropertiesList = regInfo->AppProperties();
+    for(TInt i=0;i<appPropertiesList.Count();++i)
+       	{
+        AddPropertyL(regInfo->AppUid(), appPropertiesList[i]);
+		}
+     
+    RPointerArray<COpaqueData> opaqueDataList = regInfo->AppOpaqueData();
+    for (TInt i = 0; i < opaqueDataList.Count(); ++i)
+        {
+        AddOpaqueDataL(regInfo->AppUid(), opaqueDataList[i]);
+        }
+          
+    CleanupStack::PopAndDestroy(regInfo);
+    DEBUG_PRINTF(_L8("Adding the application details into SCR done "));
+    }
+
+void CScrRequestImpl::AddFileOwnershipInfoL(TUid aAppUid, const TDesC& aFileName)
+    {
+    if(aAppUid == KNullUid || !aFileName.CompareF(KNullDesC()))
+    	{
+    	DEBUG_PRINTF(_L8("Mandatory values not provided."));
+    	User::Leave(KErrArgument);
+    	}
+    
+    _LIT(KInsertFileOwnershipInfo,"INSERT INTO FileOwnershipInfo(AppUid, FileName) VALUES(?,?);");
+    TInt numberOfValues = 2;
+    ExecuteStatementL(KInsertFileOwnershipInfo(), numberOfValues, EValueInteger, aAppUid, EValueString, &aFileName);
+    }
+
+void CScrRequestImpl::AddLocalizableAppInfoL(TUid aAppUid, Usif::CLocalizableAppInfo* aLocalizableAppInfoEntry)
+    {
+	TInt captionAndIconInfoId = 0;
+	if(NULL != aLocalizableAppInfoEntry->iCaptionAndIconInfo)
+	    {
+	    captionAndIconInfoId = AddCaptionAndIconInfoL(aLocalizableAppInfoEntry->iCaptionAndIconInfo);
+	    }
+	_LIT(KInsertLocalizableAppInfo,"INSERT INTO LocalizableAppInfo(AppUid, ShortCaption, GroupName, Locale, CaptionAndIconId) VALUES(?,?,?,?,?);");
+    TInt numberOfValues = 5;
+    ExecuteStatementL(KInsertLocalizableAppInfo(), numberOfValues, EValueInteger, aAppUid, EValueString, &(aLocalizableAppInfoEntry->ShortCaption()), EValueString, &(aLocalizableAppInfoEntry->GroupName()), EValueInteger, aLocalizableAppInfoEntry->ApplicationLanguage(), EValueInteger, captionAndIconInfoId);
+    TInt localAppInfoId = iDbHandle->LastInsertedIdL();
+	RPointerArray<CAppViewData> viewDataList = aLocalizableAppInfoEntry->ViewDataList();
+	for (TInt i=0;i<viewDataList.Count();i++)
+		{
+		AddViewDataL(localAppInfoId, viewDataList[i]);
+		}
+	}
+
+void CScrRequestImpl::AddViewDataL(TInt aLocalAppInfoId, Usif::CAppViewData* aViewDataEntry)
+    {
+	if(aLocalAppInfoId == 0 || aViewDataEntry->Uid() == KNullUid )
+		{
+		DEBUG_PRINTF(_L8("Mandatory values not provided."));
+        User::Leave(KErrArgument);
+		}
+
+	TInt captionAndIconInfoId = 0;
+	if(NULL != aViewDataEntry->iCaptionAndIconInfo)
+	   {
+	   captionAndIconInfoId = AddCaptionAndIconInfoL(aViewDataEntry->iCaptionAndIconInfo);
+	   }
+	
+	_LIT(KInsertViewData,"INSERT INTO ViewData(LocalAppInfoId, Uid, ScreenMode, CaptionAndIconId) VALUES(?,?,?,?);");
+    TInt numberOfValues = 4;
+    ExecuteStatementL(KInsertViewData(), numberOfValues, EValueInteger, aLocalAppInfoId, EValueInteger, aViewDataEntry->Uid(), EValueInteger, aViewDataEntry->ScreenMode(), EValueInteger, captionAndIconInfoId);
+    }
+
+TInt CScrRequestImpl::AddCaptionAndIconInfoL(Usif::CCaptionAndIconInfo* aCaptionAndIconEntry)
+    {
+	_LIT(KCaptionAndIconInfo,"INSERT INTO CaptionAndIconInfo(Caption, NumberOfIcons, IconFile) VALUES(?,?,?);");
+    TInt numberOfValues = 3;
+    ExecuteStatementL(KCaptionAndIconInfo(), numberOfValues, EValueString, &(aCaptionAndIconEntry->Caption()), EValueInteger, aCaptionAndIconEntry->NumOfAppIcons(), EValueString, &(aCaptionAndIconEntry->IconFileName()));
+    return iDbHandle->LastInsertedIdL();
+	}
+
+void CScrRequestImpl::AddServiceInfoL(TUid aAppUid, Usif::CServiceInfo* aAppServiceInfoEntry)
+    {
+    if(aAppUid == KNullUid)
+    	{
+    	DEBUG_PRINTF(_L8("Values for app uid is absent"));
+    	User::Leave(KErrArgument);
+    	}
+    _LIT(KInsertServiceInfo,"INSERT INTO ServiceInfo(AppUid, Uid) VALUES(?,?);");
+    TInt numberOfValues = 2;
+    
+    ExecuteStatementL(KInsertServiceInfo(), numberOfValues, EValueInteger, aAppUid, EValueInteger, aAppServiceInfoEntry->Uid());
+    TInt serviceId = iDbHandle->LastInsertedIdL();
+
+    RPointerArray<Usif::COpaqueData> opaqueData = aAppServiceInfoEntry->OpaqueData();
+    for(TInt i=0;i<opaqueData.Count();i++)
+        {
+        AddOpaqueDataL(aAppUid, opaqueData[i], aAppServiceInfoEntry->Uid());
+        }
+    
+    RPointerArray<Usif::CDataType> dataTypes = aAppServiceInfoEntry->DataTypes();
+	for (TInt i=0;i<dataTypes.Count();i++)
+		{
+		AddServiceDataTypeL(serviceId, dataTypes[i]);
+		}
+    }
+
+void CScrRequestImpl::AddServiceDataTypeL(TInt aServiceUid, Usif::CDataType* aDataTypeEntry)
+	{
+    if(!((aDataTypeEntry->Type()).CompareF(KNullDesC())))
+    	{
+    	DEBUG_PRINTF(_L8("Values for service uid or type is absent"));
+    	User::Leave(KErrArgument);
+    	}
+    _LIT(KInsertServiceDataTypeInfo,"INSERT INTO DataType(ServiceId, Priority, Type) VALUES(?,?,?);");
+    TInt numberOfValues = 3;
+    ExecuteStatementL(KInsertServiceDataTypeInfo(), numberOfValues, EValueInteger, aServiceUid, EValueInteger, aDataTypeEntry->Priority() , EValueString, &(aDataTypeEntry->Type()));
+	}
+
+void CScrRequestImpl::AddPropertyL(TUid aAppUid, Usif::CPropertyEntry* aAppPropertiesEntry)
+    {
+    if(aAppUid == KNullUid || !((aAppPropertiesEntry->PropertyName().CompareF(KNullDesC()))))
+    	{
+    	DEBUG_PRINTF(_L8("Property name is absent and hence cannot be entered into the DB."));
+    	User::Leave(KErrArgument);
+    	}
+	_LIT(KInsertAppProperties, "INSERT INTO AppProperties(AppUid, %S;");
+	_LIT(KPropertyIntValue," Name, IntValue) VALUES(?,?,?)");
+	_LIT(KPropertyStrValue," Locale, Name, StrValue) VALUES(?,?,?,?)");
+	_LIT(KPropertyBinaryValue," Name, StrValue, IsStr8Bit) VALUES(?,?,?,1)");
+	
+	HBufC *statementStr(0);
+	CStatement *stmt ;
+	
+    switch(aAppPropertiesEntry->PropertyType())
+		{
+		case CPropertyEntry::EIntProperty:
+			{
+			statementStr = FormatStatementLC(KInsertAppProperties, KPropertyIntValue().Length(), &KPropertyIntValue());
+			stmt = iDbHandle->PrepareStatementLC(*statementStr);
+			CIntPropertyEntry *intProp = static_cast<CIntPropertyEntry *>(aAppPropertiesEntry);
+			stmt->BindIntL(1, aAppUid.iUid);
+			stmt->BindStrL(2, intProp->PropertyName());
+			stmt->BindInt64L(3, intProp->Int64Value());
+			stmt->ExecuteStatementL();
+			CleanupStack::PopAndDestroy(2,statementStr);
+			}
+			break;
+		case CPropertyEntry::ELocalizedProperty:
+			{
+			statementStr = FormatStatementLC(KInsertAppProperties, KPropertyStrValue().Length(), &KPropertyStrValue());
+			stmt = iDbHandle->PrepareStatementLC(*statementStr);
+			CLocalizablePropertyEntry *localizedProp = static_cast<CLocalizablePropertyEntry *>(aAppPropertiesEntry);
+			stmt->BindIntL(1, aAppUid.iUid);
+			stmt->BindIntL(2, localizedProp->LocaleL());
+			stmt->BindStrL(3, localizedProp->PropertyName());
+			stmt->BindStrL(4, localizedProp->StrValue());
+			stmt->ExecuteStatementL();
+			CleanupStack::PopAndDestroy(2,statementStr);
+			}
+			break;	
+		case CPropertyEntry::EBinaryProperty:
+		    {
+		    statementStr = FormatStatementLC(KInsertAppProperties, KPropertyBinaryValue().Length(), &KPropertyBinaryValue());
+            stmt = iDbHandle->PrepareStatementLC(*statementStr);
+            CBinaryPropertyEntry *binaryProp = static_cast<CBinaryPropertyEntry *>(aAppPropertiesEntry);
+            stmt->BindIntL(1, aAppUid.iUid);
+            stmt->BindStrL(2, binaryProp->PropertyName());
+            stmt->BindBinaryL(3, binaryProp->BinaryValue());
+            stmt->ExecuteStatementL();
+            CleanupStack::PopAndDestroy(2,statementStr);
+            }
+		    break;
+		
+		default:
+			DEBUG_PRINTF(_L8("The property type couldn't be recognized."));
+			User::Leave(KErrAbort);	
+		}
+    }
+
+
+void CScrRequestImpl::AddOpaqueDataL(TUid aAppUid, Usif::COpaqueData* aOpaqueDataEntry, TUid aServiceUid)
+    {
+    /* AppUid cannot be NULL since this function is invoked from AddApplicationEntryL */ 
+    __ASSERT_DEBUG(aAppUid != TUid::Null(), User::Leave(KErrArgument));
+    
+    _LIT(KOpaqueDataEntry, "INSERT INTO AppProperties(AppUid, Name, Locale, ServiceUid, StrValue, IsStr8Bit) VALUES(?,?,?,?,?,1)");
+    
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KOpaqueDataEntry);
+    
+    stmt->BindIntL(1, aAppUid.iUid);
+    stmt->BindStrL(2, _L("OpaqueData"));
+    stmt->BindIntL(3, (TInt)aOpaqueDataEntry->iLanguage);
+    stmt->BindIntL(4, aServiceUid.iUid);
+    stmt->BindBinaryL(5, *(aOpaqueDataEntry->iOpaqueData));
+    stmt->ExecuteStatementL();
+    CleanupStack::PopAndDestroy(stmt);
+    }
+
+void CScrRequestImpl::DeleteApplicationEntryInternalL(const TInt aAppUid)
+	{
+	TInt numberOfValues = 1;
+
+	DeleteFromTableL(KFileOwnershipInfoTable,KAppIdColumnName,aAppUid);
+            
+    _LIT(KDeleteDataType, "DELETE FROM DataType WHERE ServiceId IN \
+                    (SELECT ServiceId FROM ServiceInfo WHERE AppUid=?);");
+    ExecuteStatementL(KDeleteDataType, numberOfValues, EValueInteger, aAppUid);
+    DEBUG_PRINTF2(_L8("Service datatype details associated with application(%d) have been deleted."), aAppUid);
+        
+    DeleteFromTableL(KServiceInfoTable,KAppIdColumnName,aAppUid);
+        
+    RArray<TInt> viewId;
+    CleanupClosePushL(viewId);
+    DEBUG_PRINTF2(_L8("Deleting the LocalizableAppInfo details associated with application (%d)"), aAppUid);
+    _LIT(KSelectViewId, "SELECT ViewId FROM ViewData WHERE LocalAppInfoId IN(SELECT LocalAppInfoId FROM LocalizableAppInfo WHERE AppUid = ?);");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectViewId);
+    stmt->BindIntL(1, aAppUid);
+    viewId.Close();
+    while(stmt->ProcessNextRowL())
+        {
+        viewId.AppendL(stmt->IntColumnL(0));
+        }
+    
+    _LIT(KViewId,"ViewId");
+    _LIT(KDeleteCaptionAndIconInfoAssociatedToViewData, "DELETE FROM CaptionAndIconInfo WHERE CaptionAndIconId = (SELECT CaptionAndIconId FROM ViewData WHERE ViewId=?);");
+               
+    for(TInt i=0; i< viewId.Count();i++)   
+        {
+        ExecuteStatementL(KDeleteCaptionAndIconInfoAssociatedToViewData, numberOfValues, EValueInteger, viewId[i]);
+        DeleteFromTableL(KViewDataTable,KViewId,viewId[i]);
+        }
+    CleanupStack::PopAndDestroy(2, &viewId);
+    
+    _LIT(KDeleteCaptionAndIconInfo, "DELETE FROM CaptionAndIconInfo WHERE CaptionAndIconId IN \
+                        (SELECT CaptionAndIconId FROM LocalizableAppInfo WHERE AppUid=?);");
+    ExecuteStatementL(KDeleteCaptionAndIconInfo, numberOfValues, EValueInteger, aAppUid);
+        
+    DeleteFromTableL(KLocalizableAppInfoTable,KAppIdColumnName,aAppUid);
+        
+    DeleteFromTableL(KAppPropertiesTable,KAppIdColumnName,aAppUid);
+    DeleteFromTableL(KAppRegistrationInfoTable,KAppIdColumnName,aAppUid);
+                
+   }
+
+void CScrRequestImpl::DeleteApplicationEntryL(const RMessage2& aMessage)
+    {
+    TInt applicationUid = aMessage.Int0();
+    DeleteApplicationEntryInternalL(applicationUid);
+    }
+
+void CScrRequestImpl::DeleteAllAppsWithinPackageL(const RMessage2& aMessage)
+    {
+    TComponentId componentId = GetComponentIdFromMsgL(aMessage);
+    TSecureId clientSid = aMessage.SecureId();
+    if(componentId == 0 && clientSid != KSisRegistryServerSid)
+        {
+        DEBUG_PRINTF(_L8("ComponentId 0 corresponds to In-Rom Applications that cannot be deleted."));
+        User::Leave(KErrNotSupported);
+        }
+    
+    DeleteAllAppsWithinPackageInternalL(componentId);
+    }
+
+void CScrRequestImpl::DeleteAllAppsWithinPackageInternalL(const TComponentId aComponentId)
+    {
+    DEBUG_PRINTF2(_L8("Deleting all the applications associated with component (%d) from SCR."), aComponentId);
+    
+    // Fetching all the applications associated with the component
+    _LIT(KSelectAssociatedAppIds, "SELECT AppUid FROM AppRegistrationInfo WHERE ComponentId=?;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAssociatedAppIds);
+    stmt->BindIntL(1, aComponentId);
+        
+    while(stmt->ProcessNextRowL())
+        {
+        TInt appId = stmt->IntColumnL(0);
+        DeleteApplicationEntryInternalL(appId);
+        }
+        
+    // Release allocated memories
+    CleanupStack::PopAndDestroy(1, stmt); // stmt
+    }
+
+void CScrRequestImpl::DeleteFromTableL(const TDesC& aTableName, const TDesC& aAttribute, const TInt aValue) 
+    {
+    _LIT(KDeleteFromTable,"DELETE FROM %S WHERE %S=?;");
+    TInt formattedLen = aTableName.Length() + aAttribute.Length();
+    HBufC *statementStr = FormatStatementLC(KDeleteFromTable(), formattedLen, &aTableName, &aAttribute );
+    TInt numberOfValues = 1;
+    ExecuteStatementL(*statementStr, numberOfValues, EValueInteger, aValue);
+    DEBUG_PRINTF4(_L8("%S info where %S = %d has been deleted."), &aTableName, &aAttribute, aValue);
+    CleanupStack::PopAndDestroy(statementStr);
+	}
+
+CCaptionAndIconInfo* CScrRequestImpl::GetCaptionAndIconInfoL(TInt aCaptionAndIconId) const
+    {
+    _LIT(KGetLocalizedCaptionAndIconInfo, "Select Caption,NumberOfIcons,Iconfile from CaptionAndIconInfo where CaptionAndIconId = ?");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KGetLocalizedCaptionAndIconInfo);
+    stmt->BindIntL(1, aCaptionAndIconId);
+    if(stmt->ProcessNextRowL())
+        {
+        TPtrC caption(stmt->StrColumnL(0));
+        TInt noOfAppIcons(stmt->IntColumnL(1));
+        TPtrC iconFilename(stmt->StrColumnL(2));
+        CCaptionAndIconInfo* captionandIconInfo = CCaptionAndIconInfo::NewL(caption, iconFilename, noOfAppIcons);
+        DEBUG_PRINTF2(_L("The Caption for this App is %S "), captionandIconInfo->iCaption);
+        DEBUG_PRINTF2(_L("The Number of AppIcons for this App is %d "), captionandIconInfo->iNumOfAppIcons);
+        DEBUG_PRINTF2(_L("The Icon File Name this App is %S "), captionandIconInfo->iIconFileName);
+        CleanupStack::PopAndDestroy(stmt);
+        return captionandIconInfo;
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy(stmt);
+        return NULL;
+        }
+    }
+
+void CScrRequestImpl::GetViewsL(RPointerArray<Usif::CAppViewData>& aViewInfoArray, TUid aAppUid, TLanguage aLanguage) const
+    {                   
+        _LIT(KSelectViewDetailsWithAppUid, "SELECT Uid, ScreenMode, CaptionAndIconId FROM ViewData WHERE LocalAppInfoId IN(SELECT LocalAppInfoId FROM LocalizableAppInfo WHERE AppUid = ? AND Locale = ?);");
+        CStatement *stmt1 = iDbHandle->PrepareStatementLC(KSelectViewDetailsWithAppUid);
+        stmt1->BindIntL(1, aAppUid.iUid);
+        stmt1->BindIntL(2, aLanguage);
+        aViewInfoArray.ResetAndDestroy();
+        while(stmt1->ProcessNextRowL())
+            {
+            TUid uid;
+            uid.iUid = stmt1->IntColumnL(0); 
+            TInt screenMode(stmt1->IntColumnL(1)); 
+            TInt captionAndIconId(stmt1->IntColumnL(2));           
+            DEBUG_PRINTF2(_L("The view Uid for this App is 0x%x "),uid.iUid);            
+            DEBUG_PRINTF2(_L("The view Screen Mode for this App is %d "), screenMode);
+            CCaptionAndIconInfo *captionAndIconInfo = GetCaptionAndIconInfoL(captionAndIconId);                       
+            CAppViewData *viewdataInfo =  CAppViewData::NewLC(uid, screenMode, captionAndIconInfo);              
+            aViewInfoArray.AppendL(viewdataInfo);
+            CleanupStack::Pop(viewdataInfo); // viewdataInfo
+            }
+        CleanupStack::PopAndDestroy(1, stmt1); // stmt1           
+    }
+
+void CScrRequestImpl::GetViewSizeL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {    
+    GetViewsL(aSubsessionContext->iViewInfoArray,aAppUid,aSubsessionContext->iAppLanguageForCurrentLocale);
+    if(aSubsessionContext->iViewInfoArray.Count() == 0)
+      {
+      DEBUG_PRINTF2(_L8("No view details associated with the given AppUid,%d"),aAppUid);
+      }  
+    DEBUG_PRINTF2(_L8("Returning the view details' entry size of application(0x%x) for the current locale."), aAppUid);
+    WriteArraySizeL(aMessage, 1, aSubsessionContext->iViewInfoArray);
+    }
+
+void CScrRequestImpl::GetViewDataL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {
+    DEBUG_PRINTF(_L8("Returning the localized information entry data."));
+    WriteArrayDataL(aMessage, 0, aSubsessionContext->iViewInfoArray);
+    aSubsessionContext->iViewInfoArray.ResetAndDestroy(); 
+    }
+
+void CScrRequestImpl::OpenApplicationRegistrationViewL(const RMessage2& aMessage, CAppRegistrySubsessionContext*  aSubsessionContext) 
+    {
+    TLanguage requiredLanguage = TLanguage(aMessage.Int0());
+    if(requiredLanguage == KUnspecifiedLocale)
+        {
+        requiredLanguage = User::Language();
+        }
+    aSubsessionContext->iLanguage = requiredLanguage;
+   
+    CStatement* stmt;
+    _LIT(KAllAppIds," SELECT AppUid from AppRegistrationInfo"); 
+    stmt = iDbHandle->PrepareStatementLC(KAllAppIds);
+    aSubsessionContext->iAppUids.Close();
+    while(stmt->ProcessNextRowL())
+        {
+        aSubsessionContext->iAppUids.AppendL(TUid::Uid(stmt->IntColumnL(0)));                  
+        }
+    CleanupStack::PopAndDestroy(stmt);  
+    }
+
+void CScrRequestImpl::OpenApplicationRegistrationForAppUidsViewL(const RMessage2& aMessage, CAppRegistrySubsessionContext*  aSubsessionContext) 
+    {
+    TLanguage requiredLanguage = TLanguage(aMessage.Int0());
+    if(requiredLanguage == KUnspecifiedLocale)
+        {
+        requiredLanguage = User::Language();
+        }
+    aSubsessionContext->iLanguage = requiredLanguage;
+    
+    //Read languages need to pass
+    TInt bufSize=0;
+    bufSize = aMessage.GetDesMaxLength(1);
+    HBufC8* bufToHoldAppUids = HBufC8::NewLC(bufSize);
+    TPtr8 bufPtrDscToHoldAppUids = bufToHoldAppUids->Des();
+    aMessage.ReadL(1, bufPtrDscToHoldAppUids);
+    RDesReadStream inStream(bufPtrDscToHoldAppUids);
+    CleanupClosePushL(inStream);
+    TInt size = inStream.ReadInt32L();
+       
+    aSubsessionContext->iAppUids.Close();
+    for (TInt i =0; i<size ;i++)
+        {
+        TUid appUid = TUid::Uid(inStream.ReadInt32L());
+        if(CheckIfAppUidExistsL(appUid)) //Append only if AppUid is present in DB.
+            {
+            aSubsessionContext->iAppUids.AppendL(appUid);
+            }
+        }
+    
+    CleanupStack::PopAndDestroy(2,bufToHoldAppUids); //bufToHoldAppUids, inStream
+    }
+
+TBool CScrRequestImpl::GetApplicationRegistrationInfoL(CApplicationRegistrationData& aApplicationRegistration,TUid aAppUid) const
+    {
+    _LIT(KSelectAppRegInfo, "SELECT AppUid, ComponentId, AppFile, TypeId, Attributes, Hidden, Embeddable, NewFile, Launch, GroupName, DefaultScreenNumber  FROM AppRegistrationInfo WHERE AppUid = ?");
+           
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAppRegInfo);
+    stmt->BindIntL(1, aAppUid.iUid);
+    if(stmt->ProcessNextRowL())
+      {
+      aApplicationRegistration.iAppUid = TUid::Uid(stmt->IntColumnL(0)); 
+      HBufC* appFile = stmt->StrColumnL(2).AllocLC();
+      DeleteObjectZ(aApplicationRegistration.iAppFile);
+      aApplicationRegistration.iAppFile = appFile;
+      aApplicationRegistration.iTypeId = stmt->IntColumnL(3);
+      aApplicationRegistration.iCharacteristics.iAttributes = stmt->IntColumnL(4);
+      aApplicationRegistration.iCharacteristics.iAppIsHidden = stmt->IntColumnL(5);
+      aApplicationRegistration.iCharacteristics.iEmbeddability = (TApplicationCharacteristics::TAppEmbeddability)stmt->IntColumnL(6);
+      aApplicationRegistration.iCharacteristics.iSupportsNewFile = stmt->IntColumnL(7);
+      aApplicationRegistration.iCharacteristics.iLaunchInBackground = stmt->IntColumnL(8);
+      aApplicationRegistration.iCharacteristics.iGroupName = stmt->StrColumnL(9);
+      aApplicationRegistration.iDefaultScreenNumber = stmt->IntColumnL(10);
+     
+      DEBUG_PRINTF2(_L("The Uid for this App is 0x%x "),aApplicationRegistration.iAppUid);
+      DEBUG_PRINTF2(_L("The App File for this App is %S "), aApplicationRegistration.iAppFile);
+      DEBUG_PRINTF2(_L("The Attribute for this App is %d "), aApplicationRegistration.iCharacteristics.iAttributes);
+      DEBUG_PRINTF2(_L("The Hidden for this App is %d "), (aApplicationRegistration.iCharacteristics.iAppIsHidden));
+      DEBUG_PRINTF2(_L("The Embeddability for this App is %d "), aApplicationRegistration.iCharacteristics.iEmbeddability);
+      DEBUG_PRINTF2(_L("The New File for this App is %d "), aApplicationRegistration.iCharacteristics.iSupportsNewFile);
+      DEBUG_PRINTF2(_L("The Launch for this App is %d "), aApplicationRegistration.iCharacteristics.iLaunchInBackground);
+      DEBUG_PRINTF2(_L("The Group Name for this App is %S "),  &(aApplicationRegistration.iCharacteristics.iGroupName));
+      DEBUG_PRINTF2(_L("The Default screen number for this App is %d "), aApplicationRegistration.iDefaultScreenNumber);
+                      
+      CleanupStack::Pop(1);
+      }
+    else
+      {
+      DEBUG_PRINTF2(_L8("AppUid %d Not Found in th SCR"),aAppUid);       
+      CleanupStack::PopAndDestroy(stmt);
+      return EFalse;
+      }
+    CleanupStack::PopAndDestroy(stmt);
+    return ETrue;
+    }
+
+void CScrRequestImpl::GetFileOwnershipInfoL(CApplicationRegistrationData& aApplicationRegistration,TUid aAppUid) const
+    {
+    _LIT(KGetFileOwnershipInfo, "SELECT FileName FROM FileOwnershipInfo WHERE AppUid = ?");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KGetFileOwnershipInfo);
+    stmt->BindIntL(1, aAppUid.iUid);
+    aApplicationRegistration.iOwnedFileArray.ResetAndDestroy();
+    while(stmt->ProcessNextRowL())
+		{
+		HBufC *fileName = stmt->StrColumnL(0).AllocLC();
+        aApplicationRegistration.iOwnedFileArray.AppendL(fileName);        
+        DEBUG_PRINTF2(_L("The File Name for owned Files for this App is %S "), fileName);
+        CleanupStack::Pop();
+        }    
+    CleanupStack::PopAndDestroy(stmt);
+    }
+
+
+void CScrRequestImpl::GetDataTypesL(RPointerArray<Usif::CDataType>& aDataTypes,TInt aServiceId)const
+    {
+    _LIT(KGetDataType, "SELECT Priority, Type FROM DataType where ServiceId = ?");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KGetDataType);
+    stmt->BindIntL(1, aServiceId);
+    aDataTypes.ResetAndDestroy();
+    while(stmt->ProcessNextRowL())
+         {
+         Usif::CDataType* dataType = CDataType::NewLC();
+         dataType->iPriority = stmt->IntColumnL(0);
+         DeleteObjectZ(dataType->iType);
+         dataType->iType = stmt->StrColumnL(1).AllocLC();
+         DEBUG_PRINTF2(_L("The Service Info Priority for this App is %d "), dataType->iPriority);
+         DEBUG_PRINTF2(_L("The Service Type for this App is %S "), dataType->iType);
+         aDataTypes.AppendL(dataType);
+         CleanupStack::Pop(2,dataType); //for  iType and dataType 
+         }
+    CleanupStack::PopAndDestroy(stmt);
+    }
+
+void CScrRequestImpl::GetServiceInfoL(CApplicationRegistrationData& aApplicationRegistration, TUid aAppUid, TLanguage aLanguage) const
+    {
+    Usif::CServiceInfo* serviceInfo = NULL;     
+    TInt serviceId = 0;
+    _LIT(KGetServiceInfo, "SELECT ServiceId, Uid FROM ServiceInfo where AppUid = ?");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KGetServiceInfo);
+    stmt->BindIntL(1, aAppUid.iUid);
+    aApplicationRegistration.iServiceArray.ResetAndDestroy();
+    while(stmt->ProcessNextRowL())
+        {        
+        serviceInfo = Usif::CServiceInfo::NewLC();
+        serviceId = stmt->IntColumnL(0);
+        serviceInfo->iUid = TUid::Uid(stmt->IntColumnL(1));
+
+        DEBUG_PRINTF2(_L("The Service Uid for this App is 0x%x "), serviceInfo->iUid);
+        if(serviceInfo->iUid.iUid)
+            {
+            TLanguage storedLanguage = aLanguage;
+            GetNearestAppLanguageL(aLanguage, aAppUid, storedLanguage);
+            GetOpaqueDataArrayL(aAppUid, serviceInfo->iUid, serviceInfo->iOpaqueDataArray, storedLanguage);
+            }
+
+        //populate the data types for a service Id 
+        GetDataTypesL(serviceInfo->iDataTypes,serviceId);      
+               
+        aApplicationRegistration.iServiceArray.AppendL(serviceInfo);        
+        CleanupStack::Pop(serviceInfo); // serviceInfo 
+        }    
+    CleanupStack::PopAndDestroy(stmt);        
+    }
+
+void CScrRequestImpl::GetLocalizableAppInfoL(CApplicationRegistrationData& aApplicationRegistration,TUid aAppUid, TLanguage aLanguage)
+    {    
+    TLanguage storedLanguage;
+    if(GetNearestAppLanguageL(aLanguage, aAppUid, storedLanguage))
+        {
+        Usif::CLocalizableAppInfo* localizedAppInfo = NULL;        
+        _LIT(KGetServiceInfo, "Select ShortCaption,GroupName,Locale,CaptionAndIconId from LocalizableAppInfo where AppUid = ? and Locale = ?");
+       CStatement *stmt = iDbHandle->PrepareStatementLC(KGetServiceInfo);
+       stmt->BindIntL(1, aAppUid.iUid);
+       stmt->BindIntL(2, (TInt)storedLanguage);
+       if(stmt->ProcessNextRowL())
+           {
+           localizedAppInfo = Usif::CLocalizableAppInfo::NewLC();
+           DeleteObjectZ(localizedAppInfo->iShortCaption);
+           localizedAppInfo->iShortCaption = stmt->StrColumnL(0).AllocLC();
+           DeleteObjectZ(localizedAppInfo->iGroupName);
+           localizedAppInfo->iGroupName = stmt->StrColumnL(1).AllocLC();
+           localizedAppInfo->iApplicationLanguage = (TLanguage)stmt->IntColumnL(2);           
+          
+           DEBUG_PRINTF2(_L("The Short Caption for this App is %S "), localizedAppInfo->iShortCaption);
+           DEBUG_PRINTF2(_L("The Group name this App is %S "), localizedAppInfo->iGroupName);
+           DEBUG_PRINTF2(_L("The application language this App is %d "), localizedAppInfo->iApplicationLanguage);
+          
+           //populate localized caption and icon info
+           TInt captionAndIconID = stmt->IntColumnL(3);
+           localizedAppInfo->iCaptionAndIconInfo = GetCaptionAndIconInfoL(captionAndIconID);
+           //populate view data           
+           GetViewsL(localizedAppInfo->iViewDataList, aAppUid, storedLanguage);
+           
+           aApplicationRegistration.iLocalizableAppInfoList.AppendL(localizedAppInfo);
+           CleanupStack::Pop(3,localizedAppInfo);  //poping iGroupName, iShortCaption and localizedAppInfo
+           }
+        CleanupStack::PopAndDestroy(stmt);
+        }
+    else
+        {
+        DEBUG_PRINTF(_L8("No Nearest locale found for AppUid %d in the SCR"));
+        }    
+    }
+
+void CScrRequestImpl::GetAppRegOpaqueDataL(CApplicationRegistrationData& aApplicationRegistration, TUid aAppUid, TLanguage aLanguage) const
+    {
+    TLanguage storedLanguage = aLanguage;
+    GetNearestAppLanguageL(aLanguage, aAppUid, storedLanguage);
+    GetOpaqueDataArrayL(aAppUid, TUid::Null(), aApplicationRegistration.iOpaqueDataArray, storedLanguage);
+    }
+
+void CScrRequestImpl::NextApplicationRegistrationInfoSizeL(const RMessage2& aMessage, CApplicationRegistrationData*& aApplicationRegistration, CAppRegistrySubsessionContext*  aSubsessionContext)
+    {
+    DeleteObjectZ(aApplicationRegistration);
+    aApplicationRegistration = CApplicationRegistrationData::NewL();
+    if((aSubsessionContext->iAppRegIndex < aSubsessionContext->iAppUids.Count()))
+        {
+        TUid appUid = aSubsessionContext->iAppUids[aSubsessionContext->iAppRegIndex];
+            
+        //Populate the Application Registration Info
+        if(GetApplicationRegistrationInfoL(*aApplicationRegistration,appUid))
+            {
+            //Populate File ownership info           
+            GetFileOwnershipInfoL(*aApplicationRegistration,appUid);
+               
+            //Populate service info
+            GetServiceInfoL(*aApplicationRegistration, appUid, aSubsessionContext->iLanguage);
+            
+            //Populate localizable appinfo including caption and icon info 
+            //and view data and its caption and icon info.            
+            GetLocalizableAppInfoL(*aApplicationRegistration,appUid, aSubsessionContext->iLanguage);
+            
+			GetAppRegOpaqueDataL(*aApplicationRegistration,appUid, aSubsessionContext->iLanguage);
+
+            GetAppPropertiesInfoL(*aApplicationRegistration,appUid, aSubsessionContext->iLanguage); 
+            }
+        else
+            {
+            DeleteObjectZ(aApplicationRegistration);
+            }
+        
+        //Incrementing the index
+        aSubsessionContext->iAppRegIndex++;
+        WriteObjectSizeL(aMessage, 1, aApplicationRegistration);  
+        }
+    else
+        {
+        DEBUG_PRINTF(_L8("Reached the end of the view."));
+        WriteIntValueL(aMessage, 1, 0);                
+        DeleteObjectZ(aApplicationRegistration);
+        }
+    }
+
+void CScrRequestImpl::NextApplicationRegistrationInfoDataL(const RMessage2& aMessage, CApplicationRegistrationData*& aApplicationRegistration)
+    {
+    DEBUG_PRINTF(_L8("Returning the Application Registration data."));
+    WriteObjectDataL(aMessage, 0, aApplicationRegistration);
+    DeleteObjectZ(aApplicationRegistration); // Delete the object to prevent it to be resent.
+    }
+
+void CScrRequestImpl::GetAppOwnedFilesSizeL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {
+    DEBUG_PRINTF2(_L8("Returning the Application Owned files size for application 0X%x."), aAppUid);
+    _LIT(KSelectFileOwnershipInfoWithAppUid, "SELECT FileName FROM FileOwnershipInfo WHERE AppUid = ? ;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectFileOwnershipInfoWithAppUid);
+    stmt->BindIntL(1, aAppUid.iUid);
+    aSubsessionContext->iAppOwnedFiles.ResetAndDestroy();
+    while(stmt->ProcessNextRowL())
+       {
+       HBufC* fileName=stmt->StrColumnL(0).AllocLC();
+       aSubsessionContext->iAppOwnedFiles.AppendL(fileName);
+       CleanupStack::Pop(1, fileName);
+       }
+    CleanupStack::PopAndDestroy(1, stmt); 
+    if(0 == aSubsessionContext->iAppOwnedFiles.Count() )
+       {
+       DEBUG_PRINTF2(_L8("Application with AppUid :0X%x does not own any file "),aAppUid);
+       }  
+    WriteArraySizeL(aMessage, 1, aSubsessionContext->iAppOwnedFiles);
+    }
+
+void CScrRequestImpl::GetAppOwnedFilesDataL(const RMessage2& aMessage, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {
+    DEBUG_PRINTF(_L8("Returning the Application Owned files ."));
+    WriteArrayDataL(aMessage, 0, aSubsessionContext->iAppOwnedFiles);
+    aSubsessionContext->iAppOwnedFiles.ResetAndDestroy(); 
+    }
+
+void CScrRequestImpl::GetAppCharacteristicsL(const RMessage2& aMessage, TUid aAppUid) const
+    {
+    DEBUG_PRINTF2(_L8("Returning the characteristics of application 0X%x."), aAppUid);
+    _LIT(KSelectApplicationCapability, "SELECT Attributes, Hidden, Embeddable, NewFile, Launch, GroupName FROM AppRegistrationInfo WHERE AppUid = ? ;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectApplicationCapability);
+    stmt->BindIntL(1, aAppUid.iUid);
+    TApplicationCharacteristics appCharacteristics;
+    if(stmt->ProcessNextRowL())
+       {
+       appCharacteristics.iAttributes = stmt->IntColumnL(0);
+       appCharacteristics.iAppIsHidden  = stmt->IntColumnL(1);
+       appCharacteristics.iEmbeddability = (TApplicationCharacteristics::TAppEmbeddability)stmt->IntColumnL(2);
+       appCharacteristics.iSupportsNewFile  = stmt->IntColumnL(3); 
+       appCharacteristics.iLaunchInBackground  = stmt->IntColumnL(4);
+       appCharacteristics.iGroupName = stmt->StrColumnL(5);
+       TPckgC<TApplicationCharacteristics> infoPk(appCharacteristics);  
+       aMessage.WriteL(0, infoPk);
+       }
+    else
+       {
+       DEBUG_PRINTF2(_L8("No Data found for Application capability with AppUid :0X%x "),aAppUid);
+       }
+    CleanupStack::PopAndDestroy(1, stmt);
+    }
+
+void CScrRequestImpl::GetAppIconForFileNameL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {
+    DEBUG_PRINTF2(_L8("Returning the Icon File Name for application 0X%x."), aAppUid);
+    _LIT(KSelectIconFileNameForApplication, "SELECT IconFile FROM CaptionAndIconInfo WHERE CaptionAndIconId IN (SELECT CaptionAndIconId  FROM  LocalizableAppInfo WHERE AppUid = ? AND Locale = ?);");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectIconFileNameForApplication);
+    stmt->BindIntL(1, aAppUid.iUid);
+    stmt->BindIntL(2, aSubsessionContext->iAppLanguageForCurrentLocale);
+    if(stmt->ProcessNextRowL())
+       {
+       TFileName fileName = stmt->StrColumnL(0);
+       TPckgC<TFileName> pckg(fileName);
+       aMessage.WriteL(0, pckg);
+       }
+    else
+       {
+       DEBUG_PRINTF2(_L8("No Icon file found for Application with AppUid :0X%x "),aAppUid);       
+       }
+    CleanupStack::PopAndDestroy(1, stmt); 
+    }
+
+void CScrRequestImpl::GetAppViewIconFileNameL(const RMessage2& aMessage, TUid aAppUid, CRegInfoForApplicationSubsessionContext *aSubsessionContext) const
+    {
+    TUid viewUid;
+    viewUid.iUid= aMessage.Int0();
+    DEBUG_PRINTF2(_L8("Returning the view Icon File Name size for application 0X%x."), aAppUid);
+    _LIT(KSelectIconFileNameFromViewForApplication, "SELECT IconFile FROM CaptionAndIconInfo WHERE CaptionAndIconId IN (SELECT CaptionAndIconId  FROM ViewData WHERE Uid = ? AND LocalAppInfoId IN ( SELECT LocalAppInfoId  FROM LocalizableAppInfo WHERE AppUid = ? AND Locale = ?));");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectIconFileNameFromViewForApplication);
+    stmt->BindIntL(1, viewUid.iUid);
+    stmt->BindIntL(2, aAppUid.iUid);
+    stmt->BindIntL(3, aSubsessionContext->iAppLanguageForCurrentLocale);
+    if(stmt->ProcessNextRowL())
+       {
+       TFileName fileName = stmt->StrColumnL(0);
+       TPckgC<TFileName> pckg(fileName);
+       aMessage.WriteL(1, pckg);
+       }
+    else
+       {
+       DEBUG_PRINTF3(_L8("No view Icon file found for Application with AppUid :0X%x and View ID :0X%x "),aAppUid,viewUid);
+       }
+    CleanupStack::PopAndDestroy(1, stmt); 
+    }
+
+void CScrRequestImpl::GetAppServiceInfoSizeL(const RMessage2& aMessage, CApplicationRegInfoSubsessionContext *aSubsessionContext ) const
+    {
+    CAppServiceInfoFilter *filter = ReadObjectFromMessageLC<CAppServiceInfoFilter>(aMessage, 0);
+    TLanguage locale = (TLanguage)aMessage.Int1();  
+
+    switch(filter->iSetFlag)
+        {
+        case CAppServiceInfoFilter::EGetServiceInfoForApp:
+            {
+            GetAppServicesL(filter->iAppUid, aSubsessionContext->iServiceInfoArray, locale);                    
+            break;
+            }
+        case CAppServiceInfoFilter::EGetServiceImplementationForServiceUid:
+            {            
+            GetServiceImplementationsL(filter->iServiceUid, aSubsessionContext->iServiceInfoArray, locale);
+            break;
+            }
+        case CAppServiceInfoFilter::EGetServiceImplementationForServiceUidAndDatatType:
+            {            
+            GetServiceImplementationsL(filter->iServiceUid, *(filter->iDataType), aSubsessionContext->iServiceInfoArray, locale);
+            break;
+            }
+        case CAppServiceInfoFilter::EGetOpaqueDataForAppWithServiceUid:
+            {      
+            GetAppServiceOpaqueDataL(filter->iAppUid, filter->iServiceUid, aSubsessionContext->iServiceInfoArray, locale);
+            break;
+            }
+        default:
+            {
+            DEBUG_PRINTF(_L8("No match found for the query requested."));
+            User::Leave(KErrArgument);
+            }
+        }
+    if(aSubsessionContext->iServiceInfoArray.Count()== 0)
+        {    
+        DEBUG_PRINTF(_L8("No service info associated with the given parameters found"));
+        User::Leave(KErrNotFound);
+        }
+    WriteArraySizeL(aMessage, 2, aSubsessionContext->iServiceInfoArray);
+    CleanupStack::PopAndDestroy(filter);
+    }
+
+void CScrRequestImpl::GetAppServiceInfoDataL(const RMessage2& aMessage, CApplicationRegInfoSubsessionContext *aSubsessionContext) const
+    {
+    DEBUG_PRINTF(_L8("Returning the service information details."));
+    WriteArrayDataL(aMessage, 0, aSubsessionContext->iServiceInfoArray);
+    aSubsessionContext->iServiceInfoArray.ResetAndDestroy(); 
+    }
+
+void CScrRequestImpl::GetAppServicesL(TUid aAppUid, RPointerArray<
+        CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const
+    {
+    DEBUG_PRINTF2(_L8("Returning the size of the service info details entry of application (%d)."), aAppUid.iUid);
+    _LIT(KSelectMatchingServiceInfo, "SELECT ServiceId, Uid FROM ServiceInfo WHERE AppUid=?;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectMatchingServiceInfo);
+    stmt->BindIntL(1, aAppUid.iUid);
+    aServiceInfoArray.ResetAndDestroy();
+    while (stmt->ProcessNextRowL())
+        {
+        /* AppProperties is being used for OpaqueData of both AppRegInfo
+         * and ServiceInfo. So add to ServiceInfoArray only if serviceId is not 0
+         */
+        if (stmt->IntColumnL(1))
+            {
+            CServiceInfo* serviceInfo = CServiceInfo::NewLC();
+            serviceInfo->iUid = TUid::Uid(stmt->IntColumnL(1));
+
+            TLanguage finalLocale = KUnspecifiedLocale;
+            GetNearestAppLanguageL(aLocale, aAppUid, finalLocale);
+            GetOpaqueDataArrayL(aAppUid, serviceInfo->iUid, serviceInfo->iOpaqueDataArray, finalLocale);
+            GetDataTypesL(serviceInfo->iDataTypes, stmt->IntColumnL(0));
+            aServiceInfoArray.AppendL(serviceInfo);
+            CleanupStack::Pop(serviceInfo);
+            }
+        }
+    // Release allocated memories
+    CleanupStack::PopAndDestroy(1, stmt); // stmt
+    }
+
+void CScrRequestImpl::GetServiceImplementationsL(TUid aServiceUid,
+        RPointerArray<CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const
+    {
+    if (aServiceUid.iUid)
+        {
+        DEBUG_PRINTF2(_L8("Returning the size of the service info details entry associated with service Uid (%d)."), aServiceUid.iUid);
+        _LIT(KSelectMatchingServiceInfo, "SELECT ServiceId, Uid, AppUid FROM ServiceInfo WHERE Uid=?;");
+        CStatement *stmt = iDbHandle->PrepareStatementLC(
+                KSelectMatchingServiceInfo);
+        stmt->BindIntL(1, aServiceUid.iUid);
+        aServiceInfoArray.ResetAndDestroy();
+        while (stmt->ProcessNextRowL())
+            {
+            CServiceInfo* serviceInfo = CServiceInfo::NewLC();
+            
+            serviceInfo->iUid = TUid::Uid(stmt->IntColumnL(1));
+            TUid appUid = TUid::Uid(stmt->IntColumnL(2));
+            TLanguage finalLocale = KUnspecifiedLocale;
+            GetNearestAppLanguageL(aLocale, appUid, finalLocale);
+            GetOpaqueDataArrayL(appUid, serviceInfo->iUid, serviceInfo->iOpaqueDataArray, finalLocale);
+            GetDataTypesL(serviceInfo->iDataTypes, stmt->IntColumnL(0));
+            
+            aServiceInfoArray.AppendL(serviceInfo);
+            CleanupStack::Pop(serviceInfo);
+            }
+        // Release allocated memories
+        CleanupStack::PopAndDestroy(1, stmt); // stmt
+        }
+    }
+
+void CScrRequestImpl::GetServiceImplementationsL(TUid aServiceUid,
+        TDesC& aDataType, RPointerArray<CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const
+    {
+    if (aServiceUid.iUid)
+        {
+        DEBUG_PRINTF3(_L8("Returning the size of the service info details entry associated with service Uid (%d) and datatype (%S)."), aServiceUid.iUid, &aDataType);
+        _LIT(KSelectMatchingServiceInfo, "SELECT Uid, Priority, Type, AppUid FROM (ServiceInfo JOIN DataType ON ServiceInfo.ServiceId = DataType.ServiceId) WHERE Uid=? AND Type=?;");
+        CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectMatchingServiceInfo);
+        stmt->BindIntL(1, aServiceUid.iUid);
+        stmt->BindStrL(2, aDataType);
+        aServiceInfoArray.ResetAndDestroy();
+        while (stmt->ProcessNextRowL())
+            {
+            CServiceInfo* serviceInfo = CServiceInfo::NewLC();
+            
+            serviceInfo->iUid = TUid::Uid(stmt->IntColumnL(0));
+            
+            TUid appUid = TUid::Uid(stmt->IntColumnL(3));
+            TLanguage finalLocale = KUnspecifiedLocale;
+            GetNearestAppLanguageL(aLocale, appUid, finalLocale);
+            GetOpaqueDataArrayL(appUid, serviceInfo->iUid, serviceInfo->iOpaqueDataArray, finalLocale);
+            TInt priority(stmt->IntColumnL(1));
+            TPtrC datatype(stmt->StrColumnL(2));
+            CDataType* dataType = CDataType::NewL(priority,datatype);
+            CleanupStack::PushL(dataType);
+            serviceInfo->iDataTypes.AppendL(dataType);
+            CleanupStack::Pop(dataType);
+            aServiceInfoArray.AppendL(serviceInfo);
+            CleanupStack::Pop(serviceInfo);
+            }
+        // Release allocated memories
+        CleanupStack::PopAndDestroy(1, stmt); // stmt
+        }
+    }
+
+
+void CScrRequestImpl::GetAppServiceOpaqueDataL(TUid aAppUid,
+        TUid aServiceUid, RPointerArray<CServiceInfo>& aServiceInfoArray, TLanguage aLocale) const
+    {
+    if (aServiceUid.iUid)
+        {
+        DEBUG_PRINTF3(_L8("Returning the size of the service info details entry associated with app Uid (%d) and service Uid (%d)."), aAppUid.iUid, aServiceUid.iUid);
+        _LIT(KSelectMatchingServiceInfo, "SELECT ServiceId, Uid FROM ServiceInfo WHERE AppUid=? AND Uid=? ;");
+        CStatement *stmt = iDbHandle->PrepareStatementLC(
+                KSelectMatchingServiceInfo);
+        stmt->BindIntL(1, aAppUid.iUid);
+        stmt->BindIntL(2, aServiceUid.iUid);
+        aServiceInfoArray.ResetAndDestroy();
+        while (stmt->ProcessNextRowL())
+            {
+            CServiceInfo* serviceInfo = CServiceInfo::NewLC();
+            
+            serviceInfo->iUid = TUid::Uid(stmt->IntColumnL(1));
+            TLanguage finalLocale = KUnspecifiedLocale;
+            GetNearestAppLanguageL(aLocale, aAppUid, finalLocale);
+            GetOpaqueDataArrayL(aAppUid, serviceInfo->iUid, serviceInfo->iOpaqueDataArray, finalLocale);
+            GetDataTypesL(serviceInfo->iDataTypes, stmt->IntColumnL(0));
+
+            aServiceInfoArray.AppendL(serviceInfo);
+            CleanupStack::Pop(serviceInfo);
+            }
+        // Release allocated memories
+        CleanupStack::PopAndDestroy(1, stmt); // stmt
+        }
+    }
+
+void CScrRequestImpl::GetOpaqueDataArrayL(TUid aAppUid, TUid aServiceUid, RPointerArray<COpaqueData>& aOpaqueDataArray, TLanguage aLanguage) const
+    {
+    _LIT(KOpaqueData, "SELECT StrValue FROM AppProperties where Name = ? AND ServiceUid = ?  AND AppUid = ? AND Locale = ?");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KOpaqueData);
+    
+    stmt->BindStrL(1, _L("OpaqueData"));
+    stmt->BindIntL(2, aServiceUid.iUid);
+    stmt->BindIntL(3, aAppUid.iUid);
+    stmt->BindIntL(4, (TInt)aLanguage);
+    
+    aOpaqueDataArray.ResetAndDestroy();
+    while (stmt->ProcessNextRowL())
+        {
+        Usif::COpaqueData* opaqueData = Usif::COpaqueData::NewLC();
+        opaqueData->iLanguage = aLanguage;
+        DeleteObjectZ(opaqueData->iOpaqueData);
+        opaqueData->iOpaqueData = stmt->BinaryColumnL(0).AllocL();
+        DEBUG_PRINTF2(_L("Locale for opaque entry for this App is %d "), opaqueData->iLanguage);
+        aOpaqueDataArray.AppendL(opaqueData);
+        CleanupStack::Pop(opaqueData);
+        }
+    CleanupStack::PopAndDestroy(stmt);
+    }
+
+TBool CScrRequestImpl::GetComponentIdForAppInternalL(TUid aAppUid, TComponentId& aComponentId) const
+    {
+    return GetIntforConditionL(KComponentIdColumnName, KAppRegistrationInfoTable, KAppIdColumnName, aAppUid.iUid, aComponentId);
+    }
+
+void CScrRequestImpl::GetComponentIdForAppL(const RMessage2& aMessage) const
+    {
+    DEBUG_PRINTF(_L8("Returning the componentId that the given appUid is associated with."));
+    TUid appUid;
+    TPckg<TUid> appUidPckg(appUid);
+    aMessage.ReadL(0,appUidPckg);
+    TComponentId compId;
+        
+    if(GetComponentIdForAppInternalL(appUid, compId))
+        {
+        TPckg<TComponentId> compIdPckg(compId);
+        aMessage.WriteL(1, compIdPckg);
+        }
+    else
+        {
+        DEBUG_PRINTF(_L8("The given app doesnot exist"));
+        User::Leave(KErrNotFound);
+        }
+    }
+
+void CScrRequestImpl::GetAppUidsForComponentSizeL(const RMessage2& aMessage) const
+    {
+    DEBUG_PRINTF(_L8("Returning the size of the list of AppUids associated with the component."));
+    TComponentId compId = aMessage.Int0();
+
+    _LIT(KSelectAppUids, "SELECT AppUid FROM AppRegistrationInfo WHERE ComponentId=?;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAppUids);
+    stmt->BindIntL(1, compId);
+    iComponentAppUids.Close();
+    while(stmt->ProcessNextRowL())
+        {
+        TInt appUid(stmt->IntColumnL(0));
+        iComponentAppUids.AppendL(TUid::Uid(appUid));
+        }
+    // Release allocated memories
+    CleanupStack::PopAndDestroy(1, stmt); // stmt
+    
+    if(iComponentAppUids.Count()== 0)
+        {    
+        DEBUG_PRINTF(_L8("No apps associated with the given componentId found"));
+        User::Leave(KErrNotFound);
+        }
+
+    WriteArraySizeL(aMessage, 1, iComponentAppUids);
+    }
+
+void CScrRequestImpl::GetAppUidsForComponentDataL(const RMessage2& aMessage) const
+    {
+    DEBUG_PRINTF(_L8("Returning the list of appUids associated with the component."));
+    WriteArrayDataL(aMessage, 0, iComponentAppUids);
+    iComponentAppUids.Reset(); 
+    }
+
+void CScrRequestImpl::GetApplicationInfoL(const RMessage2& aMessage) 
+    {
+    TUid appUid = TUid::Uid(aMessage.Int0());
+    TLanguage locale = (TLanguage)aMessage.Int1();
+    if(locale == KUnspecifiedLocale)
+        {
+        locale = User::Language();
+        }
+    TAppRegInfo appRegInfo;
+    TPckg<TAppRegInfo> appRegInfoPckg(appRegInfo);
+    aMessage.ReadL(2, appRegInfoPckg);
+
+    _LIT(KNull,"");
+    DEBUG_PRINTF2(_L8("Returning the basic information contained in TAppRegInfo for application 0x%x."), appUid.iUid);
+    _LIT(KSelectAppInfo, "SELECT AppFile FROM AppRegistrationInfo WHERE AppUid = ?;");
+    CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAppInfo);
+    stmt->BindIntL(1, appUid.iUid);
+    if(stmt->ProcessNextRowL())
+        {
+        appRegInfo.iUid = appUid;
+        appRegInfo.iFullName.Copy(stmt->StrColumnL(0));
+        TLanguage finallocale = KUnspecifiedLocale;
+        if(GetNearestAppLanguageL(locale,appRegInfo.iUid, finallocale))
+            {
+            GetCaptionAndShortCaptionInfoForLocaleL(appRegInfo.iUid, finallocale, appRegInfo.iShortCaption, appRegInfo.iCaption);
+            }
+        else
+            {
+            appRegInfo.iCaption.Copy(KNull);
+            appRegInfo.iShortCaption.Copy(KNull);            
+            }
+        aMessage.WriteL(2, appRegInfoPckg);
+        }
+    else
+        {
+        appRegInfo.iUid = TUid::Null();
+        DEBUG_PRINTF2(_L8("Application 0x%x not found."), appUid.iUid);
+        }
+    CleanupStack::PopAndDestroy(stmt); 
+    }
+
+void CScrRequestImpl::GetCaptionAndShortCaptionInfoForLocaleL(TUid aAppUid, TLanguage aLocale, TAppCaption& aShortCaption, TAppCaption& aCaption)
+    {
+    _LIT(KGetShortCaptionAndCaptionAndIconId,"SELECT CaptionAndIconId, ShortCaption FROM LocalizableAppInfo WHERE AppUid = ? AND Locale = ?;");                                      
+    CStatement *stmt1 = iDbHandle->PrepareStatementLC(KGetShortCaptionAndCaptionAndIconId);
+    stmt1->BindIntL(1, aAppUid.iUid);
+    stmt1->BindIntL(2, aLocale);
+    stmt1->ProcessNextRowL();
+    aShortCaption.Copy(stmt1->StrColumnL(1));
+    TInt captionAndIconId = stmt1->IntColumnL(0);
+    if(captionAndIconId)
+        {
+        _LIT(KGetCaption,"SELECT Caption FROM CaptionAndIconInfo WHERE CaptionAndIconId = ?;");                                      
+        CStatement *stmt2 = iDbHandle->PrepareStatementLC(KGetCaption);
+        stmt2->BindIntL(1, captionAndIconId);
+        stmt2->ProcessNextRowL();
+        aCaption.Copy(stmt2->StrColumnL(0));
+        CleanupStack::PopAndDestroy(stmt2);
+        }
+        CleanupStack::PopAndDestroy(stmt1);
+    }
+
+void CScrRequestImpl::GetAppPropertiesInfoL(CApplicationRegistrationData& aApplicationRegistration,TUid aAppUid, TLanguage aLanguage)
+    {
+    TLanguage appSupportedLanguage;
+    if(GetNearestAppLanguageL(aLanguage, aAppUid, appSupportedLanguage))
+        {
+        _LIT(KGetAppPropertiesInfo, "SELECT Name, IntValue, StrValue, Locale, IsStr8Bit FROM AppProperties WHERE (AppUid =?) AND (Locale= ? OR Locale= ?)");
+        CStatement *stmt = iDbHandle->PrepareStatementLC(KGetAppPropertiesInfo);
+        stmt->BindIntL(1, aAppUid.iUid);
+        stmt->BindIntL(2, Usif::KNonLocalized);
+        stmt->BindIntL(3, (TInt)appSupportedLanguage);
+        while(stmt->ProcessNextRowL())
+            {
+            TPtrC name(stmt->StrColumnL(0));
+            CPropertyEntry *entry = GetPropertyEntryL(*stmt, name, 1); // aStartingIndex=1
+            DEBUG_PRINTF2(_L("Value read for Property %S "), &name);
+            CleanupStack::PushL(entry);
+            aApplicationRegistration.iAppPropertiesArray.AppendL(entry);
+            CleanupStack::Pop(entry);   // because array is now owner
+            } 
+        CleanupStack::PopAndDestroy(stmt);    
+        }
+    else
+        {
+        DEBUG_PRINTF2(_L8("No Nearest locale found for AppUid %d in the SCR"), aAppUid);
+        }    
+    }
+
+void CScrRequestImpl::GetApplicationLaunchersSizeL(const RMessage2& aMessage) const
+    {
+    DEBUG_PRINTF(_L8("Returning the size of the list of application launchers"));
+   
+    _LIT(KSelectLauncher, "SELECT SoftwareTypeId, LauncherExecutable FROM SoftwareTypes;");
+    CStatement* stmt = iDbHandle->PrepareStatementLC(KSelectLauncher);
+        
+    while(stmt->ProcessNextRowL())
+        {
+        CLauncherExecutable* launcher = CLauncherExecutable::NewLC();
+        launcher->iTypeId = stmt->IntColumnL(0);
+        DeleteObjectZ(launcher->iLauncher);
+        launcher->iLauncher = stmt->StrColumnL(1).AllocL();
+        iLaunchers.AppendL(launcher);
+        CleanupStack::Pop(launcher);
+        }    
+    CleanupStack::PopAndDestroy(stmt);
+    
+    WriteArraySizeL(aMessage, 1, iLaunchers);
+    }
+
+void CScrRequestImpl::GetApplicationLaunchersDataL(const RMessage2& aMessage) const
+    {
+    DEBUG_PRINTF(_L8("Returning the list of application launchers"));
+    WriteArrayDataL(aMessage, 0, iLaunchers);    
+    iLaunchers.ResetAndDestroy();
+    }
+
+
+void CScrRequestImpl::GenerateNonNativeAppUidL(const RMessage2& aMessage)
+    {    
+    //Get access to the repository instance.
+    CScrRepository* scrRepository = CScrRepository::GetRepositoryInstanceL();
+    
+    //Number of ranges defined in the cenrep file
+    TInt rangeCount = scrRepository->AppUidRangeCountL();
+        
+    TUid rangeBegin = TUid::Null();
+    TUid rangeEnd = TUid::Null();
+    TUid generatedUid = TUid::Null(); // Used to store final result.
+    
+    for(TInt counter = 1; counter <= rangeCount; counter++)
+        {
+        // Retrieve the range. 
+        TRAPD(err, scrRepository->GetAppUidRangeL(counter, rangeBegin, rangeEnd));
+        
+        if(KErrNotFound == err)
+            continue;// Incorrect range, try the next one.
+        if(rangeBegin.iUid >= rangeEnd.iUid)
+            continue; // Incorrect range, try the next one.
+        
+        _LIT(KSelectAppUids, "SELECT AppUid FROM AppRegistrationInfo WHERE AppUid >= ? AND AppUid <= ? ORDER BY AppUid;");
+        
+        CStatement *stmt = iDbHandle->PrepareStatementLC(KSelectAppUids);
+        stmt->BindIntL(1, rangeBegin.iUid);
+        stmt->BindIntL(2, rangeEnd.iUid);
+        
+        TInt prevUid = rangeBegin.iUid-1;
+        while(stmt->ProcessNextRowL())
+            {
+            TInt currUid(stmt->IntColumnL(0));
+            if(currUid > prevUid+1)
+                break;
+            prevUid = currUid;
+            }
+        
+        if(prevUid != rangeEnd.iUid) //If the range is not full
+            {
+            generatedUid = TUid::Uid(prevUid+1);
+            CleanupStack::PopAndDestroy(1, stmt);
+            break;
+            }
+        
+        // Release allocated memories
+        CleanupStack::PopAndDestroy(1, stmt);
+        }
+    
+    TPckg<TUid> generatedUidPckg(generatedUid); 
+    aMessage.WriteL(0, generatedUidPckg);    
+    }
--- a/installationservices/swcomponentregistry/source/server/scrserver.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/source/server/scrserver.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -32,9 +32,7 @@
 
 using namespace Usif;
 
-_LIT_SECURE_ID(KSisRegistryServerSid, 0x10202DCA); 
-
-static const TUint scrRangeCount = 11;
+static const TUint scrRangeCount = 13;
 
 static const TInt scrRanges[scrRangeCount] =
 	{
@@ -42,13 +40,15 @@
 	CScsServer::EBaseSession,	 // Range-1 - EBaseSession to EBaseMustAllow exclusive.
 	CScsServer::EBaseSession | EGetSingleComponentSize, // Modification and transaction APIs have custom checks
 	CScsServer::EBaseSession | EGetComponentIdListSize, // Component-specific APIs are free for all
-	CScsServer::EBaseSession | EGetIsMediaPresent, // Getting all component IDs is restricted to ReadUserData
-	CScsServer::EBaseSession | ESetScomoState, // Component-specific APIs are free for all
-	CScsServer::EBaseSession | EGetPluginUidWithMimeType, // SetScomoState has custom checks (as with the rest of modification APIs)
-	CScsServer::EBaseSession | EAddSoftwareType, // File filter sub-sessions and plugin-fetching APIs are free for all
+	CScsServer::EBaseSession | EGetApplicationLaunchersSize, // Getting all component IDs is restricted to ReadUserData
+	CScsServer::EBaseSession | EGetIsMediaPresent, // Only allowed by apparc
+	CScsServer::EBaseSession | EAddApplicationEntry, // Component-specific APIs are free for all
+	CScsServer::EBaseSession | EGetPluginUidWithMimeType, // Custom checks (as with the rest of modification APIs)
+	CScsServer::EBaseSession | EAddSoftwareType, // File filter sub-sessions and plugin-fetching APIs are free for all	
 	CScsServer::EBaseSubSession | EOpenComponentsView, // Software Type management APIs are only allowed for SWI 
 	CScsServer::EBaseSubSession | EOpenFileList, // Component filter sub-sessions require ReadUserData	
-	CScsServer::EBaseMustAllow // File filter sub-session are free for all, the rest of the range is reserved for SCS, and must be allowed( EBaseMustAllow to KMaxTInt inclusive)
+	CScsServer::EBaseSubSession | EOpenApplicationRegistrationInfoView, // Always pass
+	CScsServer::EBaseMustAllow // Application Registration view to be only allowed by apparc, the rest of the range is reserved for SCS, and must be allowed( EBaseMustAllow to KMaxTInt inclusive)	
 	};
 
 static const TUint8 scrElementsIndex[scrRangeCount] =
@@ -57,19 +57,22 @@
 	CPolicyServer::ECustomCheck,
 	CPolicyServer::EAlwaysPass,
 	0, // Require ReadUserData
+	2, // Only Apparc process can invoke	
 	CPolicyServer::EAlwaysPass,
 	CPolicyServer::ECustomCheck,
-	CPolicyServer::EAlwaysPass,
-	1, // Only SWI process can invoke
+	CPolicyServer::EAlwaysPass,	
+	1, // Only SWI process can invoke	
 	0, // Require ReadUserData
 	CPolicyServer::EAlwaysPass,
+	2, // Only Apparc process can invoke
 	CPolicyServer::EAlwaysPass 
 	};							
 
 static const CPolicyServer::TPolicyElement scrElements[] =
 	{
 	{_INIT_SECURITY_POLICY_C1(ECapabilityReadUserData), CPolicyServer::EFailClient},
-	{_INIT_SECURITY_POLICY_S0(KSisRegistryServerSid.iId), CPolicyServer::EFailClient}
+	{_INIT_SECURITY_POLICY_S0(KSisRegistryServerSid.iId), CPolicyServer::EFailClient},
+	{_INIT_SECURITY_POLICY_S0(KApparcServerSid.iId), CPolicyServer::EFailClient}	
 	};
 
 static const CPolicyServer::TPolicy scrPolicy =
@@ -187,29 +190,52 @@
 	return CScrSession::NewL(*this, aMessage);
 	}
 
-CPolicyServer::TCustomResult CScrServer::CheckComponentIdMatchingEnvironmentL(const RMessage2& aMsg)
+CPolicyServer::TCustomResult CScrServer::CheckComponentIdMatchingEnvironmentL(const RMessage2& aMsg, TBool aCheckForSingleApp)
 	{	
-	TComponentId componentId = CScrRequestImpl::GetComponentIdFromMsgL(aMsg); 
-	TSecureId clientSid = aMsg.SecureId();
-	
-	TSecureId installerSid (0);
-	if(iRequestImpl->GetInstallerSidForComponentL(componentId, installerSid))
-		{
-		if (clientSid == installerSid)
-			return EPass;
-		}
+	TComponentId componentId = 0;
+	if(aCheckForSingleApp)
+	    {
+        // Get the application uid from RMessage2
+        TInt applicationUid = aMsg.Int0();        
+        // Get the component id for the application            
+        if(!iRequestImpl->GetComponentIdForAppInternalL(TUid::Uid(applicationUid), componentId))
+            return EFail;
+	    }
+	else
+	    {
+	    componentId = CScrRequestImpl::GetComponentIdFromMsgL(aMsg);
+	    }
 	
-	// Minor optimisation - in most legal cases, the installer is the one which should be doing operations,
-	// so we check it first to reduce the second query
-	TSecureId executionEnvironmentSid (0);
-	if(iRequestImpl->GetExecutionEnvSidForComponentL(componentId, executionEnvironmentSid))	
-		{
-		if (clientSid == executionEnvironmentSid)
-			return EPass;
-		}
+	TSecureId clientSid = aMsg.SecureId();
+
+    if (componentId == 0)
+        {
+        if (clientSid == KSisRegistryServerSid)
+            return EPass;
+        }   
+    
+    TBool vaildSid = EFalse;
+	RArray<TSecureId> installerSids;
+	CleanupClosePushL(installerSids);
+	if (iRequestImpl->GetInstallerOrExecutionEnvSidsForComponentL(componentId, installerSids))
+	    {
+        TInt count = installerSids.Count();
+        for (TInt i = 0; i < count; i++)
+            {
+            if (clientSid == installerSids[i])
+                {
+                vaildSid = ETrue;
+                break;
+                }
+            }
+	    }
+	CleanupStack::PopAndDestroy(&installerSids);
+	
+	if (vaildSid)
+		return EPass;
 			
-	DEBUG_PRINTF5(_L("Neither installer nor execution environment matched the client while checking for component-matching environment. Installer SID %d, execution environment SID %d, client SID %d, component ID %d"), 
-			TUint32(installerSid), TUint32(executionEnvironmentSid), TUint32(clientSid), componentId);
+	DEBUG_PRINTF3(_L("Neither installer nor execution environment matched the client while checking for component-matching environment. Client SID %d, Component ID %d"), 
+			TUint32(clientSid), componentId);
 	return EFail;
 	}
 	
@@ -235,22 +261,29 @@
 CPolicyServer::TCustomResult CScrServer::CheckSoftwareNameMatchingEnvironmentL(const RMessage2& aMsg)
 	{
 	HBufC* softwareTypeName = CScrRequestImpl::GetSoftwareTypeNameFromMsgLC(aMsg);
+	TSecureId clientSid = aMsg.SecureId();
 	
-	TSecureId installerSid, executionEnvSid;	
-	if(!iRequestImpl->GetSidsForSoftwareTypeL(softwareTypeName, installerSid, executionEnvSid))
-		{
-		DEBUG_PRINTF2(_L("SID couldn't be found for software type (%S)!"), softwareTypeName);
-		CleanupStack::PopAndDestroy(softwareTypeName);
-		return EFail;
-		}
-	CleanupStack::PopAndDestroy(softwareTypeName);
+	TBool vaildSid = EFalse;
+    RArray<TSecureId> installerSids;
+    CleanupClosePushL(installerSids);
+    if (iRequestImpl->GetSidsForSoftwareTypeL(softwareTypeName, installerSids))
+        {
+        TInt count = installerSids.Count();
+        for (TInt i = 0; i < count; i++)
+            {
+            if (clientSid == installerSids[i])
+                {
+                vaildSid = ETrue;
+                break;
+                }
+            }
+        }
+    CleanupStack::PopAndDestroy(2, softwareTypeName);
 	
-	TSecureId clientSid = aMsg.SecureId();
-	if (clientSid == installerSid || clientSid == executionEnvSid)
+	if (vaildSid)	
 		return EPass;	
 
-	DEBUG_PRINTF4(_L("Neither installer nor execution environment matched the client while checking for component-matching environment. Installer SID %d, execution environment SID %d, client SID %d"), 
-			TUint32(installerSid), TUint32(executionEnvSid), TUint32(clientSid));	
+	DEBUG_PRINTF(_L("Client Sid is not a valid one software type!"));	
 	return EFail;
 	}
 
@@ -337,6 +370,11 @@
 		case ESetIsComponentKnownRevoked:
 		case ESetIsComponentOriginVerified:		
 			return CheckCommonComponentPropertySettableL(aMsg, ECapabilityWriteDeviceData);
+		case EAddApplicationEntry:
+		case EDeleteApplicationEntries:
+			return CheckComponentIdMatchingEnvironmentL(aMsg);
+		case EDeleteApplicationEntry:
+		    return CheckComponentIdMatchingEnvironmentL(aMsg, ETrue);
 		default:
 			DEBUG_PRINTF2(_L("Unknown function was invoked in CustomSecurityCheck - %d"), functionId);							
 			__ASSERT_DEBUG(0, User::Invariant());
--- a/installationservices/swcomponentregistry/source/server/scrsession.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/source/server/scrsession.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -309,6 +309,34 @@
 		case EGetLocalizedComponentData:
 		    server->RequestImpL()->GetComponentLocalizedEntryDataL(aMessage);
 		    break;
+		case EAddApplicationEntry:
+		    server->RequestImpL()->AddApplicationEntryL(aMessage);
+		    break;
+		case EDeleteApplicationEntries:
+		    server->RequestImpL()->DeleteAllAppsWithinPackageL(aMessage);
+		    break;
+		case EDeleteApplicationEntry:
+		    server->RequestImpL()->DeleteApplicationEntryL(aMessage);
+		    break;
+        case EGetComponentIdForApp:
+            server->RequestImpL()->GetComponentIdForAppL(aMessage);
+            break;
+        case EGetAppUidsForComponentSize:
+            server->RequestImpL()->GetAppUidsForComponentSizeL(aMessage);
+            break;
+        case EGetAppUidsForComponentData:
+            server->RequestImpL()->GetAppUidsForComponentDataL(aMessage);
+            break;
+        case EGenerateNonNativeAppUid:
+            server->RequestImpL()->GenerateNonNativeAppUidL(aMessage);
+            break;
+        case EGetApplicationLaunchersSize:
+            server->RequestImpL()->GetApplicationLaunchersSizeL(aMessage);
+            break;
+        case EGetApplicationLaunchersData:
+            server->RequestImpL()->GetApplicationLaunchersDataL(aMessage);
+            break;          
+		    
 		default:
 			User::Leave(KErrNotSupported);
 			break;
@@ -424,6 +452,9 @@
 		case EAddSoftwareType:
 		case EDeleteSoftwareType:
 		case EGetDeletedMimeTypes:
+		case EAddApplicationEntry:
+		case EDeleteApplicationEntries:
+		case EDeleteApplicationEntry:
 			{
 			ApplySubsessionConstraintL(aServer);
 			// These mutating operations consist of two or more mutating database statements.
@@ -467,9 +498,17 @@
 	switch(f)
 		{
 		case ESubSessCreateComponentsView:
-			return CComponentViewSubsession::NewL(*this);	
+			return CComponentViewSubsession::NewL(*this);
 		case ESubSessCreateFileList:
 			return CFileListSubsession::NewL(*this);
+		case ESubSessCreateAppInfoView:
+		    return CAppInfoViewSubsession::NewL(*this);
+		case ESubSessCreateAppRegInfo:
+			return CApplicationRegInfoSubsession::NewL(*this);
+		case ESubSessCreateRegInfoForApp:
+		    return CRegInfoForApplicationSubsession::NewL(*this);
+		case ESubSessCreateAppRegistryView:
+		    return CAppRegistrySubsession::NewL(*this);
 		default:
 			User::Leave(KErrNotSupported);
 			/*lint -unreachable */
--- a/installationservices/swcomponentregistry/source/server/scrsubsession.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/source/server/scrsubsession.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -240,3 +240,401 @@
 		}
 	return ETrue;
 	}
+
+//////////////////////////////
+///CCompViewSubsessionContext
+/////////////////////////////
+
+CAppInfoViewSubsessionContext::~CAppInfoViewSubsessionContext()
+    {
+    iApps.Close();
+    }
+
+/////////////////////////
+///CAppInfoViewSubsession
+////////////////////////
+
+CAppInfoViewSubsession* CAppInfoViewSubsession::NewL(CScrSession& aSession)
+    {
+    CAppInfoViewSubsession* self = new(ELeave) CAppInfoViewSubsession(aSession);
+    CleanupClosePushL(*self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+CAppInfoViewSubsession::CAppInfoViewSubsession(CScrSession &aSession) : CScrSubsession(aSession)
+    {   
+    }
+
+void CAppInfoViewSubsession::ConstructL()
+/**
+    Second-phase constructor.
+ */
+    {
+    iSubsessionContext = new (ELeave) CAppInfoViewSubsessionContext;       
+    CScrSubsession::ConstructL();
+    }
+
+CAppInfoViewSubsession::~CAppInfoViewSubsession()
+/**
+    Destructor for the subsession object.
+ */
+    {
+    delete iAppInfoFilter;   
+    if(NULL != iApaAppInfo)
+        delete iApaAppInfo;
+    delete iSubsessionContext;
+    }
+
+TBool CAppInfoViewSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
+/**
+    Implement CFileListSubsession by handling the supplied message.
+
+    @param  aFunction       Function identifier without SCS code.
+    @param  aMessage        Standard server-side handle to message.
+    @return ETrue means complete client request now. EFalse for asynchronous tasks.
+ */
+    {
+    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
+    
+    switch (f)
+        {
+        case EOpenAppInfoView:
+            {
+            DeleteObjectZ(iAppInfoFilter);
+            iAppInfoFilter = iServer->RequestImpL()->ReadAppInfoFilterL(aMessage);
+            DeleteObjectZ(iStatement);
+            iSubsessionContext->iLocale = TLanguage(aMessage.Int1());
+    
+            if(iSubsessionContext->iLocale == KUnspecifiedLocale)
+                {
+                iSubsessionContext->iLocale = User::Language();
+                }
+            iSubsessionContext->iAppInfoIndex = 0;
+            iServer->RequestImpL()->OpenAppInfoViewL(*iAppInfoFilter, this->iSubsessionContext);
+            break;
+            }
+        case EGetNextAppInfoSize:
+             iServer->RequestImpL()->NextAppInfoSizeL(aMessage, iApaAppInfo, this->iSubsessionContext);
+             break;
+        case EGetNextAppInfoData:
+             iServer->RequestImpL()->NextAppInfoDataL(aMessage, iApaAppInfo);
+             break;
+   
+        default:
+            User::Leave(KErrNotSupported);
+            break;
+        }
+    return ETrue;
+    }
+
+///////////////////////////////////////////
+///CApplicationRegInfoSubsessionContext
+//////////////////////////////////////////
+CApplicationRegInfoSubsessionContext::~CApplicationRegInfoSubsessionContext()
+    {
+    delete iAppServiceInfoFilter;   
+    iServiceInfoArray.ResetAndDestroy(); 
+    }
+
+/////////////////////////////////
+///CApplicationRegInfoSubsession
+////////////////////////////////
+CApplicationRegInfoSubsession* CApplicationRegInfoSubsession::NewL(CScrSession &aSession)
+/**
+    Factory function allocates a new instance of CAppInfoQuerySubsession.
+    
+    Note that CAppInfoQuerySubsession derives from CObject and therefore it MUST NOT be deleted directly,
+    instead it should be closed.
+     
+    @return                 The newly created instance of CAppInfoQuerySubsession.
+                            Ownership is transferred to the caller.
+ */
+    {
+    CApplicationRegInfoSubsession* self = new(ELeave) CApplicationRegInfoSubsession(aSession);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CApplicationRegInfoSubsession::CApplicationRegInfoSubsession(CScrSession &aSession)
+/**
+    This constructor is private and prevents direct instantiation. It provides
+    a single point of definition from which to call the superclass c'tor.
+ */
+    :   CScrSubsession(aSession)
+    {
+    // empty.
+    }
+
+void CApplicationRegInfoSubsession::ConstructL()
+/**
+    Second-phase constructor.
+ */
+    {
+    iSubsessionContext = new (ELeave) CApplicationRegInfoSubsessionContext;       
+    CScrSubsession::ConstructL();
+    }
+
+CApplicationRegInfoSubsession::~CApplicationRegInfoSubsession()
+/**
+    Destructor for the subsession object.
+ */
+    {       
+    delete iSubsessionContext;
+    }
+
+TBool CApplicationRegInfoSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
+/**
+    Implement CAppInfoQuerySubsession by handling the supplied message.
+
+    @param  aFunction       Function identifier without SCS code.
+    @param  aMessage        Standard server-side handle to message.
+    @return ETrue means complete client request now. EFalse for asynchronous tasks.
+ */
+    {
+    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
+    
+    switch (f)
+        {        
+        case EGetAppForDataTypeAndService:
+            iServer->RequestImpL()->GetAppForDataTypeAndServiceL(aMessage);
+            break;
+        case EGetAppForDataType:
+            iServer->RequestImpL()->GetAppForDataTypeL(aMessage);
+            break;                
+        case EGetAppServiceInfoSize:
+            iServer->RequestImpL()->GetAppServiceInfoSizeL(aMessage, this->iSubsessionContext);
+            break;
+        case EGetAppServiceInfoData:
+            iServer->RequestImpL()->GetAppServiceInfoDataL(aMessage, this->iSubsessionContext);
+            break;
+        case EGetApplicationInfo:
+            iServer->RequestImpL()->GetApplicationInfoL(aMessage);
+            break;
+        default:
+            User::Leave(KErrNotSupported);
+            break;
+        }
+    return ETrue;
+    }
+
+///////////////////////////////////////////
+///CRegInfoForApplicationSubsessionContext
+//////////////////////////////////////////
+CRegInfoForApplicationSubsessionContext::~CRegInfoForApplicationSubsessionContext()
+    {
+    iViewInfoArray.ResetAndDestroy(); 
+    iServiceUidList.Close(); 
+    iAppOwnedFiles.ResetAndDestroy();
+    }
+
+/////////////////////////////////////
+///CRegInfoForApplicationSubsession
+////////////////////////////////////
+CRegInfoForApplicationSubsession* CRegInfoForApplicationSubsession::NewL(CScrSession &aSession)
+/**
+    Factory function allocates a new instance of CAppInfoQueryContextSubsession.
+    
+    Note that CAppInfoQueryContextSubsession derives from CObject and therefore it MUST NOT be deleted directly,
+    instead it should be closed.
+     
+    @return                 The newly created instance of CAppInfoQueryContextSubsession.
+                            Ownership is transferred to the caller.
+ */
+    {
+    CRegInfoForApplicationSubsession* self = new(ELeave) CRegInfoForApplicationSubsession(aSession);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CRegInfoForApplicationSubsession::CRegInfoForApplicationSubsession(CScrSession &aSession)
+/**
+    This constructor is private and prevents direct instantiation. It provides
+    a single point of definition from which to call the superclass c'tor.
+ */
+    :   CScrSubsession(aSession)
+    {
+    // empty.
+    }
+
+void CRegInfoForApplicationSubsession::ConstructL()
+/**
+    Second-phase constructor.
+ */
+    {
+    iSubsessionContext = new (ELeave) CRegInfoForApplicationSubsessionContext;       
+    CScrSubsession::ConstructL();
+    }
+
+CRegInfoForApplicationSubsession::~CRegInfoForApplicationSubsession()
+/**
+    Destructor for the subsession object.
+ */
+    {   
+    delete iSubsessionContext;
+    }
+
+TBool CRegInfoForApplicationSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
+/**
+    Implement CAppInfoQueryContextSubsession by handling the supplied message.
+
+    @param  aFunction       Function identifier without SCS code.
+    @param  aMessage        Standard server-side handle to message.
+    @return ETrue means complete client request now. EFalse for asynchronous tasks.
+ */
+    {
+    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
+    
+    switch (f)
+        {        
+        case ESetAppUid:
+            {
+            TUid appUid = TUid::Uid(aMessage.Int0());
+            if(!(iServer->RequestImpL()->CheckIfAppUidExistsL(appUid)))
+                {
+                User::Leave(KErrNotFound);
+                }
+            iAppUid = appUid;
+            iServer->RequestImpL()->SetLocaleForRegInfoForApplicationSubsessionContextL(aMessage, this->iSubsessionContext);
+            break;
+            }
+        case EGetServiceUidSize:
+            iServer->RequestImpL()->GetServiceUidSizeL(aMessage,iAppUid, this->iSubsessionContext);
+            break;
+        case EGetServiceUidList:
+            iServer->RequestImpL()->GetServiceUidDataL(aMessage, this->iSubsessionContext);
+            break;
+        case EGetApplicationLanguage:
+            iServer->RequestImpL()->GetApplicationLanguageL(aMessage,this->iSubsessionContext);
+            break;
+        case EGetDefaultScreenNumber:
+            iServer->RequestImpL()->GetDefaultScreenNumberL(aMessage,iAppUid);           
+            break;
+        case EGetNumberOfOwnDefinedIcons:
+            iServer->RequestImpL()->GetNumberOfOwnDefinedIconsL(aMessage,iAppUid,this->iSubsessionContext);
+            break;   
+		case EGetViewSize:
+            iServer->RequestImpL()->GetViewSizeL(aMessage, iAppUid, this->iSubsessionContext);
+            break;
+        case EGetViewData:
+            iServer->RequestImpL()->GetViewDataL(aMessage, this->iSubsessionContext);
+            break;
+        case EGetAppOwnedFilesSize:
+            iServer->RequestImpL()->GetAppOwnedFilesSizeL(aMessage, iAppUid, this->iSubsessionContext);
+            break;
+        case EGetAppOwnedFilesData:
+            iServer->RequestImpL()->GetAppOwnedFilesDataL(aMessage, this->iSubsessionContext);
+            break;
+        case EGetAppCharacteristics:
+            iServer->RequestImpL()->GetAppCharacteristicsL(aMessage, iAppUid);
+            break;
+        case EGetAppIconForFileName:
+            iServer->RequestImpL()->GetAppIconForFileNameL(aMessage, iAppUid, this->iSubsessionContext);
+            break;
+        case EGetAppViewIconFileName:
+            iServer->RequestImpL()->GetAppViewIconFileNameL(aMessage, iAppUid, this->iSubsessionContext);
+            break;
+        default:
+            User::Leave(KErrNotSupported);
+            break;
+        }
+    return ETrue;
+    }
+
+
+////////////////////////////////////////////
+///CAppRegistrySubsessionContext
+///////////////////////////////////////////
+
+CAppRegistrySubsessionContext::~CAppRegistrySubsessionContext()
+    {
+    iAppUids.Close();
+    }
+
+////////////////////////////
+///CAppRegistrySubsession
+////////////////////////////
+
+CAppRegistrySubsession* CAppRegistrySubsession::NewL(CScrSession& aSession)
+    {
+    CAppRegistrySubsession* self = new(ELeave) CAppRegistrySubsession(aSession);
+    CleanupClosePushL(*self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+CAppRegistrySubsession::CAppRegistrySubsession(CScrSession &aSession)
+/**
+    This constructor is private and prevents direct instantiation. It provides
+    a single point of definition from which to call the superclass c'tor.
+ */
+    :   CScrSubsession(aSession)
+    {   
+    }
+
+void CAppRegistrySubsession::ConstructL()
+/**
+    Second-phase constructor.
+ */
+    {
+    iSubsessionContext = new (ELeave) CAppRegistrySubsessionContext;       
+    CScrSubsession::ConstructL();
+    }
+
+CAppRegistrySubsession::~CAppRegistrySubsession()
+/**
+    Destructor for the subsession object.
+ */
+    {
+    if(NULL != iApplicationRegistrationInfo)
+        delete iApplicationRegistrationInfo;
+    delete iSubsessionContext;
+    }
+
+TBool CAppRegistrySubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
+/**
+    Implement CFileListSubsession by handling the supplied message.
+
+    @param  aFunction       Function identifier without SCS code.
+    @param  aMessage        Standard server-side handle to message.
+    @return ETrue means complete client request now. EFalse for asynchronous tasks.
+ */
+    {
+    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
+    
+    switch (f)
+        {
+        case EOpenApplicationRegistrationInfoView:
+            {
+            iSubsessionContext->iAppRegIndex = 0;
+            iSubsessionContext->iAppUids.Reset();
+            iServer->RequestImpL()->OpenApplicationRegistrationViewL(aMessage,this->iSubsessionContext);            
+            break;
+            }
+        case EGetApplicationRegistrationSize:
+             iServer->RequestImpL()->NextApplicationRegistrationInfoSizeL(aMessage, iApplicationRegistrationInfo, this->iSubsessionContext);
+             break;
+        case EGetApplicationRegistrationData:
+             iServer->RequestImpL()->NextApplicationRegistrationInfoDataL(aMessage, iApplicationRegistrationInfo);
+             break;
+        case EOpenApplicationRegistrationInfoForAppUidsView:
+            {
+            iSubsessionContext->iAppRegIndex = 0;
+            iSubsessionContext->iAppUids.Reset();
+            iServer->RequestImpL()->OpenApplicationRegistrationForAppUidsViewL(aMessage,this->iSubsessionContext);            
+            break;
+            }
+        default:
+            User::Leave(KErrNotSupported);
+            break;
+        }
+    return ETrue;
+    }
--- a/installationservices/swcomponentregistry/test/group/tscr.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/group/tscr.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -37,7 +37,7 @@
 SOURCE tscrstep.cpp
 SOURCE componentmanagementsteps.cpp transactionmanagementsteps.cpp deletescrdbstep.cpp
 SOURCE componentquerysteps.cpp subsessionsteps.cpp sifsteps.cpp appmanagersteps.cpp
-SOURCE pluginmanagementsteps.cpp installloghistorysteps.cpp
+SOURCE pluginmanagementsteps.cpp installloghistorysteps.cpp appreginfosteps.cpp
 
 SOURCEPATH 	../tscraccessor/source
 SOURCE tscraccessor_client.cpp
@@ -59,4 +59,5 @@
 LIBRARY oomtestbase.lib
 LIBRARY scrclient.lib
 LIBRARY scsclient.lib
+LIBRARY sifutils.lib
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/group/tscrapparc.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* This is the project specification file for the Software Component Registry test harness
+*
+*/
+
+/**
+ @file
+ @internalComponent
+ @test
+*/
+
+TARGETTYPE EXE
+TARGET tscrapparc.exe
+
+UID 0 0x10003A3F
+
+// ProtServ TrustedUI are used for scrdatabase testing
+CAPABILITY ProtServ TrustedUI
+
+SOURCEPATH 	../tscrapparc/source
+SOURCE tscrapparcserver.cpp appreginfoapparcsteps.cpp
+
+USERINCLUDE ../tscr/inc
+USERINCLUDE ../tscrapparc/inc
+USERINCLUDE	../../inc_private
+USERINCLUDE	../../inc
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+SMPSAFE
+
+LIBRARY euser.lib 
+LIBRARY efsrv.lib 
+LIBRARY testexecuteutils.lib
+LIBRARY testexecutelogclient.lib
+LIBRARY rfileloggerclient.lib
+LIBRARY scrdatabase.lib
+LIBRARY oomtestbase.lib
+LIBRARY scrclient.lib
+LIBRARY scsclient.lib
+LIBRARY bafl.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/testdb/create_db.xml	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<!DOCTYPE CreateDatabase [
+<!ELEMENT CreateDatabase (SQLQuery+)>
+<!ELEMENT SQLQuery (#PCDATA)>	
+]>
+<!-- Creation of database for SCR--> 
+
+<CreateDatabase>
+	<SQLQuery>CREATE TABLE SoftwareTypeNames(NameId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_SoftwareTypeNames_SoftwareTypeId ON SoftwareTypeNames(SoftwareTypeId);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_SoftwareTypeNames_Name ON SoftwareTypeNames(Name);</SQLQuery>
+	<SQLQuery>CREATE TABLE SoftwareTypes(SoftwareTypeId INTEGER PRIMARY KEY NOT NULL,SifPluginUid INTEGER,LauncherExecutable TEXT DEFAULT '');</SQLQuery>
+	<SQLQuery>CREATE TABLE CustomAccessList(AccessId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SecureId INTEGER NOT NULL,AccessMode INTEGER DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE TABLE MimeTypes(MimeTypeId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,MimeType TEXT NOT NULL UNIQUE COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_MimeTypes_SoftwareTypeId ON MimeTypes(SoftwareTypeId);</SQLQuery>
+	<SQLQuery>CREATE TABLE Components(ComponentId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SoftwareTypeName TEXT NOT NULL,Size INTEGER DEFAULT 0,Removable BOOLEAN DEFAULT 1,ScomoState INTEGER DEFAULT 0,DRMProtected INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,KnownRevoked INTEGER DEFAULT 0,OriginVerified INTEGER DEFAULT 0,InstalledDrives INTEGER DEFAULT 0,GlobalIdHash INTEGER DEFAULT 0,GlobalId TEXT UNIQUE,Version TEXT,InstallTime TEXT NOT NULL,CompPresence BOOLEAN DEFAULT 1);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_Components_SoftwareTypeId ON Components(SoftwareTypeId);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_Components_GlobalIdIdHash ON Components(GlobalIdHash);</SQLQuery>
+	<SQLQuery>CREATE TABLE ComponentLocalizables(CompLocalId INTEGER PRIMARY KEY AUTOINCREMENT, ComponentId INTEGER DEFAULT 0,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL,Vendor TEXT);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentLocalizables_ComponentId ON ComponentLocalizables(ComponentId);</SQLQuery>
+	<SQLQuery>CREATE TABLE ComponentDependencies(GlobalIdHash INTEGER PRIMARY KEY NOT NULL,DependantGlobalIdHash INTEGER NOT NULL, SupplierGlobalIdHash INTEGER NOT NULL, DependantGlobalId TEXT NOT NULL,SupplierGlobalId TEXT NOT NULL,VersionFrom TEXT, VersionTo TEXT);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentDependencies_DependantGlobalId ON ComponentDependencies(DependantGlobalIdHash);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentDependencies_SupplierGlobalId ON ComponentDependencies(SupplierGlobalIdHash);</SQLQuery>
+	<SQLQuery>CREATE TABLE ComponentsFiles(CmpFileId INTEGER PRIMARY KEY NOT NULL,ComponentId INTEGER NOT NULL,LocationHash INTEGER DEFAULT 0,Location TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentsFiles_ComponentId ON ComponentsFiles(ComponentId);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentsFiles_LocationHash ON ComponentsFiles(LocationHash);</SQLQuery>
+	<SQLQuery>CREATE TABLE ComponentProperties(PropertyId INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL COLLATE NOCASE,Locale INTEGER DEFAULT 0,ComponentId INTEGER NOT NULL,IntValue INTEGER,StrValue TEXT,IsStr8Bit BOOLEAN DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentProperties_Name ON ComponentProperties(Name);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentProperties_ComponentId ON ComponentProperties(ComponentId);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentProperties_IntValue ON ComponentProperties(IntValue);</SQLQuery>
+	<SQLQuery>CREATE TABLE FileProperties(PropertyId INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL COLLATE NOCASE,CmpFileId INTEGER NOT NULL,IntValue INTEGER,StrValue TEXT, Locale INTEGER DEFAULT 0,IsStr8Bit BOOLEAN DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_FileProperties_Name ON FileProperties(Name);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_FileProperties_CmpFileId ON FileProperties(CmpFileId);</SQLQuery>
+	<SQLQuery>CREATE TABLE ScrVersion(MajorVersion INTEGER NOT NULL, MinorVersion INTEGER NOT NULL, BuildNumber INTEGER NOT NULL);</SQLQuery>
+	<SQLQuery>INSERT INTO ScrVersion(MajorVersion, MinorVersion, BuildNumber) VALUES(1, 1, 1);</SQLQuery>
+	<SQLQuery>CREATE TABLE AppRegistrationInfo(AppUid INTEGER PRIMARY KEY NOT NULL,ComponentId INTEGER DEFAULT 0,AppFile TEXT COLLATE NOCASE UNIQUE NOT NULL,TypeId INTEGER NOT NULL,Attributes INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,Embeddable INTEGER DEFAULT 0,NewFile INTEGER DEFAULT 0,Launch INTEGER DEFAULT 0,GroupName TEXT COLLATE NOCASE,DefaultScreenNumber INTEGER DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppRegistrationInfo_AppFile ON AppRegistrationInfo(AppFile);</SQLQuery>
+	<SQLQuery>CREATE TABLE FileOwnershipInfo(FileOwnerInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,FileName TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_FileOwnershipInfo_AppUid ON FileOwnershipInfo(AppUid);</SQLQuery>
+	<SQLQuery>CREATE TABLE ServiceInfo(ServiceId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,Uid INTEGER DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ServiceInfo_AppUid ON ServiceInfo(AppUid);</SQLQuery>
+	<SQLQuery>CREATE TABLE DataType(DataTypeId INTEGER PRIMARY KEY AUTOINCREMENT,ServiceId INTEGER NOT NULL,Priority INTEGER NOT NULL,Type TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_DataType_ServiceId ON DataType(ServiceId);</SQLQuery>
+	<SQLQuery>CREATE TABLE LocalizableAppInfo(LocalAppInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,ShortCaption TEXT COLLATE NOCASE,GroupName TEXT COLLATE NOCASE,Locale INTEGER DEFAULT 0,CaptionAndIconId INTEGER,CONSTRAINT U_AppUid_Locale UNIQUE (AppUid,Locale));</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_LocalizableAppInfo ON LocalizableAppInfo(AppUid,Locale);</SQLQuery>
+	<SQLQuery>CREATE TABLE ViewData(ViewId INTEGER PRIMARY KEY AUTOINCREMENT,LocalAppInfoId INTEGER NOT NULL,Uid INTEGER NOT NULL,ScreenMode INTEGER DEFAULT 0,CaptionAndIconId INTEGER);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ViewData_LocalAppInfoId ON ViewData(LocalAppInfoId);</SQLQuery>
+	<SQLQuery>CREATE TABLE CaptionAndIconInfo(CaptionAndIconId INTEGER PRIMARY KEY AUTOINCREMENT,Caption TEXT COLLATE NOCASE,NumberOfIcons INTEGER DEFAULT 0,IconFile TEXT COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE TABLE AppProperties(PropertyId INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT NOT NULL COLLATE NOCASE,Locale INTEGER DEFAULT 0,AppUid INTEGER NOT NULL,ServiceUid INTEGER DEFAULT 0,IntValue INTEGER,StrValue TEXT,IsStr8Bit BOOLEAN DEFAULT 0,CONSTRAINT U_AppUid_Locale_Name UNIQUE (AppUid,ServiceUid,Locale,Name));</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppProperties_AppUid ON AppProperties(AppUid);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppProperties_Name ON AppProperties(Name);</SQLQuery>
+</CreateDatabase>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/testdb/modifydb.sql	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,14 @@
+BEGIN TRANSACTION CreateScrDatabase;
+--Old Schema
+--SoftwareTypes(SoftwareTypeId,SifPluginUid,InstallerSecureId,ExecutionLayerSecureId)
+--New Schema
+--SoftwareTypes(SoftwareTypeId,SifPluginUid,LauncherExecutable)
+--CustomAccessList(AccessId,SoftwareTypeId,SecureId,AccessMode)
+CREATE TABLE Temp(SoftwareTypeId INTEGER PRIMARY KEY NOT NULL,SifPluginUid INTEGER,LauncherExecutable TEXT DEFAULT 'SomeData');
+INSERT INTO Temp(SoftwareTypeId,SifPluginUid) SELECT SoftwareTypeId,SifPluginUid FROM SoftwareTypes;
+CREATE TABLE CustomAccessList(AccessId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SecureId INTEGER NOT NULL,AccessMode INTEGER DEFAULT 1);
+INSERT INTO CustomAccessList(SoftwareTypeId,SecureId) SELECT SoftwareTypeId,InstallerSecureId FROM SoftwareTypes;
+INSERT INTO CustomAccessList(SoftwareTypeId,SecureId) SELECT SoftwareTypeId,ExecutionLayerSecureId FROM SoftwareTypes;
+DROP TABLE SoftwareTypes;
+ALTER TABLE Temp RENAME TO SoftwareTypes;
+END TRANSACTION CreateScrDatabase;
Binary file installationservices/swcomponentregistry/test/testdb/scr.db has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/testdb/scrdbschema.sql	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,45 @@
+BEGIN TRANSACTION CreateScrDatabase;
+CREATE TABLE SoftwareTypeNames(NameId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL);
+CREATE INDEX idx_SoftwareTypeNames_SoftwareTypeId ON SoftwareTypeNames(SoftwareTypeId);
+CREATE INDEX idx_SoftwareTypeNames_Name ON SoftwareTypeNames(Name);
+CREATE TABLE SoftwareTypes(SoftwareTypeId INTEGER PRIMARY KEY NOT NULL,SifPluginUid INTEGER,LauncherExecutable TEXT);
+CREATE TABLE CustomAccessList(AccessId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SecureId INTEGER NOT NULL,AccessMode INTEGER DEFAULT 0);
+CREATE TABLE MimeTypes(MimeTypeId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,MimeType TEXT NOT NULL UNIQUE COLLATE NOCASE);
+CREATE INDEX idx_MimeTypes_SoftwareTypeId ON MimeTypes(SoftwareTypeId);
+CREATE TABLE Components(ComponentId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SoftwareTypeName TEXT NOT NULL,Size INTEGER DEFAULT 0,Removable BOOLEAN DEFAULT 1,ScomoState INTEGER DEFAULT 0,DRMProtected INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,KnownRevoked INTEGER DEFAULT 0,OriginVerified INTEGER DEFAULT 0,InstalledDrives INTEGER DEFAULT 0,GlobalIdHash INTEGER DEFAULT 0,GlobalId TEXT UNIQUE,Version TEXT,InstallTime TEXT NOT NULL,CompPresence BOOLEAN DEFAULT 1);
+CREATE INDEX idx_Components_SoftwareTypeId ON Components(SoftwareTypeId);
+CREATE INDEX idx_Components_GlobalIdIdHash ON Components(GlobalIdHash);
+CREATE TABLE ComponentLocalizables(CompLocalId INTEGER PRIMARY KEY AUTOINCREMENT, ComponentId INTEGER DEFAULT 0,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL,Vendor TEXT);
+CREATE INDEX idx_ComponentLocalizables_ComponentId ON ComponentLocalizables(ComponentId);
+CREATE TABLE ComponentDependencies(GlobalIdHash INTEGER PRIMARY KEY NOT NULL,DependantGlobalIdHash INTEGER NOT NULL, SupplierGlobalIdHash INTEGER NOT NULL, DependantGlobalId TEXT NOT NULL,SupplierGlobalId TEXT NOT NULL,VersionFrom TEXT, VersionTo TEXT);
+CREATE INDEX idx_ComponentDependencies_DependantGlobalId ON ComponentDependencies(DependantGlobalIdHash);
+CREATE INDEX idx_ComponentDependencies_SupplierGlobalId ON ComponentDependencies(SupplierGlobalIdHash);
+CREATE TABLE ComponentsFiles(CmpFileId INTEGER PRIMARY KEY NOT NULL,ComponentId INTEGER NOT NULL,LocationHash INTEGER DEFAULT 0,Location TEXT NOT NULL COLLATE NOCASE);
+CREATE INDEX idx_ComponentsFiles_ComponentId ON ComponentsFiles(ComponentId);
+CREATE INDEX idx_ComponentsFiles_LocationHash ON ComponentsFiles(LocationHash);
+CREATE TABLE ComponentProperties(PropertyId INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL COLLATE NOCASE,Locale INTEGER DEFAULT 0,ComponentId INTEGER NOT NULL,IntValue INTEGER,StrValue TEXT,IsStr8Bit BOOLEAN DEFAULT 0);
+CREATE INDEX idx_ComponentProperties_Name ON ComponentProperties(Name);
+CREATE INDEX idx_ComponentProperties_ComponentId ON ComponentProperties(ComponentId);
+CREATE INDEX idx_ComponentProperties_IntValue ON ComponentProperties(IntValue);
+CREATE TABLE FileProperties(PropertyId INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL COLLATE NOCASE,CmpFileId INTEGER NOT NULL,IntValue INTEGER,StrValue TEXT, Locale INTEGER DEFAULT 0,IsStr8Bit BOOLEAN DEFAULT 0);
+CREATE INDEX idx_FileProperties_Name ON FileProperties(Name);
+CREATE INDEX idx_FileProperties_CmpFileId ON FileProperties(CmpFileId);
+CREATE TABLE ScrVersion(MajorVersion INTEGER NOT NULL, MinorVersion INTEGER NOT NULL, BuildNumber INTEGER NOT NULL);
+INSERT INTO ScrVersion(MajorVersion, MinorVersion, BuildNumber) VALUES(1, 1, 1);
+CREATE TABLE AppRegistrationInfo(AppUid INTEGER PRIMARY KEY NOT NULL,ComponentId INTEGER DEFAULT 0,AppFile TEXT COLLATE NOCASE UNIQUE NOT NULL,TypeId INTEGER NOT NULL,Attributes INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,Embeddable INTEGER DEFAULT 0,NewFile INTEGER DEFAULT 0,Launch INTEGER DEFAULT 0,GroupName TEXT COLLATE NOCASE,DefaultScreenNumber INTEGER DEFAULT 0);
+CREATE INDEX idx_AppRegistrationInfo_AppFile ON AppRegistrationInfo(AppFile);
+CREATE TABLE FileOwnershipInfo(FileOwnerInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,FileName TEXT NOT NULL COLLATE NOCASE);
+CREATE INDEX idx_FileOwnershipInfo_AppUid ON FileOwnershipInfo(AppUid);
+CREATE TABLE ServiceInfo(ServiceId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,Uid INTEGER DEFAULT 0);
+CREATE INDEX idx_ServiceInfo_AppUid ON ServiceInfo(AppUid);
+CREATE TABLE DataType(DataTypeId INTEGER PRIMARY KEY AUTOINCREMENT,ServiceId INTEGER NOT NULL,Priority INTEGER NOT NULL,Type TEXT NOT NULL COLLATE NOCASE);
+CREATE INDEX idx_DataType_ServiceId ON DataType(ServiceId);
+CREATE TABLE LocalizableAppInfo(LocalAppInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,ShortCaption TEXT COLLATE NOCASE,GroupName TEXT COLLATE NOCASE,Locale INTEGER DEFAULT 0,CaptionAndIconId INTEGER,CONSTRAINT U_AppUid_Locale UNIQUE (AppUid,Locale));
+CREATE INDEX idx_LocalizableAppInfo ON LocalizableAppInfo(AppUid,Locale);
+CREATE TABLE ViewData(ViewId INTEGER PRIMARY KEY AUTOINCREMENT,LocalAppInfoId INTEGER NOT NULL,Uid INTEGER NOT NULL,ScreenMode INTEGER DEFAULT 0,CaptionAndIconId INTEGER);
+CREATE INDEX idx_ViewData_LocalAppInfoId ON ViewData(LocalAppInfoId);
+CREATE TABLE CaptionAndIconInfo(CaptionAndIconId INTEGER PRIMARY KEY AUTOINCREMENT,Caption TEXT COLLATE NOCASE,NumberOfIcons INTEGER DEFAULT 0,IconFile TEXT COLLATE NOCASE);
+CREATE TABLE AppProperties(PropertyId INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT NOT NULL COLLATE NOCASE,Locale INTEGER DEFAULT 0,AppUid INTEGER NOT NULL,ServiceUid INTEGER DEFAULT 0,IntValue INTEGER,StrValue TEXT,IsStr8Bit BOOLEAN DEFAULT 0,CONSTRAINT U_AppUid_Locale_Name UNIQUE (AppUid,ServiceUid,Locale,Name));
+CREATE INDEX idx_AppProperties_AppUid ON AppProperties(AppUid);
+CREATE INDEX idx_AppProperties_Name ON AppProperties(Name);
+END TRANSACTION CreateScrDatabase;
Binary file installationservices/swcomponentregistry/test/testdb/update_db.dtd has changed
Binary file installationservices/swcomponentregistry/test/testdb/update_db_production.xml has changed
Binary file installationservices/swcomponentregistry/test/testdb/update_db_test.xml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscr/inc/appreginfosteps.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,327 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Defines test steps for component management APIs in the SCR
+*
+*/
+
+
+/**
+ @file 
+ @internalComponent
+ @test
+*/
+
+#ifndef APPREGINFOSTEPS_H
+#define APPREGINFOSTEPS_H
+
+#include "tscrstep.h"
+#include <usif/scr/appregentries.h>
+class CScrTestServer;
+
+_LIT(KScrAddApplicationEntry, "SCRAddApplicationEntry");
+_LIT(KScrDeleteApplicationEntry, "SCRDeleteApplicationEntry");
+_LIT(KSCRGetAppServicesUids,"SCRGetAppServicesUids");
+_LIT(KSCRGetAppForDataType,"SCRGetAppForDataType");
+_LIT(KSCRGetAppForDataTypeAndService,"SCRGetAppForDataTypeAndService");
+_LIT(KSCRGetDefaultScreenNumber,"SCRGetDefaultScreenNumber");
+_LIT(KSCRGetNumberOfDefinedIcons,"SCRGetNumberOfDefinedIcons");
+_LIT(KSCRGetApplicationLanguage,"SCRGetApplicationLanguage");
+_LIT(KScrGetAppOwnedFilesEntry, "SCRGetAppOwnedFilesEntry");
+_LIT(KScrGetAppCapabilityEntry, "SCRGetAppCapabilityEntry");
+_LIT(KScrGetAppIconEntry, "SCRGetAppIconEntry");
+_LIT(KScrGetAppViewIconEntry, "SCRGetAppViewIconEntry");
+_LIT(KScrGetAppViewInfoStep,"ScrGetAppViewInfo");
+_LIT(KScrGetAppServiceInfoStep,"ScrGetAppServiceInfo");
+_LIT(KScrGetComponentIdForAppStep,"ScrGetComponentIdForApp");
+_LIT(KScrGetAppUidsForComponentStep,"ScrGetAppUidsForComponent");
+_LIT(KScrAddConcurrentApplicationEntryStep,"ScrAddConcurrentApplicationEntry");
+_LIT(KScrGetAppInfoStep,"ScrGetAppInfo");
+
+class CScrAddApplicationEntryStep : public CScrTestStep
+/**
+    TEF test step which exercises the SCR AddApplicationEntryL interface
+ */
+    {
+public:
+    CScrAddApplicationEntryStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+class CScrDeleteApplicationEntriesStep : public CScrTestStep
+/**
+    TEF test step which exercises the SCR DeleteApplicationEntriesL interface
+ */
+    {
+public:
+    CScrDeleteApplicationEntriesStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+class CSCRGetAppServicesUids : public CScrTestStep
+/**
+ * TEF test step which exercises the RRegistrationInfoForApplication::GetAppServicesUidsL interface
+ */
+    {
+public:
+    CSCRGetAppServicesUids(CScrTestServer& aParent);
+            
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };  
+
+class CSCRGetAppForDataType : public CScrTestStep
+/**
+ * TEF test step which exercises the RApplicationRegistrationInfo::GetAppForDataTypeL interface
+ */
+    {
+public:
+    CSCRGetAppForDataType(CScrTestServer& aParent);
+           
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };  
+
+class CSCRGetAppForDataTypeAndService : public CScrTestStep
+/**
+ * TEF test step which exercises the TEF test step which exercises the RApplicationRegistrationInfo::GetAppForDataTypeL interface
+ */
+    {
+public:
+    CSCRGetAppForDataTypeAndService(CScrTestServer& aParent);
+           
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    
+private:
+    };  
+
+class CSCRGetDefaultScreenNumber : public CScrTestStep
+/**
+ * TEF test step which exercises the TEF test step which exercises the RRegistrationInfoForApplication::GetDefaultScreenNumberL interface
+ */
+    {
+public:
+    CSCRGetDefaultScreenNumber(CScrTestServer& aParent);
+           
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };  
+
+class CSCRGetNumberOfDefinedIcons : public CScrTestStep
+/**
+ * TEF test step which exercises the TEF test step which exercises the RRegistrationInfoForApplication::GetNumberOfOwnDefinedIconsL interface
+ */
+	{
+public:
+    CSCRGetNumberOfDefinedIcons(CScrTestServer& aParent);
+			
+protected:
+	// From CScrTestStep
+	void ImplTestStepPreambleL();
+	void ImplTestStepL();
+	void ImplTestStepPostambleL();
+	};	
+
+class CSCRGetApplicationLanguage : public CScrTestStep
+/**
+ * TEF test step which exercises the TEF test step which exercises the RRegistrationInfoForApplication::GetApplicationLanguageL interface
+ */
+    {
+public:
+    CSCRGetApplicationLanguage(CScrTestServer& aParent);
+            
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };  
+
+class CScrGetAppOwnedFilesEntryStep : public CScrTestStep
+/**
+    TEF test step which exercises the RRegistrationInfoForApplication::GetAppOwnedFiles interface
+ */
+    {
+public:
+    CScrGetAppOwnedFilesEntryStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+
+private:
+    TBool CompareAppOwnedFileNamesL(RPointerArray<HBufC>& aExpetedValue,RPointerArray<HBufC>& aActualValue);
+    };
+
+class CScrGetAppCharacteristicsEntryStep : public CScrTestStep
+/**
+    TEF test step which exercises the RRegistrationInfoForApplication::GetAppCharacteristics interface
+ */
+    {
+public:
+    CScrGetAppCharacteristicsEntryStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+class CScrGetAppIconEntryStep : public CScrTestStep
+/**
+    TEF test step which exercises the RRegistrationInfoForApplication::GetAppIcon interface
+ */
+    {
+public:
+    CScrGetAppIconEntryStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+   };
+
+class CScrGetAppViewIconEntryStep : public CScrTestStep
+/**
+    TEF test step which exercises the RRegistrationInfoForApplication::GetAppViewIcon interface
+ */
+    {
+public:
+    CScrGetAppViewIconEntryStep(CScrTestServer& aParent);
+  
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+   };
+
+class CScrGetAppViewsStep : public CScrTestStep
+/**
+    TEF test step which exercises the RRegistrationInfoForApplication::GetAppViewsL interface
+ */
+    {
+public:
+    CScrGetAppViewsStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+class CScrGetAppServiceInfoStep : public CScrTestStep
+/**
+    TEF test step which exercises the RApplicationRegistrationInfo::GetServiceInfoL interface
+ */
+    {
+public:
+    CScrGetAppServiceInfoStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+class CScrGetComponentIdForApp : public CScrTestStep
+/**
+    TEF test step which exercises the SCR GetComponentIdForAppL interface
+ */
+    {
+public:
+    CScrGetComponentIdForApp(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+class CScrGetAppUidsForComponent : public CScrTestStep
+/**
+    TEF test step which exercises the SCR ScrGetAppUidsForComponentL interface
+ */
+    {
+public:
+    CScrGetAppUidsForComponent(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+class CScrAddConcurrentApplicationEntryStep : public CScrTestStep
+/**
+    TEF test step which exercises the SCR AddConcurrentApplicationEntryStep interface
+ */
+    {
+public:
+    CScrAddConcurrentApplicationEntryStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+class CScrGetAppInfoStep : public CScrTestStep
+/**
+    TEF test step which exercises the RApplicationRegistrationInfo::GetAppInfoL interface
+ */
+    {
+public:
+    CScrGetAppInfoStep(CScrTestServer& aParent);
+    
+protected:
+    // From CScrTestStep
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+
+#endif /* APPREGINFOSTEPS_H */
--- a/installationservices/swcomponentregistry/test/tscr/inc/componentquerysteps.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/inc/componentquerysteps.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -257,7 +257,8 @@
 	
 private:
 	void ExecuteL();
-	TInt iFailRate;
+	void ApplicationRegistrationOperationsL(Usif::RSoftwareComponentRegistry& scrSession);
+	TInt iFailRate;	
 	};	
 
 #endif //COMPONENTQUERYSTEPS_H
--- a/installationservices/swcomponentregistry/test/tscr/inc/subsessionsteps.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/inc/subsessionsteps.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -27,10 +27,13 @@
 #define SUBSESSIONSTEPS_H
 
 #include "tscrstep.h"
+
+
 class CScrTestServer;
 
 _LIT(KScrComponentRegistrySubsessionStep, "ScrComponentRegistrySubsession");
 _LIT(KScrFileListSubsessionStep, "ScrFileListSubsession");
+_LIT(KScrAppViewSubsessionStep, "ScrAppViewSubsession");
 
 class CScrComponentRegistrySubsessionStep : public CScrTestStep
 /**
@@ -72,4 +75,25 @@
 	void ReportUnexpectedFileL(const TDesC& aUnexpectedFileName);
 	};
 
+
+class CAppInfoView : public CScrTestStep
+/**
+ 	TEF test step which exercises the SCR RApplicationInfoView interface
+ */
+	{
+public:
+    CAppInfoView(CScrTestServer& aParent);
+			
+protected:
+	// From CScrTestStep
+	void ImplTestStepPreambleL();
+	void ImplTestStepL();
+	void ImplTestStepPostambleL();
+private:
+	//
+	void TestSessionL(TInt aNoOfEntries, const Usif::RApplicationInfoView& aSubSession, RPointerArray<Usif::TAppRegInfo>& aExpectedEntries);
+	void GetAppEntryFromConfigL(RPointerArray<Usif::TAppRegInfo>& aEntries);
+	void VerifyNonReturnedEntriesL(const RPointerArray<Usif::TAppRegInfo>& aExpectedEntries);
+	};
+
 #endif /* SUBSESSIONSTEPS_H */
--- a/installationservices/swcomponentregistry/test/tscr/inc/tscrdefs.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/inc/tscrdefs.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -57,6 +57,34 @@
 _LIT(KGlobalIdCount,"GlobalIdCount");
 _LIT(KOperationType, "OperationType");
 _LIT(KLogsCountParamName, "LogsCount");
+// appreg related attribute names
+_LIT(KOwnedFileName, "FileName");
+_LIT(KServiceUid, "ServiceUid");
+_LIT(KServiceOpaqueLocale, "ServiceOpaqueLocale");
+_LIT(KServiceOpaqueData, "ServiceOpaqueData");
+_LIT(KAppOpaqueDataLocale, "AppOpaqueLocale");
+_LIT(KAppOpaqueData, "AppOpaqueData");
+_LIT(KServiceDataTypePriority, "ServiceDataTypePriority");
+_LIT(KServiceDataType, "ServiceDataType");
+_LIT(KLocShortCaption, "LocShortCaption");
+_LIT(KLocAppLanguage, "LocAppLanguage");
+_LIT(KLocGroupName, "LocGroupName");
+_LIT(KLocCaption, "LocCaption");
+_LIT(KLocIconFileName, "LocIconFileName");
+_LIT(KLocNumberOfAppIcons, "LocNumberOfAppIcons");
+_LIT(KVwUid, "VwUid");
+_LIT(KVwScreenMode, "VwScreenMode");
+_LIT(KVwCaption, "VwCaption");
+_LIT(KVwIconFileName, "VwIconFileName");
+_LIT(KVwNumberOfAppIcons, "VwNumberOfAppIcons");
+_LIT(KPropertyLocale, "PropertyLocale");
+_LIT(KPropertyName, "PropertyName");
+_LIT(KPropertyIntValue, "PropertyIntValue");
+_LIT(KPropertyStrValue, "PropertyStrValue");
+_LIT(KViewDataCount, "ViewDataCount");
+_LIT(KServiceOpaqueDataInfoCount, "ServiceOpaqueDataInfoCount");
+_LIT(KServiceDataTypeCount,"ServiceDataTypeCount");
+_LIT(KAppUid, "AppUid");
 
 // File related attribute names
 _LIT(KSetSizeName, "SetSize");
@@ -99,4 +127,13 @@
 // Constants
 const TChar KComponentIdDelimeter = ',';
 
+//Apparc related attributes
+_LIT(KAppEntriesCountName, "AppEntriesCount");
+// TAppRegInfo related attribute  names
+_LIT(KIntTAppInfoUID, "TAppInfoUID");
+_LIT(KStringTAppInfoFileName, "TAppInfoFileName");
+_LIT(KStringTAppInfoCaption, "TAppInfoCaption");
+_LIT(KStringTAppInfoShortCaption, "TAppInfoShortCaption");
+
+
 #endif /* TSCRDEFS_H */
--- a/installationservices/swcomponentregistry/test/tscr/inc/tscrstep.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/inc/tscrstep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -29,6 +29,7 @@
 #include <scs/oomteststep.h>
 #include <usif/usifcommon.h>
 #include <usif/scr/scr.h>
+#include <usif/scr/appreginfo.h>
 
 class CScrTestServer;
 
@@ -92,15 +93,33 @@
 	TBool GetScomoStateFromConfigL(Usif::TScomoState& aScomoState, const TDesC& aAttributeName);
 	TInt GetSetSizeFromConfigL();
 	TBool Get64BitIntegerFromConfigL(const TDesC& aConfigKeyName, TInt64& aRetVal);
+	Usif::CApplicationRegistrationData* GetAppRegInfoFromConfigLC();
+	void GetAppOwnedFilesL(RPointerArray<HBufC>& aOwnedFileArray);
+	void GetAppServiceInfoL(RPointerArray<Usif::CServiceInfo>& aServiceInfoArray);
+	void GetAppLocalizableInfoL(RPointerArray<Usif::CLocalizableAppInfo>& aLocalizableAppInfoArray);
+	void GetAppOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aAppOpaqueDataInfoArray);
+	void GetServiceOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aServiceOpaqueDataInfoArray, TInt aServiceOpaqueDataInfoCount, TInt aStartingIndex);
+	Usif::TComponentId GetCompIdFromConfigL();
+    TBool GetUidFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TUid& aUid);
+	
+	TUid GetServiceUidL();
+	void GetAppUidL(TUid& aAppUid);
+	void GetViewDataInfoFromConfigL(RPointerArray<Usif::CAppViewData>& aAppViewInfoArray);
+	TBool NotEqual(const Usif::CCaptionAndIconInfo *aLhsEntry, const Usif::CCaptionAndIconInfo *aRhsEntry) const;
+	TBool NotEqualL(const RPointerArray<Usif::CServiceInfo>& aLhsEntry, const RPointerArray<Usif::CServiceInfo>& aRhsEntry) const;
 	
 	// Read component names from config file and add a new component
-	Usif::TComponentId AddNonLocalisableComponentL();
+	Usif::TComponentId AddNonLocalisableComponentL(Usif::RSoftwareComponentRegistry& aScrSession);
 	
 	// Read filter properties from config file
 	Usif::CComponentFilter* ReadComponentFilterFromConfigLC();
 	void ReadFilterPropertiesL(Usif::CComponentFilter* aFilter, TInt aPropertiesCount);
+	// Read Application info filter from config file
+	void ReadAppInfoFilterFromConfigL(Usif::CAppInfoFilter** aFilter);
+	Usif::TAppRegInfo* CScrTestStep::GetAppInfoFromConfigL(TBool aIsSingle , TInt aIndex=0 );
 	void StartTimer();
 	
+	
 protected:
 	CScrTestServer& iParent;
 	Usif::RSoftwareComponentRegistry iScrSession;
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-differentbuildnumber.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-multiapp.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-newermajordbversion.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-newerminordbversion.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-noentriesinversiontable.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-noversiontable.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-oldermajordbversion.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr-olderminordbversion.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr_large.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr_medium.db has changed
Binary file installationservices/swcomponentregistry/test/tscr/scripts/data/scr_small.db has changed
--- a/installationservices/swcomponentregistry/test/tscr/scripts/tscr.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/scripts/tscr.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -47,6 +47,11 @@
 SourceFilePath=z:\tusif\tscr\data\scr_large.db
 TargetFilePath=c:\sys\install\scr\scr.db
 
+[scr_multiapp]
+SourceFilePath=z:\tusif\tscr\data\scr-multiapp.db
+TargetFilePath=c:\sys\install\scr\scr.db
+
+
 [shared_data]
 shared_data_num = 1
 shared_name_1 = ComponentId  
@@ -3857,19 +3862,19 @@
 [register_files_consider_drives_false_test76]
 ComponentIdOffset=1
 FileCount=2
-FileName0=c:\file1
+FileName0=p:\file1
 ConsiderDrives0=False
-FileName1=z:\file2
+FileName1=m:\file2
 ConsiderDrives1=False
 
 [register_files_consider_drives_true_test76]
 ComponentIdOffset=0
 FileCount=2
-FileName0=c:\file3
-FileName1=z:\file4
-
-[components_on_driveC_test76]
-FilterDrivesList=C
+FileName0=p:\file3
+FileName1=m:\file4
+
+[components_on_driveP_test76]
+FilterDrivesList=P
 ComponentsCount=1
 ComponentIdOffset0=0
 ComponentName0=test76-Component2
@@ -3879,14 +3884,14 @@
 Removable0=True
 ComponentSize0=0
 ScomoState0=0
-InstalledDrives0=C,Z
+InstalledDrives0=P,M
 Version0=
 
 [component_files_test76]
 ComponentIdOffset=1
 FileCount=2
-FileName0=c:\file1
-FileName1=z:\file2
+FileName0=p:\file1
+FileName1=m:\file2
 
 [get_no_drives_component_test76]
 ComponentIdOffset=1
--- a/installationservices/swcomponentregistry/test/tscr/scripts/tscr.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/scripts/tscr.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -20,3 +20,5 @@
 RUN_SCRIPT z:\tusif\tscrdatalayer\tscr_datalayer.script
 RUN_SCRIPT z:\tusif\tscr\tscr_api.script
 RUN_SCRIPT z:\tusif\tscr\tscr_versioning.script
+RUN_SCRIPT z:\tusif\tscr\tscr_appreginfo.script
+RUN_SCRIPT z:\tusif\tscr\tscrapparc.script
--- a/installationservices/swcomponentregistry/test/tscr/scripts/tscr_api.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/scripts/tscr_api.script	Fri Apr 16 15:05:20 2010 +0300
@@ -21,6 +21,7 @@
 PRINT Run Software Component Registry (SCR) API Tests
 
 // Load Suite
+LOAD_SUITE tSisRegistryTest
 LOAD_SUITE tscr -SharedData // SharedData is used for sharing the componentid between test steps
 SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
 
@@ -28,10 +29,11 @@
 RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tscr\tscr.ini db_file 
 
 //! @SYMTestCaseID		API-SEC-SCR-API-0001
-//! @SYMTestCaseDesc 		Add a single software component with component name and vendor
+//! @SYMTestCaseDesc 		Change current locale to english as some test cases assume it & Add a single software component with component name and vendor
 
 START_TESTCASE API-SEC-SCR-API-0001
 
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
 RUN_TEST_STEP 100 tscr SCRAddComponent z:\tusif\tscr\tscr.ini common_component_names
 RUN_TEST_STEP 100 tscr SCRGetComponent z:\tusif\tscr\tscr.ini common_component_attributes
 
@@ -1454,8 +1456,8 @@
 // Register same files to both components, while setting the flag to false for the first component
 RUN_TEST_STEP 100 tscr SCRRegisterFile z:\tusif\tscr\tscr.ini register_files_consider_drives_false_test76
 RUN_TEST_STEP 100 tscr SCRRegisterFile z:\tusif\tscr\tscr.ini register_files_consider_drives_true_test76
-// Check that filter on components which have files on drive C does not return component 1, but returns component 2
-RUN_TEST_STEP 100 tscr ScrComponentRegistrySubsession z:\tusif\tscr\tscr.ini components_on_driveC_test76
+// Check that filter on components which have files on drive P does not return component 1, but returns component 2
+RUN_TEST_STEP 100 tscr ScrComponentRegistrySubsession z:\tusif\tscr\tscr.ini components_on_driveP_test76
 // Verify that files were registered to the first component
 RUN_TEST_STEP 100 tscr ScrFileListSubsession z:\tusif\tscr\tscr.ini component_files_test76
 // Verify that the first component does not list any registered drives
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscr/scripts/tscr_appreginfo.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,2632 @@
+// Configuration file for Application Registration API Tests
+[db_file]
+DbFilePath=c:\sys\install\scr\scr.db
+JournalFilePath=c:\sys\install\scr\scr.db-journal
+
+[log_file]
+DbFilePath=c:\private\10285bc0\scr.log
+JournalFilePath=c:\private\10285bc0\scr_tmp.log
+
+[add_app_reg_info_4]
+IsMultiApp=True
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001237
+AppFile=appname4
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+OpaqueData=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=2
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc
+VwIconFileName0=viewiconfile
+VwNumberOfAppIcons0=0
+LocShortCaption1=sc0
+LocAppLanguage1=1
+LocGroupName1=Games
+LocCaption1=c0
+LocIconFileName1=iconfile
+LocNumberOfAppIcons1=2
+ViewDataCount1=1
+VwUid1=45689123
+VwScreenMode1=0
+VwCaption1=vc
+VwIconFileName1=viewiconfile
+VwNumberOfAppIcons1=0
+PropertiesCount=3
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+PropertyName1=p2
+PropertyType1=2
+PropertyValue1=101
+PropertyName2=p3
+PropertyType2=1
+PropertyValue2=asdfg
+
+[add_app_reg_info_5]
+IsMultiApp=True
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001238
+AppFile=appname5
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+OpaqueData=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=2
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc
+VwIconFileName0=viewiconfile
+VwNumberOfAppIcons0=0
+LocShortCaption1=sc0
+LocAppLanguage1=1
+LocGroupName1=Games
+LocCaption1=c0
+LocIconFileName1=iconfile
+LocNumberOfAppIcons1=2
+ViewDataCount1=1
+VwUid1=45689123
+VwScreenMode1=0
+VwCaption1=vc
+VwIconFileName1=viewiconfile
+VwNumberOfAppIcons1=0
+PropertiesCount=3
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+PropertyName1=p2
+PropertyType1=2
+PropertyValue1=101
+PropertyName2=p3
+PropertyType2=1
+PropertyValue2=asdfg
+
+[add_app_reg_info]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=1
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=2
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc
+VwIconFileName0=viewiconfile
+VwNumberOfAppIcons0=0
+LocShortCaption1=sc0
+LocAppLanguage1=1
+LocGroupName1=Games
+LocCaption1=c0
+LocIconFileName1=iconfile
+LocNumberOfAppIcons1=2
+ViewDataCount1=1
+VwUid1=45689123
+VwScreenMode1=0
+VwCaption1=vc
+VwIconFileName1=viewiconfile
+VwNumberOfAppIcons1=0
+PropertiesCount=3
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+PropertyName1=p2
+PropertyType1=2
+PropertyValue1=101
+PropertyName2=p3
+PropertyType2=1
+PropertyValue2=asdfg
+
+[add_app_reg_info_21]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=1
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc
+VwIconFileName0=viewiconfile
+VwNumberOfAppIcons0=0
+PropertiesCount=3
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+PropertyName1=p2
+PropertyType1=2
+PropertyValue1=101
+PropertyName2=p3
+PropertyType2=1
+PropertyValue2=asdfg
+
+[del_app_entry]
+UseGlobalId=True
+GlobalIdName=Component_Global
+SoftwareType=plain
+ComponentIdOffset=0
+
+
+[add_app_reg_info_sameappuid]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+
+[add_app_reg_info_sameappfile_1]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global1221
+AppUid=A0001221
+AppFile=appname
+
+[add_app_reg_info_sameappfile_2]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global1221
+AppUid=A0001221
+AppFile=ApPnAmE
+
+[add_app_reg_info_nullappuid]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=0
+AppFile=appname
+
+[add_app_reg_info_nullappfile]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+AppUid=A0006789
+GlobalIdName=Component_Global
+AppFile=
+
+[add_app_reg_info_nocaptioniconinfo]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0006789
+AppFile=appname
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=1
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+VwDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+
+[test_component_app1]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=81110008
+AppFile=TestApp.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games123
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=Null
+OwnedFileCount=2
+FileName0=TestApp0
+FileName1=TestApp1
+
+[del_test_component]
+UseGlobalId=True
+GlobalIdName=TestComponentGlobalId
+SoftwareType=plain
+ComponentIdOffset=0
+
+[test_component_app2]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=81110009
+AppFile=TestApp1.exe
+Attributes=0
+Hidden=6
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games1234
+DefaultScreenNumber=4
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=Null
+OwnedFileCount=1
+FileName0=TestApp2
+
+[add_app_to_non_existent_comp]
+UseComponentId=369
+AppUid=8111000A
+AppFile=TestApp123.exe
+Attributes=0
+Hidden=1
+Embeddability=2
+NewFile=0
+Launch=4
+GroupName=XYZ123
+DefaultScreenNumber=8
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=Null
+OwnedFileCount=1
+FileName0=TestApp123
+
+[appownedfiles]
+AppUid=A0001234
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+
+[add_app_reg_info_noappownedfiles]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=0
+
+[noappownedfiles]
+AppUid=A0001234
+OwnedFileCount=0
+
+[add_app_reg_info_nogroupname]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=0
+
+[appcapability]
+AppUid=A0001234
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+
+[appcapability_nogroupname]
+AppUid=A0001234
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=
+
+[add_app_reg_info_nolocalizedinfo]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[add_app_reg_info_nocaptionandiconinfo]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+
+[add_app_reg_info_onlylocalizedinfo]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+
+[add_app_reg_info_noviewcaptionandiconinfo]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+ViewDataCount=1
+VwUid0=45689123
+VwScreenMode0=0
+
+[appicon]
+AppUid=A0001234
+LocIconFileName=iconfile
+
+[noappicon]
+AppUid=A0001234
+LocIconFileName
+
+[appviewicon]
+AppUid=A0001234
+VwUid=45689123
+VwIconFileName=viewiconfile
+
+[noappviewicon]
+AppUid=A0001234
+VwUid=0
+VwIconFileName
+
+[add_app_reg_info_nolocalizedinfoforenglish]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=24
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile_IntFr
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc0
+VwIconFileName0=viewiconfile_IntFr0
+VwNumberOfAppIcons0=1
+VwUid1=45689124
+VwScreenMode1=1
+VwCaption1=vc1
+VwIconFileName1=viewiconfile_IntFr1
+VwNumberOfAppIcons1=1
+
+[appicon_nolocalizedinfoforenglish]
+AppUid=A0001234
+LocIconFileName=iconfile_IntFr
+
+[appviewicon_nolocalizedinfoforenglish]
+AppUid=A0001234
+VwUid=45689123
+VwIconFileName=viewiconfile_IntFr0
+
+[add_app_reg_info_noviewdatafornearestlanguage]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=24
+AppOpaqueData0=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=24
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile_IntFr
+LocNumberOfAppIcons0=2
+
+[noviewdatafornearestlanguage]
+AppUid=A0001234
+VwUid=45689123
+VwIconFileName
+
+
+//APPINS-SCR-APPREGINFO-API-0028
+
+[add_app_with_localizable_info]
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000111
+AppFile=appname111
+
+LocalizableAppInfoCount=3
+
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+ViewDataCount0=3
+VwUid0=1
+VwScreenMode0=0
+VwCaption0=cap1
+VwIconFileName0=icon1
+VwNumberOfAppIcons0=0
+VwUid1=2
+VwScreenMode1=1
+VwCaption1=cap2
+VwIconFileName1=icon2
+VwNumberOfAppIcons1=1
+VwUid2=3
+VwScreenMode2=0
+VwCaption2=cap3
+VwIconFileName2=icon3
+VwNumberOfAppIcons2=1
+
+LocShortCaption1=sc1
+LocAppLanguage1=10
+LocGroupName1=Games
+ViewDataCount1=2
+VwUid3=4
+VwScreenMode3=1
+VwCaption3=cap4
+VwIconFileName3=icon4
+VwNumberOfAppIcons3=1
+VwUid4=5
+VwScreenMode4=0
+VwCaption4=cap5
+VwIconFileName4=icon5
+VwNumberOfAppIcons4=1
+
+LocShortCaption2=sc2
+LocAppLanguage2=20
+LocGroupName2=Games
+ViewDataCount2=1
+VwUid5=6
+VwScreenMode5=1
+VwCaption5=cap5
+VwIconFileName5=icon5
+VwNumberOfAppIcons5=3
+
+
+[get_app_view_info]
+AppUid=A0000111
+
+ViewDataCount=3
+VwUid0=1
+VwScreenMode0=0
+VwCaption0=cap1
+VwIconFileName0=icon1
+VwNumberOfAppIcons0=0
+VwUid1=2
+VwScreenMode1=1
+VwCaption1=cap2
+VwIconFileName1=icon2
+VwNumberOfAppIcons1=1
+VwUid2=3
+VwScreenMode2=0
+VwCaption2=cap3
+VwIconFileName2=icon3
+VwNumberOfAppIcons2=1
+
+//APPINS-SCR-APPREGINFO-API-0029
+
+[add_app_with_partial_view_info]
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000222
+AppFile=appname222
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=sc3
+LocAppLanguage0=1
+LocGroupName0=Games
+ViewDataCount0=1
+VwUid0=6
+VwScreenMode0=0
+
+[get_app_view_info_partial]
+AppUid=A0000222
+ViewDataCount=1
+VwUid0=6
+VwScreenMode0=0
+
+//APPINS-SCR-APPREGINFO-API-0029b
+
+[add_app_with_partial_view_info_2]
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000222
+AppFile=appname222
+
+LocalizableAppInfoCount=1
+LocShortCaption0=sc3
+LocAppLanguage0=1
+LocGroupName0=Games
+ViewDataCount0=0
+
+[get_app_view_info_partial_2]
+AppUid=A0000222
+ViewDataCount=0
+
+//APPINS-SCR-APPREGINFO-API-0030
+[get_view_info_for_nonexisting_app]
+AppUid=A0000456
+ViewDataCount=0
+
+//APPINS-SCR-APPREGINFO-API-0031
+
+[add_app_with_localizable_info_for_international_french]
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000333
+AppFile=appname333
+
+LocalizableAppInfoCount=2
+
+LocShortCaption0=sc0
+LocAppLanguage0=24
+LocGroupName0=Games
+ViewDataCount0=3
+VwUid0=1
+VwScreenMode0=0
+VwCaption0=cap1
+VwIconFileName0=icon1
+VwNumberOfAppIcons0=0
+VwUid1=2
+VwScreenMode1=1
+VwCaption1=cap2
+VwIconFileName1=icon2
+VwNumberOfAppIcons1=1
+VwUid2=3
+VwScreenMode2=0
+VwCaption2=cap3
+VwIconFileName2=icon3
+VwNumberOfAppIcons2=1
+
+LocShortCaption1=sc1
+LocAppLanguage1=1
+LocGroupName1=Games
+ViewDataCount1=2
+VwUid3=4
+VwScreenMode3=1
+VwCaption3=cap4
+VwIconFileName3=icon4
+VwNumberOfAppIcons3=1
+VwUid4=5
+VwScreenMode4=0
+VwCaption4=cap5
+VwIconFileName4=icon5
+VwNumberOfAppIcons4=1
+
+
+[get_app_view_french]
+AppUid=A0000333
+
+ViewDataCount=3
+VwUid0=1
+VwScreenMode0=0
+VwCaption0=cap1
+VwIconFileName0=icon1
+VwNumberOfAppIcons0=0
+VwUid1=2
+VwScreenMode1=1
+VwCaption1=cap2
+VwIconFileName1=icon2
+VwNumberOfAppIcons1=1
+VwUid2=3
+VwScreenMode2=0
+VwCaption2=cap3
+VwIconFileName2=icon3
+VwNumberOfAppIcons2=1
+
+[get_app_view_german]
+AppUid=A0000333
+ViewDataCount=0
+
+//common delete for APPINS-SCR-APPREGINFO-API-0028, APPINS-SCR-APPREGINFO-API-0029, APPINS-SCR-APPREGINFO-API-0031
+
+[del_app_entry_details]
+UseGlobalId=True
+GlobalIdName=Component_Global_XYZ
+SoftwareType=plain
+ComponentIdOffset=0
+
+
+//for tc API-SEC-SCR-API-0031 to 0039
+
+[AppInfoFilter0001-AP-loc01]
+IsVerification=ETrue
+AIFAllApps=ETrue
+AppEntriesCount=2
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=captionApp1loc01
+TAppInfoShortCaption0=sc01
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+TAppInfoCaption1=captionApp2loc01
+TAppInfoShortCaption1=scapp01
+NoOfEntries=5
+
+[AppInfoFilter0001-AP-loc02]
+IsVerification=ETrue
+AIFAllApps=ETrue
+AppEntriesCount=2
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=cl02
+TAppInfoShortCaption0=sc02
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+TAppInfoCaption1=captionApp2loc02
+TAppInfoShortCaption1=scapp02
+NoOfEntries=1
+
+[AppInfoFilter0002-AP-loc01]
+IsVerification=ETrue
+AIFAllApps=ETrue
+AIFAllAppsScreenMode=1
+AppEntriesCount=1
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=captionApp1loc01
+TAppInfoShortCaption0=sc01
+NoOfEntries=2
+
+[AppInfoFilter0002-AP-loc01-A]
+IsVerification=ETrue
+AIFAllApps=ETrue
+AIFAllAppsScreenMode=0
+AppEntriesCount=2
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=captionApp1loc01
+TAppInfoShortCaption0=sc01
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+TAppInfoCaption1=captionApp2loc01
+TAppInfoShortCaption1=scapp01
+
+NoOfEntries=100
+
+[AppInfoFilter0002-AP-loc01-B]
+IsVerification=ETrue
+AIFAllApps=ETrue
+AIFAllAppsScreenMode=0
+LocaleValue=02
+AppEntriesCount=2
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=cl02
+TAppInfoShortCaption0=sc02
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+TAppInfoCaption1=captionApp2loc02
+TAppInfoShortCaption1=scapp02
+
+NoOfEntries=100
+
+[AppInfoFilter0003-AP-loc01]
+IsVerification=ETrue
+AIFEmbApps=ETrue
+AppEntriesCount=2
+TAppInfoUID0=33333333
+TAppInfoFileName0=ThirdApp
+TAppInfoShortCaption0=scapp01
+TAppInfoUID1=55555555
+TAppInfoFileName1=fifthApp
+NoOfEntries=2
+
+[AppInfoFilter0003-AP-loc01-A]
+IsVerification=ETrue
+AIFEmbApps=ETrue
+AIFEmbAppScreanMode=5
+LocaleValue=02
+AppEntriesCount=0
+
+[AppInfoFilter0003-AP-loc01-B]
+IsVerification=ETrue
+AIFEmbApps=ETrue
+AIFEmbAppScreanMode=5
+LocaleValue=02
+AppEntriesCount=0
+
+[AppInfoFilter0003-AP-loc01-C]
+IsVerification=ETrue
+AIFEmbApps=ETrue
+AIFEmbAppScreanMode=5
+LocaleValue=01
+AppEntriesCount=1
+TAppInfoUID0=33333333
+TAppInfoFileName0=ThirdApp
+TAppInfoShortCaption0=scapp01
+
+[AppInfoFilter0003-AP-loc01-D]
+IsVerification=ETrue
+AIFEmbApps=ETrue
+AIFEmbAppScreanMode=0
+LocaleValue=01
+AppEntriesCount=1
+TAppInfoUID0=33333333
+TAppInfoFileName0=ThirdApp
+TAppInfoShortCaption0=scapp01
+
+
+[AppInfoFilter0004-AP-loc01]
+IsVerification=ETrue
+AIFFilEmbAppsEmbedabilityFilter=1
+EFilterVal0=6
+AppEntriesCount=2
+TAppInfoUID0=11111111
+TAppInfoFileName0=embedableApps
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+NoOfEntries=2
+
+[AppInfoFilter0004-AP-loc01-A]
+IsVerification=ETrue
+AIFFilEmbAppsEmbedabilityFilter=2
+EFilterVal0=6
+EFilterVal1=5
+AppEntriesCount=3
+TAppInfoUID0=11111111
+TAppInfoFileName0=embedableApps
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+TAppInfoUID2=33333333
+TAppInfoFileName2=ThirdApp
+TAppInfoShortCaption2=scapp01
+NoOfEntries=2
+
+[AppInfoFilter0004-AP-loc01-B]
+IsVerification=ETrue
+AIFFilEmbAppsEmbedabilityFilter=2
+AIFFilEmbAppsEmbedableScreenMode=5
+EFilterVal0=6
+EFilterVal1=5
+AppEntriesCount=1
+TAppInfoUID0=33333333
+TAppInfoFileName0=ThirdApp
+TAppInfoShortCaption0=scapp01
+NoOfEntries=2
+
+[AppInfoFilter0004-AP-loc01-C]
+IsVerification=ETrue
+AIFFilEmbAppsEmbedabilityFilter=3
+AIFFilEmbAppsEmbedableScreenMode=5
+EFilterVal0=7
+EFilterVal1=8
+EFilterVal1=9
+AppEntriesCount=0
+NoOfEntries=2
+ 
+[AppInfoFilter0005-AP-loc01]
+IsVerification=ETrue
+AIFFilAppsWithCapMask=1
+AIFFilAppsWithCapValue=1
+AppEntriesCount=3
+TAppInfoUID0=11111111
+TAppInfoFileName0=embedableApps
+TAppInfoUID1=55555555
+TAppInfoFileName1=fifthApp
+TAppInfoUID2=33333333
+TAppInfoFileName2=ThirdApp
+TAppInfoShortCaption2=scapp01
+NoOfEntries=2
+
+[AppInfoFilter0005-AP-loc01-A]
+IsVerification=ETrue
+AIFFilAppsWithCapMask=1
+AIFFilAppsWithCapValue=1
+AIFFilAppsWithCapScreenMode=5
+AppEntriesCount=1
+TAppInfoUID0=33333333
+TAppInfoFileName0=ThirdApp
+TAppInfoShortCaption0=scapp01 
+NoOfEntries=2
+
+[AppInfoFilter0005-AP-loc01-B]
+IsVerification=ETrue
+AIFFilAppsWithCapMask=8
+AIFFilAppsWithCapValue=8
+AIFFilAppsWithCapScreenMode=5
+AppEntriesCount=0
+NoOfEntries=2
+
+[AppInfoFilter0006-AP-loc01]
+IsVerification=ETrue
+AIFServerApps=A99611
+AppEntriesCount=2
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=captionApp1loc01
+TAppInfoShortCaption0=sc01
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+TAppInfoCaption1=captionApp2loc01
+TAppInfoShortCaption1=scapp01
+NoOfEntries=5
+
+[AppInfoFilter0006-AP-loc01-A]
+IsVerification=ETrue
+AIFServerApps=A99612
+AppEntriesCount=1
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=captionApp1loc01
+TAppInfoShortCaption0=sc01
+
+[AppInfoFilter0006-AP-loc01-B]
+NoVerification=ETrue
+AIFServerApps=A99615
+
+[AppInfoFilter0006-AP-loc01-C]
+IsVerification=ETrue
+AIFServerApps=1531C82
+AIFServerAppsScreenMode=5
+AppEntriesCount=1
+TAppInfoUID0=22222222
+TAppInfoFileName0=secondApp
+TAppInfoCaption0=captionApp2loc01
+TAppInfoShortCaption0=scapp01
+
+[AppInfoFilter0006-AP-loc01-D]
+NoVerification=ETrue
+AIFServerApps=1531C82
+AIFServerAppsScreenMode=5
+
+
+[AppInfoFilter0008-AP-loc01]
+IsVerification=ETrue
+AIFAllApps=ETrue
+AppEntriesCount=2
+TAppInfoUID0=11111111
+TAppInfoFileName0=allaps
+TAppInfoCaption0=captionApp1loc01
+TAppInfoShortCaption0=sc01
+TAppInfoUID1=22222222
+TAppInfoFileName1=secondApp
+TAppInfoCaption1=captionApp2loc01
+TAppInfoShortCaption1=scapp01
+NoOfEntries=-1
+
+[AppInfoFilter0008-AP-loc01-A]
+IsVerification=ETrue
+AIFAllApps=ETrue
+AIFAllAppsScreenMode=-1
+AppEntriesCount=0
+NoOfEntries=2
+
+[AppInfoFilter0009-AP-loc01]
+IsVerification=ETrue
+AIFFilAppsWithCapMask=-4
+AIFFilAppsWithCapValue=-5
+AppEntriesCount=0
+
+[AppInfoFilter0009-AP-loc01-A]
+IsVerification=ETrue
+AIFFilAppsWithCapMask=98989
+AIFFilAppsWithCapValue=87878
+AppEntriesCount=0
+
+[AppInfoFilter0010-AP-loc01]
+IsVerification=EFalse
+
+[AppEntryData01]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=11111111
+AppFile=allaps
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file1
+ServiceInfoCount=2
+ServiceUid0=A99611
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=1
+ServiceOpaqueData0=servicedata
+ServiceUid1=A99612
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale1=1
+ServiceOpaqueData1=servicedata1
+LocalizableAppInfoCount=2
+LocShortCaption0=sc01
+LocAppLanguage0=01
+LocGroupName0=application01
+LocCaption0=captionApp1loc01
+LocIconFileName0=iconfile01
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=11116001
+VwScreenMode0=1
+VwCaption0=vc1111116001
+VwIconFileName0=vcf1111116001
+VwNumberOfAppIcons0=5
+VwUid1=11116002
+VwScreenMode1=0
+VwCaption1=vc1111116002
+VwIconFileName1=vc1111116002
+VwNumberOfAppIcons1=0
+LocShortCaption1=sc02
+LocAppLanguage1=02
+LocGroupName1=application02
+LocCaption1=cl02
+LocIconFileName1=iconfile02
+LocNumberOfAppIcons1=100
+ViewDataCount1=2
+VwUid2=11116003
+VwScreenMode2=1
+VwCaption2=vc1111116003
+VwIconFileName2=vc1111116003
+VwNumberOfAppIcons2=0
+VwUid3=11116004
+VwScreenMode3=0
+VwCaption3=vc1111116004
+VwIconFileName3=vc1111116004
+VwNumberOfAppIcons3=1
+PropertiesCount=1
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+
+[AppEntryData02]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=22222222
+AppFile=secondApp
+Attributes=09
+Hidden=0
+Embeddability=01
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=1
+FileName0=secondComponentFirstFile
+ServiceInfoCount=5
+ServiceUid0=A99611
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=servicedata
+ServiceUid1=1531C82
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=servicedata1
+ServiceUid2=1531C83
+ServiceOpaqueDataInfoCount2=1
+ServiceOpaqueLocale2=0
+ServiceOpaqueData2=servicedata2
+ServiceUid3=1531C84
+ServiceOpaqueDataInfoCount3=1
+ServiceOpaqueLocale3=0
+ServiceOpaqueData3=servicedata3
+ServiceUid4=1531C85
+ServiceOpaqueDataInfoCount4=1
+ServiceOpaqueLocale4=0
+ServiceOpaqueData4=servicedata4
+LocalizableAppInfoCount=2
+LocShortCaption0=scapp01
+LocAppLanguage0=01
+LocGroupName0=game01
+LocCaption0=captionApp2loc01
+LocIconFileName0=iconfile01
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=22226001
+VwScreenMode0=0
+VwCaption0=vc2222226001
+VwIconFileName0=vcf2222226001
+VwNumberOfAppIcons0=5
+VwUid1=22226002
+VwScreenMode1=5
+VwCaption1=vc2222226002
+VwIconFileName1=vc2222226002
+VwNumberOfAppIcons1=0
+LocShortCaption1=scapp02
+LocAppLanguage1=02
+LocGroupName1=game02
+LocCaption1=captionApp2loc02
+LocIconFileName1=iconfile02
+LocNumberOfAppIcons1=100
+ViewDataCount1=2
+VwUid2=22226003
+VwScreenMode2=1
+VwCaption2=vc2222226003
+VwIconFileName2=vc2222226003
+VwNumberOfAppIcons2=0
+VwUid3=22226004
+VwScreenMode3=0
+VwCaption3=vc2222226004
+VwIconFileName3=vc2222226004
+VwNumberOfAppIcons3=1
+PropertiesCount=1
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+
+[AppEntryDataForTC-AppInfoFilter0003-AP-01]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=11111111
+AppFile=embedableApps
+Attributes=01
+Hidden=0
+Embeddability=06
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[AppEntryDataForTC-AppInfoFilter0003-AP-02]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=22222222
+AppFile=secondApp
+Attributes=02
+Hidden=0
+Embeddability=06
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=1
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[AppEntryDataForTC-AppInfoFilter0003-AP-04]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=44444444
+AppFile=fourthApp
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=utility
+DefaultScreenNumber=1
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[AppEntryDataForTC-AppInfoFilter0003-AP-05]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=55555555
+AppFile=fifthApp
+Attributes=01
+Hidden=0
+Embeddability=02
+NewFile=0
+Launch=0
+GroupName=utility
+DefaultScreenNumber=1
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[AppEntryDataForTC-AppInfoFilter0003-AP-03]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=33333333
+AppFile=ThirdApp
+Attributes=03
+Hidden=0
+Embeddability=01
+NewFile=0
+Launch=0
+GroupName=tools
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=1
+FileName0=dummeyfile
+LocalizableAppInfoCount=2
+LocShortCaption0=scapp01
+LocAppLanguage0=01
+LocGroupName0=tools01
+ViewDataCount0=2
+VwUid0=3333336001
+VwScreenMode0=0
+VwCaption0=vc3333336001
+VwIconFileName0=vcf3333336001
+VwNumberOfAppIcons0=5
+VwUid1=333336002
+VwScreenMode1=5
+VwCaption1=vc3333336002
+VwIconFileName1=vc3333336002
+VwNumberOfAppIcons1=0
+LocShortCaption1=scapp02
+LocAppLanguage1=02
+LocGroupName1=tools02
+ViewDataCount1=2
+VwUid2=3333336003
+VwScreenMode2=1
+VwCaption2=vc3333336003
+VwIconFileName2=vc3333336003
+VwNumberOfAppIcons2=0
+VwUid3=3333336004
+VwScreenMode3=0
+VwCaption3=vc3333336004
+VwIconFileName3=vc3333336004
+VwNumberOfAppIcons3=1
+
+[AppEntryDataForTC-AppInfoFilter0004-AP-03]
+IsMultiApp=True
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobalId
+AppUid=33333333
+AppFile=ThirdApp
+Attributes=03
+Hidden=0
+Embeddability=05
+NewFile=0
+Launch=0
+GroupName=tools
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=1
+FileName0=dummeyfile
+LocalizableAppInfoCount=2
+LocShortCaption0=scapp01
+LocAppLanguage0=01
+LocGroupName0=tools01
+ViewDataCount0=2
+VwUid0=3333336001
+VwScreenMode0=0
+VwCaption0=vc3333336001
+VwIconFileName0=vcf3333336001
+VwNumberOfAppIcons0=5
+VwUid1=333336002
+VwScreenMode1=5
+VwCaption1=vc3333336002
+VwIconFileName1=vc3333336002
+VwNumberOfAppIcons1=0
+LocShortCaption1=scapp02
+LocAppLanguage1=02
+LocGroupName1=tools02
+ViewDataCount1=2
+VwUid2=3333336003
+VwScreenMode2=1
+VwCaption2=vc3333336003
+VwIconFileName2=vc3333336003
+VwNumberOfAppIcons2=0
+VwUid3=3333336004
+VwScreenMode3=0
+VwCaption3=vc3333336004
+VwIconFileName3=vc3333336004
+VwNumberOfAppIcons3=1
+
+[langauge_to_english]
+language=01
+
+[langauge_to_english_american]
+language=10
+
+[langauge_to_french]
+language=02
+
+[langauge_to_german]
+language=03
+
+[del_component_and_AppEntry]
+UseGlobalId=True
+GlobalIdName=TestComponentGlobalId
+SoftwareType=plain
+ComponentIdOffset=0
+
+[shared_data]
+shared_data_num = 1
+shared_name_1 = ComponentId  
+
+
+//APPINS-SCR-APPREGINFO-API-0042
+[add_app_reg_info_invalid_localizable_info]
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000567
+AppFile=appname567
+
+LocalizableAppInfoCount=3
+
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+ViewDataCount0=3
+VwUid0=1
+VwScreenMode0=0
+VwCaption0=cap1
+VwIconFileName0=icon1
+VwNumberOfAppIcons0=0
+VwUid1=2
+VwScreenMode1=1
+VwCaption1=cap2
+VwIconFileName1=icon2
+VwNumberOfAppIcons1=1
+VwUid2=3
+VwScreenMode2=0
+VwCaption2=cap3
+VwIconFileName2=icon3
+VwNumberOfAppIcons2=1
+
+LocShortCaption1=sc1
+LocAppLanguage1=1
+LocGroupName1=Games
+ViewDataCount1=2
+VwUid3=4
+VwScreenMode3=1
+VwCaption3=cap4
+VwIconFileName3=icon4
+VwNumberOfAppIcons3=1
+VwUid4=5
+VwScreenMode4=0
+VwCaption4=cap5
+VwIconFileName4=icon5
+VwNumberOfAppIcons4=1
+
+LocShortCaption2=sc2
+LocAppLanguage2=20
+LocGroupName2=Games
+ViewDataCount2=1
+VwUid5=6
+VwScreenMode5=1
+VwCaption5=cap5
+VwIconFileName5=icon5
+VwNumberOfAppIcons5=3
+
+[add_app_reg_info_English]
+IsMultiApp=True
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=1
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc
+VwIconFileName0=viewiconfile
+VwNumberOfAppIcons0=0
+PropertiesCount=1
+PropertyName0=p1
+PropertyType0=2
+PropertyValue0=100
+
+[add_app_reg_info_complete_for_english]
+IsMultiApp=True
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001235
+AppFile=appname1
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=2
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=1
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+ServiceDataTypePriority1=1
+ServiceDataType1=richtext/plain
+ServiceUid1=3ADE68B2
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale1=1
+ServiceOpaqueData1=servicedata
+ServiceDataTypeCount1=0
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=01
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=3
+VwUid0=1
+VwScreenMode0=0
+VwCaption0=cap1
+VwIconFileName0=icon1
+VwNumberOfAppIcons0=0
+VwUid1=2
+VwScreenMode1=1
+VwCaption1=cap2
+VwIconFileName1=icon2
+VwNumberOfAppIcons1=1
+VwUid2=3
+VwScreenMode2=0
+PropertiesCount=2
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+PropertyName1=p2
+PropertyType1=2
+PropertyValue1=101
+
+[add_app_reg_info_complete_for_nearestlanguage]
+IsMultiApp=True
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001236
+AppFile=appname2
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=24
+AppOpaqueData0=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=2
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=24
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+ServiceDataTypePriority1=1
+ServiceDataType1=richtext/plain
+ServiceUid1=3ADE68B2
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale1=24
+ServiceOpaqueData1=servicedata
+ServiceDataTypeCount1=0
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=24
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=3
+VwUid0=1
+VwScreenMode0=0
+VwCaption0=cap1
+VwIconFileName0=icon1
+VwNumberOfAppIcons0=0
+VwUid1=2
+VwScreenMode1=1
+VwCaption1=cap2
+VwIconFileName1=icon2
+VwNumberOfAppIcons1=1
+VwUid2=3
+VwScreenMode2=0
+PropertiesCount=1
+PropertyName0=p1
+PropertyType0=3
+PropertyValue0=asd
+PropertyLocale0=0
+
+[add_app_reg_info_noviewdatafornearestlanguage_english]
+IsMultiApp=True
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001236
+AppFile=appname3
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile_En
+LocNumberOfAppIcons0=2
+
+[ApplicationRegistrationData_Negative_NoOfEntries]
+Locale  = 01
+NoOfEntries=-2
+AppRegEntriesConfigCount=1
+configsection0 = add_app_reg_info
+
+[ApplicationRegistrationData_NotExist]
+AppRegEntriesConfigCount=1
+configsection0 = app_reg_info_no_localizable_info
+
+[app_reg_info_no_localizable_info]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+LocalizableAppInfoCount=0
+
+[ApplicationRegistrationData_MultipleApp_for_english]
+Locale  = 01
+NoOfEntries=3
+AppRegEntriesConfigCount=3
+configsection0 = add_app_reg_info_English
+configsection1 = add_app_reg_info_complete_for_english
+configsection2 = add_app_reg_info_noviewdatafornearestlanguage_english
+
+[ApplicationRegistrationData_complete_for_english_Test09]
+Locale  = 01
+NoOfEntries=3
+AppRegAppUidCount=3
+AppRegAppUid0 = abc
+AppRegAppUid1 = abd
+AppRegAppUid2 = A0001235
+AppRegEntriesConfigCount=1
+configsection0 = add_app_reg_info_complete_for_english
+
+[ApplicationRegistrationData_complete_for_english_Test10]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = A0001235
+AppRegEntriesConfigCount=0
+
+[ApplicationRegistrationData_MultipleApp_for_english_test11]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=2
+AppRegAppUid0 = A0001234
+AppRegAppUid1 = A0001236
+AppRegEntriesConfigCount=2
+configsection0 = add_app_reg_info_English
+configsection1 = add_app_reg_info_noviewdatafornearestlanguage_english
+
+[ApplicationRegistrationData_MultipleApp_for_english_test12]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = A0001235
+AppRegEntriesConfigCount=0
+
+[ApplicationRegistrationData_MultipleApp_for_english_test13]
+Locale  = 01
+NoOfEntries=2
+AppRegAppUidCount=1
+AppRegAppUid0 = A0001235
+AppRegEntriesConfigCount=4
+configsection0 = add_app_reg_info_complete_for_english
+configsection1 = add_app_reg_info_noviewdatafornearestlanguage_english
+configsection2 = add_app_reg_info_4
+configsection3 = add_app_reg_info_5
+
+[ApplicationRegistrationData_MultipleApp_NoLocale]
+NoOfEntries=3
+AppRegEntriesConfigCount=3
+configsection0 = add_app_reg_info_21
+configsection1 = add_app_reg_info_complete_for_english
+configsection2 = add_app_reg_info_noviewdatafornearestlanguage_english
+
+[ApplicationRegistrationData_noappownedfiles]
+AppRegEntriesConfigCount=1
+configsection0 = add_app_reg_info_onlylocalizedinfo
+
+[ApplicationRegistrationData_noviewdatafornearestlanguage]
+AppRegEntriesConfigCount=1
+configsection0 = add_app_reg_info_noviewdatafornearestlanguage
+
+[ApplicationRegistrationData_complete_for_english]
+AppRegEntriesConfigCount=1
+configsection0 = add_app_reg_info_complete_for_english
+
+[ApplicationRegistrationData_complete_for_nearestlanguage]
+AppRegEntriesConfigCount=1
+configsection0 = add_app_reg_info_complete_for_nearestlanguage
+
+
+
+//APPINS-SCR-APPREGINFO-API-0043
+[add_app1_with_service_info]
+IsMultiApp=True
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000777
+AppFile=appname1
+
+ServiceInfoCount=2
+ServiceUid0=3ADE67DF
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=opaquedata1
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc
+ServiceDataTypePriority1=1
+ServiceDataType1=txt
+
+ServiceUid1=3ADE684E
+ServiceDataTypeCount1=1
+ServiceDataTypePriority2=4
+ServiceDataType2=text/plain
+
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+
+[add_app2_with_service_info]
+IsMultiApp=True
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000888
+AppFile=appname2
+
+ServiceInfoCount=1
+ServiceUid0=3ADE67DF
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=opaquedata3
+ServiceDataTypeCount0=3
+ServiceDataTypePriority0=10
+ServiceDataType0=doc
+ServiceDataTypePriority1=1
+ServiceDataType1=txt
+ServiceDataTypePriority2=5
+ServiceDataType2=richtext
+
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+
+[add_app3_with_service_info]
+IsMultiApp=True
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000999
+AppFile=appname3
+
+ServiceInfoCount=1
+ServiceUid0=3ADE68BD
+ServiceOpaqueData0=opaquedata4
+ServiceDataTypeCount0=0
+
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+
+[add_app4_with_service_info]
+IsMultiApp=True
+ComponentName=ComponentXYZ
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global_XYZ
+AppUid=A0000666
+AppFile=appname4
+
+ServiceInfoCount=1
+ServiceUid0=3ADE67DF
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=opaquedata5
+ServiceDataTypeCount0=0
+
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+
+
+[get_service_info_given_appuid]
+FilterToSet=1
+AppUid=A0000777
+ServiceInfoCount=2
+ServiceUid0=3ADE67DF
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=opaquedata1
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc
+ServiceDataTypePriority1=1
+ServiceDataType1=txt
+
+ServiceUid1=3ADE684E
+ServiceDataTypeCount1=1
+ServiceDataTypePriority2=4
+ServiceDataType2=text/plain
+
+
+[get_service_info_given_serviceuid]
+FilterToSet=2
+ServiceUid=3ADE67DF
+ServiceInfoCount=3
+
+ServiceUid0=3ADE67DF
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=opaquedata1
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc
+ServiceDataTypePriority1=1
+ServiceDataType1=txt
+
+ServiceUid1=3ADE67DF
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale1=0
+ServiceOpaqueData1=opaquedata3
+ServiceDataTypeCount1=3
+ServiceDataTypePriority2=10
+ServiceDataType2=doc
+ServiceDataTypePriority3=1
+ServiceDataType3=txt
+ServiceDataTypePriority4=5
+ServiceDataType4=richtext
+
+ServiceUid2=3ADE67DF
+ServiceOpaqueDataInfoCount2=1
+ServiceOpaqueLocale2	=0
+ServiceOpaqueData2=opaquedata5
+ServiceDataTypeCount2=0
+
+
+[get_service_info_given_serviceuid_and_datatype]
+FilterToSet=3
+ServiceUid=3ADE67DF
+ServiceDataType=txt
+ServiceInfoCount=2
+
+ServiceUid0=3ADE67DF
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=opaquedata1
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=txt
+
+ServiceUid1=3ADE67DF
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale1=0
+ServiceOpaqueData1=opaquedata3
+ServiceDataTypeCount1=1
+ServiceDataTypePriority1=1
+ServiceDataType1=txt
+
+[get_service_info_given_appuid_and_serviceuid]
+FilterToSet=4
+AppUid=A0000777
+ServiceUid=3ADE67DF
+ServiceInfoCount=1
+ServiceUid0=3ADE67DF
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=opaquedata1
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc
+ServiceDataTypePriority1=1
+ServiceDataType1=txt
+
+
+[del_app_with_service_info]
+UseGlobalId=True
+GlobalIdName=Component_Global_XYZ
+SoftwareType=plain
+ComponentIdOffset=0
+
+
+//APPINS-SCR-APPREGINFO-API-0044
+
+[get_service_info_given_nonexisting_appuid]
+FilterToSet=1
+AppUid=A0000678
+
+[get_service_info_given_nonexisting_serviceuid]
+FilterToSet=2
+ServiceUid=3ADE69A7
+
+[get_service_info_given_nonexisting_serviceuid_and_datatype1]
+FilterToSet=3
+ServiceUid=3ADE67DF
+ServiceDataType=text/plain
+
+[get_service_info_given_nonexisting_serviceuid_and_datatype2]
+FilterToSet=3
+ServiceUid=3ADE69A7
+ServiceDataType=doc
+
+[get_service_info_given_nonexisting_serviceuid_and_datatype3]
+FilterToSet=3
+ServiceUid=3ADE69A7
+ServiceDataType=html
+
+[get_service_info_given_nonexisting_appuid_and_serviceuid1]
+FilterToSet=4
+AppUid=A0000678
+ServiceUid=3ADE67DF
+
+[get_service_info_given_nonexisting_appuid_and_serviceuid2]
+FilterToSet=4
+AppUid=A0000777
+ServiceUid=3ADE67EB
+
+[get_service_info_given_nonexisting_appuid_and_serviceuid2]
+FilterToSet=4
+AppUid=A0000678
+ServiceUid=3ADE67EB
+
+//APPINS-SCR-APPREGINFO-API-0045
+[add_app1_comp1]
+IsMultiApp=True
+ComponentName=Component1
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global1
+AppUid=A0000111
+AppFile=appname1
+
+[add_app2_comp1]
+IsMultiApp=True
+ComponentName=Component1
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global1
+AppUid=A0000222
+AppFile=appname2
+
+[add_app3_comp1]
+IsMultiApp=True
+ComponentName=Component1
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global1
+AppUid=A0000333
+AppFile=appname3
+
+[add_app4_comp2]
+ComponentName=Component2
+VendorName=VendorXYZ
+SoftwareType=plain
+GlobalIdName=Component_Global2
+AppUid=A0000444
+AppFile=appname4
+
+
+[app_to_comp_mapping]
+AppUid=A0000222
+GlobalIdName=Component_Global1
+SoftwareType=plain
+
+[comp_to_app_mapping]
+GlobalIdName=Component_Global1
+SoftwareType=plain
+AppCount=3
+AppUid0=A0000111
+AppUid1=A0000222
+AppUid2=A0000333
+
+[del_comp1]
+UseGlobalId=True
+GlobalIdName=Component_Global1
+SoftwareType=plain
+
+[del_comp2]
+UseGlobalId=True
+GlobalIdName=Component_Global2
+SoftwareType=plain
+
+
+[nonexisting_appuid]
+AppUid=A0000456
+GlobalIdName=Non_existing
+SoftwareType=invalid
+
+
+[nonexisting_compid]
+GlobalIdName=Non_existing
+SoftwareType=invalid
+AppCount=0
+
+[app_reg_info_get_serviceuid]
+AppUid=A0001234
+NoOfServiceUids=1
+ServiceUid0=3ADE68B1
+
+[app_reg_info_get_appfordatatype]
+AppUid=A0001234
+ServiceDataType=text/plain
+UidExists=True
+
+[app_reg_info_get_appfordatatypeandservice]
+AppUid=A0001234
+ServiceDataType=text/plain
+ServiceUid=3ADE68B1
+UidExists=True
+
+[app_reg_info_get_defaultscreennumber]
+AppUid=A0001234
+DefaultScreenNumber=0
+
+[app_reg_info_get_iconcount]
+AppUid=A0001234
+LocNumberOfAppIcons=2
+
+[app_reg_info_get_applanguage]
+AppUid=A0001234
+LocAppLanguage=1
+
+[AppEntryData02_get_serviceuid]
+AppUid=22222222
+NoOfServiceUids=5
+ServiceUid0=A99611
+ServiceUid1=1531C82
+ServiceUid2=1531C83
+ServiceUid3=1531C84
+ServiceUid4=1531C85
+
+[test_component_app1_get_serviceUid]
+AppUid=81110008
+NoOfServiceUids=0
+
+[app_reg_info_get_appfordatatype_notexist]
+AppUid=A0001234
+UidExists=False
+ServiceDataType=richtext/plain
+
+[app_reg_info_get_appfordatatypeandservice_notexist]
+ServiceDataType=richtext/plain
+ServiceUid=3ADE68B1
+UidExists=False
+
+[add_app1_with_service_info_get_notexists]
+AppUid=A0000777
+
+[SimultaneousCreateTransaction]
+IsMultiApp=True
+SimultaneousCreateTransaction=True
+AIFAllApps=ETrue
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=11111111
+AppFile=embedableApps
+Attributes=01
+Hidden=0
+Embeddability=06
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[SimultaneousWriteReadAppInfoSameSession]
+IsMultiApp=True
+SimultaneousWriteReadAppInfoSameSession=True
+AIFAllApps=ETrue
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=11111111
+AppFile=embedableApps
+Attributes=01
+Hidden=0
+Embeddability=06
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[SimultaneousWriteAppInfoDiffSession]
+IsMultiApp=True
+SimultaneousWriteAppInfoDiffSession=True
+AIFAllApps=ETrue
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=11111111
+AppFile=embedableApps
+Attributes=01
+Hidden=0
+Embeddability=06
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=0
+
+[SimultaneousReadAppInfoDiffSessionWithoutTransaction]
+IsMultiApp=True
+SimultaneousReadAppInfoDiffSessionWithoutTransaction=True
+AIFAllApps=ETrue
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=11111111
+AppFile=embedableApps
+Attributes=01
+Hidden=0
+Embeddability=06
+NewFile=0
+Launch=0
+GroupName=application
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+
+[add_app_reg_info_ObjectWithoutOptionalFields]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+ObjectWithoutOptionalFields=True
+AppUid=A0001234
+AppFile=appname
+
+//APPINS-SCR-APPREGINFO-API-0051 and APPINS-SCR-APPREGINFO-API-0052
+
+[add_app_with_localizable_info_english_and_international_french]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+LocalizableAppInfoCount=2
+LocShortCaption0=english_short_caption
+LocAppLanguage0=1
+LocCaption0=english_caption
+LocShortCaption1=international_french_short_caption
+LocAppLanguage1=24
+LocCaption1=international_french_caption
+
+[get_app_info_default_locale_english]
+AppUid=A0001234
+AppFile=appname
+ShortCaption=english_short_caption
+Caption=english_caption
+
+[get_app_info_default_locale_international_french]
+AppUid=A0001234
+AppFile=appname
+ShortCaption=international_french_short_caption
+Caption=international_french_caption
+
+[get_app_info_for_nonexisting_app]
+AppUid=A0004321
+
+[get_app_info_international_french]
+AppUid=A0001234
+AppFile=appname
+ShortCaption=international_french_short_caption
+Caption=international_french_caption
+Locale=24
+
+[get_app_info_french]
+AppUid=A0001234
+AppFile=appname
+ShortCaption=international_french_short_caption
+Caption=international_french_caption
+Locale=2
+
+[get_app_info_german_nonexiting]
+AppUid=A0001234
+AppFile=appname
+Locale=3
+
+[SCROutOfMemory_App_RegistrationInfo]
+IsMultiApp=True
+IsAppInfoOomTest=True
+AIFAllApps=ETrue
+SoftwareType=plain
+ComponentName=TestComponent
+VendorName=AppInstallTeam
+GlobalIdName=TestComponentGlobal
+AppUid=A0001244
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+ViewDataCount=1
+VwUid0=45689123
+VwScreenMode0=0
+
+[add_array_of_opaque_data]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001432
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=4
+AppOpaqueLocale0=0
+AppOpaqueData0=somedata
+AppOpaqueLocale1=1
+AppOpaqueData1=
+AppOpaqueLocale2=2
+AppOpaqueData2= 
+AppOpaqueLocale3=3
+AppOpaqueData3=
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=4
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=servicedata
+ServiceOpaqueLocale1=1
+ServiceOpaqueData1=servicedata1
+ServiceOpaqueLocale2=2
+ServiceOpaqueData2= servicedata2
+ServiceOpaqueLocale3=3
+ServiceOpaqueData3= servicedata3
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+
+[get_service_opaquedata]
+FilterToSet=1
+AppUid=A0001432
+ServiceUid=3ADE68B1
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=servicedata
+
+
+[test_app_opaque_data_1]
+AppRegEntriesConfigCount=1
+configsection0=opaque_data_new_1
+Locale=0
+
+[test_app_opaque_data_2]
+AppRegEntriesConfigCount=1
+configsection0=opaque_data_new_2
+Locale=1
+
+[test_app_opaque_data_3]
+AppRegEntriesConfigCount=1
+configsection0=opaque_data_new_3
+Locale=2
+
+[test_app_opaque_data_4]
+AppRegEntriesConfigCount=1
+configsection0=opaque_data_new_4
+Locale=3
+
+[add_array_of_opaque_data_new]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001432
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=4
+AppOpaqueLocale0=0
+AppOpaqueData0=somedata
+AppOpaqueLocale1=1
+AppOpaqueData1=
+AppOpaqueLocale2=2
+AppOpaqueData2= 
+AppOpaqueLocale3=3
+AppOpaqueData3=
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=4
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=servicedata
+ServiceOpaqueLocale1=1
+ServiceOpaqueData1=servicedata1
+ServiceOpaqueLocale2=2
+ServiceOpaqueData2= servicedata2
+ServiceOpaqueLocale3=3
+ServiceOpaqueData3= servicedata3
+LocalizableAppInfoCount=4
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+LocShortCaption1=sc0
+LocAppLanguage1=1
+LocGroupName1=Games
+LocShortCaption2=sc0
+LocAppLanguage2=2
+LocGroupName2=Games
+LocShortCaption3=sc0
+LocAppLanguage3=3
+LocGroupName3=Games
+
+[opaque_data_new_1]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001432
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=0
+AppOpaqueData0=somedata
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=servicedata
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+
+[opaque_data_new_2]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001432
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=1
+AppOpaqueData0=
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=1
+ServiceOpaqueData0=servicedata1
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=1
+LocGroupName0=Games
+
+
+[opaque_data_new_3]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001432
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=2
+AppOpaqueData0= 
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=2
+ServiceOpaqueData0= servicedata2
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=2
+LocGroupName0=Games
+
+
+[opaque_data_new_4]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001432
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=3
+AppOpaqueData0=
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=3ADE68B1
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=3
+ServiceOpaqueData0= servicedata3
+LocalizableAppInfoCount=1
+LocShortCaption0=sc0
+LocAppLanguage0=3
+LocGroupName0=Games
+
+[add_app_reg_info_with_only_default_locale]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001236
+AppFile=appname34
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+OpaqueData=somedata
+LocalizableAppInfoCount=1
+LocShortCaption0=NonLocalizedAPP
+LocAppLanguage0=0
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile_En
+LocNumberOfAppIcons0=2
+
+[get_app_info_only_default_locale]
+AppUid=A0001236
+AppFile=appname34
+Locale=0
+ShortCaption=NonLocalizedAPP
+Caption=c0
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscr/scripts/tscr_appreginfo.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,613 @@
+//
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This script tests SCR Application Registration APIs.
+// 
+//
+
+PRINT Run SCR Application Registration API Tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+
+// Delete the SCR Database file
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tscr\tscr_appreginfo.ini db_file 
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0001
+//! @SYMTestCaseDesc 		Add an applications registration info
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0001
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0001
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0002
+//! @SYMTestCaseDesc 		Add an applications registration info with same appuid
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0002
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_sameappuid
+RUN_TEST_STEP !Result=-11 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_sameappuid
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0002
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0002a
+//! @SYMTestCaseDesc 		Add an applications registration info with same app file name
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0002a
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_sameappuid
+RUN_TEST_STEP !Result=-11 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_sameappfile_1
+// Checking the same app file name with a combination of lower and upper case
+RUN_TEST_STEP !Result=-11 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_sameappfile_2
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0002a
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0003
+//! @SYMTestCaseDesc 		Add an applications registration info with null app uid
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0003
+RUN_TEST_STEP !Result=-6 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nullappuid
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0003
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0004
+//! @SYMTestCaseDesc 		Add an applications registration info with null app file
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0004
+RUN_TEST_STEP !Result=-6 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nullappfile
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0004
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0005
+//! @SYMTestCaseDesc 		Add an applications registration info with doesnot have a caption and icon info associated to it.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0005
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nocaptioniconinfo
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0005
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0006
+//! @SYMTestCaseDesc 		Inserting multiple applications to the same component
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0006
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini test_component_app1
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini test_component_app2
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry  z:\tusif\tscr\tscr_appreginfo.ini del_test_component
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0006
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0007
+//! @SYMTestCaseDesc 		Adding an application to a non-existent component
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0007
+RUN_TEST_STEP !Result=-1 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_to_non_existent_comp
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0007
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0008
+//! @SYMTestCaseDesc 		Get the Service ID Array for a specific App Uid.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0008
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppServicesUids z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_serviceuid
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0008
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0009
+//! @SYMTestCaseDesc 		Get the App ID for a specific Datatype.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0009
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppForDataType z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_appfordatatype
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0009
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0010
+//! @SYMTestCaseDesc 		Get the App ID for a specific Datatype and Service Type.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0010
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppForDataTypeAndService z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_appfordatatypeandservice
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0010
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0011
+//! @SYMTestCaseDesc 		Get the default screen number for a specific App Uid.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0011
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetDefaultScreenNumber z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_defaultscreennumber
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0011
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0012
+//! @SYMTestCaseDesc 		Get the number of defined icons for a specific App Uid.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0012
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetNumberOfDefinedIcons z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_iconcount
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0012
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0013
+//! @SYMTestCaseDesc 		Get the Application Language for a specific Locale
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0013
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetApplicationLanguage z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_applanguage
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0013
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0014
+//! @SYMTestCaseDesc 		Get Files owned by an application
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0014
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppOwnedFilesEntry z:\tusif\tscr\tscr_appreginfo.ini appownedfiles
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0014
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0015
+//! @SYMTestCaseDesc 		Get Files owned by an application , not found
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0015
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noappownedfiles
+RUN_TEST_STEP 100 tscr SCRGetAppOwnedFilesEntry z:\tusif\tscr\tscr_appreginfo.ini noappownedfiles
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0015
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0016
+//! @SYMTestCaseDesc 		Get application capability
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0016
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppCapabilityEntry z:\tusif\tscr\tscr_appreginfo.ini appcapability
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0016
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0017
+//! @SYMTestCaseDesc 		Get application capability, no group name
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0017
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nogroupname
+RUN_TEST_STEP 100 tscr SCRGetAppCapabilityEntry z:\tusif\tscr\tscr_appreginfo.ini appcapability_nogroupname
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0017
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0018
+//! @SYMTestCaseDesc 		Get application Icon
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0018
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppIconEntry z:\tusif\tscr\tscr_appreginfo.ini appicon
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0018
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0019
+//! @SYMTestCaseDesc 		Get application Icon , not found as localized info not present
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0019
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nolocalizedinfo
+RUN_TEST_STEP_RESULT -1 100 tscr SCRGetAppIconEntry z:\tusif\tscr\tscr_appreginfo.ini noappicon
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0019
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0020
+//! @SYMTestCaseDesc 		Get application Icon , not found as caption and icon info not present
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0020
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_onlylocalizedinfo
+RUN_TEST_STEP_RESULT -1 100 tscr SCRGetAppIconEntry z:\tusif\tscr\tscr_appreginfo.ini noappicon
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0020
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0021
+//! @SYMTestCaseDesc 		Get application Icon , found caption and icon info for nearest locale 
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0021
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nolocalizedinfoforenglish
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscr SCRGetAppIconEntry z:\tusif\tscr\tscr_appreginfo.ini appicon_nolocalizedinfoforenglish
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0021
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0022
+//! @SYMTestCaseDesc 		Get application View Icon
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0022
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppViewIconEntry z:\tusif\tscr\tscr_appreginfo.ini appviewicon
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0022
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0023
+//! @SYMTestCaseDesc 		Get application View Icon , not found as localized info not present
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0023
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nolocalizedinfo
+RUN_TEST_STEP_RESULT -1 100 tscr SCRGetAppViewIconEntry z:\tusif\tscr\tscr_appreginfo.ini noappviewicon
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0023
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0024
+//! @SYMTestCaseDesc 		Get application View Icon , not found as view data not present
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0024
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_onlylocalizedinfo
+RUN_TEST_STEP_RESULT -1 100 tscr SCRGetAppViewIconEntry z:\tusif\tscr\tscr_appreginfo.ini noappviewicon
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0024
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0025
+//! @SYMTestCaseDesc 		Get application View Icon , not found as views caption and icon info not present
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0025
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewcaptionandiconinfo
+RUN_TEST_STEP_RESULT -1 100 tscr SCRGetAppViewIconEntry z:\tusif\tscr\tscr_appreginfo.ini noappviewicon
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0025
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0026
+//! @SYMTestCaseDesc 		Get application View Icon ,  found view caption and icon info for nearest locale
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0026
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nolocalizedinfoforenglish
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscr SCRGetAppViewIconEntry z:\tusif\tscr\tscr_appreginfo.ini appviewicon_nolocalizedinfoforenglish
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0026
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0027
+//! @SYMTestCaseDesc 		Get application View Icon ,  no view caption and icon info for nearest locale
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0027
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewdatafornearestlanguage
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP_RESULT -1 100 tscr SCRGetAppViewIconEntry z:\tusif\tscr\tscr_appreginfo.ini noviewdatafornearestlanguage
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0027
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0028
+//! @SYMTestCaseDesc 		Get the view info details associated with an application
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0028
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_with_localizable_info
+RUN_TEST_STEP 100 tscr ScrGetAppViewInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_view_info
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry_details
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0028
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0029
+//! @SYMTestCaseDesc 		Get the partial (caption and icon non-existing) view info details associated with an application
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0029
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_with_partial_view_info
+RUN_TEST_STEP 100 tscr ScrGetAppViewInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_view_info_partial
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry_details
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0029
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0029b
+//! @SYMTestCaseDesc 		Attempt to get the view info details associated with an application (view data associated to locale not present, although matching locale found)
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0029b
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_with_partial_view_info_2
+RUN_TEST_STEP 100 tscr ScrGetAppViewInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_view_info_partial_2
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry_details
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0029b
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0030
+//! @SYMTestCaseDesc 		Get the non existent view info details associated with an non existing application
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0030
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppViewInfo z:\tusif\tscr\tscr_appreginfo.ini 
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0030
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0031
+//! @SYMTestCaseDesc 		Get the view info details to the nearest language associated with an application when found and if not found
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0031
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_with_localizable_info_for_international_french
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscr ScrGetAppViewInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_view_french
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tscr ScrGetAppViewInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_view_german
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry_details
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0031
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0032
+//! @SYMTestCaseDesc 		Getallapps without screen mode
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0032
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData01
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData02
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini	AppInfoFilter0001-AP-loc01
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tusif\tscr\tscr_appreginfo.ini langauge_to_french
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini	AppInfoFilter0001-AP-loc02
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tusif\tscr\tscr_appreginfo.ini langauge_to_english_american
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini	AppInfoFilter0001-AP-loc01
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tusif\tscr\tscr_appreginfo.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry  z:\tusif\tscr\tscr_appreginfo.ini	del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0032
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0033
+//! @SYMTestCaseDesc 		Getallapps with screen mode , screen mode considered 1, 0
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0033
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData01
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData02
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0002-AP-loc01
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0002-AP-loc01-A
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0002-AP-loc01-B
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry  z:\tusif\tscr\tscr_appreginfo.ini	del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0033
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0034
+//! @SYMTestCaseDesc 		GetallEmbeddableApps with and without screen mode , screen mode considered 0, 5
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0034
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-01
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-02
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-03
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-04
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-05
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0003-AP-loc01
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tusif\tscr\tscr_appreginfo.ini langauge_to_french
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0003-AP-loc01-A
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tusif\tscr\tscr_appreginfo.ini langauge_to_english
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0003-AP-loc01-B
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0003-AP-loc01-C
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0003-AP-loc01-D
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry  z:\tusif\tscr\tscr_appreginfo.ini	del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0034
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0035
+//! @SYMTestCaseDesc 		GetFillteredAppsWithEmbeddabilityFilter  with and without screen mode , screen mode considered 0, 5 
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0035
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-01
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-02
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0004-AP-03
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-04
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-05
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0004-AP-loc01
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0004-AP-loc01-A
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0004-AP-loc01-B
+RUN_TEST_STEP 1000 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0004-AP-loc01-C
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry  z:\tusif\tscr\tscr_appreginfo.ini	del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0035
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0036
+//! @SYMTestCaseDesc 		GetFillteredAppsWithCapabilityMaskAndValue with and without screen mode , screen mode considered 0, 5 
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0036
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-01
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-02
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-03
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-04
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-05
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0005-AP-loc01
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0005-AP-loc01-A
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0005-AP-loc01-B
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry  z:\tusif\tscr\tscr_appreginfo.ini	del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0036
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0037
+//! @SYMTestCaseDesc 		GetServerApps with and without screen mode , screen mode considered 0, 5
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0037
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData01
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData02
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0006-AP-loc01
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0006-AP-loc01-A
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0006-AP-loc01-B
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tusif\tscr\tscr_appreginfo.ini langauge_to_french
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0006-AP-loc01-D
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tusif\tscr\tscr_appreginfo.ini langauge_to_english
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession z:\tusif\tscr\tscr_appreginfo.ini AppInfoFilter0006-AP-loc01-C
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry  z:\tusif\tscr\tscr_appreginfo.ini	del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0037
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0038
+//! @SYMTestCaseDesc 		Negative test for  getallapps with and without screen mode
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0038
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData01
+RUN_TEST_STEP 1000 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData02
+RUN_TEST_STEP !Result=-6 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini  AppInfoFilter0008-AP-loc01
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini	AppInfoFilter0008-AP-loc01-A
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0038
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0039
+//! @SYMTestCaseDesc 		Negative test for GetFillteredAppsWithCapabilityMaskAndValue, big value passed for mask and value
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0039
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-01
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-02
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-03
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-04
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryDataForTC-AppInfoFilter0003-AP-05
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini	AppInfoFilter0009-AP-loc01
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini	AppInfoFilter0009-AP-loc01-A
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0039
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0040
+//! @SYMTestCaseDesc 		Pass NULL as filter 
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0040
+RUN_TEST_STEP 100 tscr ScrAppViewSubsession  z:\tusif\tscr\tscr_appreginfo.ini	AppInfoFilter0010-AP-loc01
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0040
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0041
+//! @SYMTestCaseDesc 		Attempt to add an application's registration info that contains two sets of localizable inforamtion for the same locale
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0041
+RUN_TEST_STEP !Result=-11 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_invalid_localizable_info
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0041
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0042
+//! @SYMTestCaseDesc 		Get the serviceinfo details requested depending on the provided filters set	
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0042
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app1_with_service_info
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app2_with_service_info
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app3_with_service_info
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app4_with_service_info
+RUN_TEST_STEP 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_appuid
+RUN_TEST_STEP 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_serviceuid
+RUN_TEST_STEP 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_serviceuid_and_datatype
+RUN_TEST_STEP 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_appuid_and_serviceuid
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_with_service_info
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0042
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0043
+//! @SYMTestCaseDesc 		Get non existing serviceinfo details requested depending on the provided filters set	
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0043
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_appuid
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_serviceuid
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_serviceuid_and_datatype1
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_serviceuid_and_datatype2
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_serviceuid_and_datatype3
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_appuid_and_serviceuid1
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_appuid_and_serviceuid2
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_info_given_nonexisting_appuid_and_serviceuid3
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0043
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0044
+//! @SYMTestCaseDesc 		Get the associated componentId, given the appUid, and get all the apps associated to a particular componentId.
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0044
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app1_comp1
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app2_comp1
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app3_comp1
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app4_comp2
+RUN_TEST_STEP 100 tscr ScrGetComponentIdForApp z:\tusif\tscr\tscr_appreginfo.ini app_to_comp_mapping
+RUN_TEST_STEP 100 tscr ScrGetAppUidsForComponent z:\tusif\tscr\tscr_appreginfo.ini comp_to_app_mapping
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_comp1
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_comp2
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0044
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0045
+//! @SYMTestCaseDesc 		Get the componentId associted to a non existing app and fetch the apps associated to a non existing component.
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0045
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetComponentIdForApp z:\tusif\tscr\tscr_appreginfo.ini nonexisting_appuid
+RUN_TEST_STEP !Result=-1 100 tscr ScrGetAppUidsForComponent z:\tusif\tscr\tscr_appreginfo.ini nonexisting_compid
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0045
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0046
+//! @SYMTestCaseDesc 		Get the Service UID Array for a specific App Uid.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0046
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini AppEntryData02
+RUN_TEST_STEP 100 tscr SCRGetAppServicesUids z:\tusif\tscr\tscr_appreginfo.ini AppEntryData02_get_serviceuid
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_component_and_AppEntry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0046
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0047
+//! @SYMTestCaseDesc 		Get the Service UID Array for a specific App Uid, Uid Not exists.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0047
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini test_component_app1
+RUN_TEST_STEP 100 tscr SCRGetAppServicesUids z:\tusif\tscr\tscr_appreginfo.ini test_component_app1_get_serviceUid
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_test_component
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0047
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0048
+//! @SYMTestCaseDesc 		Get the App Uid for an App having specific DataType, app does not exists.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0048
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppForDataType z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_appfordatatype_notexist
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0048
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0049
+//! @SYMTestCaseDesc 		Get the App Uid for an App having specific DataType and service uid, app does not exists.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0049
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRGetAppForDataTypeAndService z:\tusif\tscr\tscr_appreginfo.ini app_reg_info_get_appfordatatypeandservice_notexist
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0049
+
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0050
+//! @SYMTestCaseDesc 		Get the App Uid for an App having specific DataType and service uid, app does not exists.
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0050
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app1_with_service_info
+RUN_TEST_STEP 100 tscr SCRGetDefaultScreenNumber z:\tusif\tscr\tscr_appreginfo.ini add_app1_with_service_info_get_notexists
+RUN_TEST_STEP 100 tscr SCRGetNumberOfDefinedIcons z:\tusif\tscr\tscr_appreginfo.ini add_app1_with_service_info_get_notexists
+RUN_TEST_STEP 100 tscr SCRGetApplicationLanguage z:\tusif\tscr\tscr_appreginfo.ini add_app1_with_service_info_get_notexists
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_with_service_info
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0050
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0051
+//! @SYMTestCaseDesc 		Get the applicaiton information for a given AppUid when no locale is specified. Get application information for a non existing app.
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0051
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_with_localizable_info_english_and_international_french
+RUN_TEST_STEP 100 tscr ScrGetAppInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_info_default_locale_english
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscr ScrGetAppInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_info_default_locale_international_french
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr ScrGetAppInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_info_for_nonexisting_app
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0051
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0052
+//! @SYMTestCaseDesc 		Get the applicaiton information for a given AppUid and a given locale
+
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0052
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_with_localizable_info_english_and_international_french
+RUN_TEST_STEP 100 tscr ScrGetAppInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_info_international_french
+RUN_TEST_STEP 100 tscr ScrGetAppInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_info_french
+RUN_TEST_STEP 100 tscr ScrGetAppInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_info_german_nonexiting
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0052
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0053
+//! @SYMTestCaseDesc 		create  transactions for two sessions
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0053
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP_RESULT -10320 100 tscr ScrAddConcurrentApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini SimultaneousCreateTransaction
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0053
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0054
+//! @SYMTestCaseDesc 		Create the transaction then write the data and read the db using the same session/subsession
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0054
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr ScrAddConcurrentApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini SimultaneousWriteReadAppInfoSameSession
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0054
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0055
+//! @SYMTestCaseDesc 		Create the transaction for the first session and add appInfo, then add another appInfo using other session without transaction
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0055
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP_RESULT -10320 100 tscr ScrAddConcurrentApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini SimultaneousWriteAppInfoDiffSession
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0055
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0056
+//! @SYMTestCaseDesc 		Simultaneosly Reading the db with two differnt subsessions without a transaction
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0056
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr ScrAddConcurrentApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini SimultaneousReadAppInfoDiffSessionWithoutTransaction
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0056
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0057
+//! @SYMTestCaseDesc 		Add an applications registration info, using the Interface without optional fields
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0057
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_ObjectWithoutOptionalFields
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0057
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0058
+//! @SYMTestCaseDesc 		Add array of opaque data with different values
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0058
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_array_of_opaque_data
+RUN_TEST_STEP 100 tscr ScrGetAppServiceInfo z:\tusif\tscr\tscr_appreginfo.ini get_service_opaquedata
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0058
+
+//! @SYMTestCaseID		APPINS-SCR-APPREGINFO-API-0059
+//! @SYMTestCaseDesc 		Get the application information for a given AppUid when only a default locale is specified. Get application information 
+START_TESTCASE APPINS-SCR-APPREGINFO-API-0059
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_with_only_default_locale
+RUN_TEST_STEP 100 tscr ScrGetAppInfo z:\tusif\tscr\tscr_appreginfo.ini get_app_info_only_default_locale
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPREGINFO-API-0059
+
--- a/installationservices/swcomponentregistry/test/tscr/scripts/tscr_oom.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/scripts/tscr_oom.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -28,3 +28,16 @@
 START_TESTCASE API-SEC-SCR-API-OOM-0001
 RUN_TEST_STEP -1 tscr SCROutOfMemory
 END_TESTCASE API-SEC-SCR-API-OOM-0001
+
+
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tscr\tscr.ini db_file 
+RUN_TEST_STEP 100 tscr SCRCopyDbFile z:\tusif\tscr\tscr.ini scr_multiapp
+
+//! @SYMTestCaseID 		API-SEC-SCR-API-OOM-0002
+//! @SYMTestCaseDesc 	Testing for OOM condition at various locations in SCR Server for operations on application registration info
+
+START_TESTCASE API-SEC-SCR-API-OOM-0002
+RUN_TEST_STEP -1 tscr SCROutOfMemory z:\tusif\tscr\tscr_appreginfo.ini SCROutOfMemory_App_RegistrationInfo
+END_TESTCASE API-SEC-SCR-API-OOM-0002
+
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tscr\tscr.ini db_file 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscr/scripts/tscrapparc.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,174 @@
+//
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+// This script tests SCR Application Registration APIs which can only be accessed by apparc.
+// 
+//
+
+PRINT Run SCR Application Registration API Tests for Apparc Subsession
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+LOAD_SUITE tscrapparc
+LOAD_SUITE tSisRegistryTest
+SHARED_DATA z:\tusif\tscr\tscr_appreginfo.ini shared_data
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0001
+//! @SYMTestCaseDesc 		Complete appregistration data for nearest locale, subsession opened without locale
+START_TESTCASE APPINS-SCR-APPARC-API-0001
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_complete_for_nearestlanguage
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_complete_for_nearestlanguage
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0001
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0002
+//! @SYMTestCaseDesc 		Complete appregistration data for current locale(english), subsession opened without locale
+START_TESTCASE APPINS-SCR-APPARC-API-0002
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_complete_for_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_complete_for_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0002
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0003
+//! @SYMTestCaseDesc 		No view data exist for the nearest locale (subsession opened without locale)
+START_TESTCASE APPINS-SCR-APPARC-API-0003
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewdatafornearestlanguage
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_noviewdatafornearestlanguage
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0003
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0004
+//! @SYMTestCaseDesc 		No app owned files exist for an appliction info (subsession opened without locale)
+START_TESTCASE APPINS-SCR-APPARC-API-0004
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_onlylocalizedinfo
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_noappownedfiles
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0004
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0005
+//! @SYMTestCaseDesc 		multiple appliction registration info exist for the locale(subsession opened without locale).
+START_TESTCASE APPINS-SCR-APPARC-API-0005
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_21
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_complete_for_english
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewdatafornearestlanguage_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_MultipleApp_NoLocale
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0005
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0006
+//! @SYMTestCaseDesc 		multiple appliction registration info exist for the locale(subsession opened with locale).
+START_TESTCASE APPINS-SCR-APPARC-API-0006
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_complete_for_english
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewdatafornearestlanguage_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_MultipleApp_for_english
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0006
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0007
+//! @SYMTestCaseDesc 		no corrosponding app reg info exist for the locale(subsession opened without locale).
+START_TESTCASE APPINS-SCR-APPARC-API-0007
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_nolocalizedinfoforenglish
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_NotExist
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0007
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0008
+//! @SYMTestCaseDesc 		Number of entries to be opened is negative(subsession opened with locale).
+START_TESTCASE APPINS-SCR-APPARC-API-0008
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP_RESULT -6 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_Negative_NoOfEntries
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0008
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0009
+//! @SYMTestCaseDesc 		Compare app opaque data
+START_TESTCASE APPINS-SCR-APPARC-API-0009
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_array_of_opaque_data_new
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini test_app_opaque_data_1
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini test_app_opaque_data_2
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini test_app_opaque_data_3
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini test_app_opaque_data_4
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0009
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0014
+//! @SYMTestCaseDesc 		Appregistration data of current locale(english) for user defined AppUids.
+//! @SYMTestActions 		Add One(1) Appregistration data. Fetch Appregistration data for Three(3) user defined AppUids.
+//					 		[1 AppUid is present in DB, 2 AppUid not present].
+START_TESTCASE APPINS-SCR-APPARC-API-0014
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_complete_for_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_complete_for_english_Test09
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0014
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0010
+//! @SYMTestCaseDesc 		Appregistration data of current locale(english) for user defined AppUids. [No AppUid present in DB]
+//! @SYMTestActions 		Add no Appregistration data. Fetch Appregistration data for One(1) user defined AppUids.
+START_TESTCASE APPINS-SCR-APPARC-API-0010
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_complete_for_english_Test10
+END_TESTCASE APPINS-SCR-APPARC-API-0010
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0011
+//! @SYMTestCaseDesc 		multiple appliction registration info exist for user defined AppUid.
+//! @SYMTestActions 		Add Three(3) Appregistration data. Fetch Appregistration data for Two(2) user defined AppUids.
+//					 		[All 3 AppUid is present in DB].
+START_TESTCASE APPINS-SCR-APPARC-API-0011
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_complete_for_english
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewdatafornearestlanguage_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_MultipleApp_for_english_test11
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0011
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0012
+//! @SYMTestCaseDesc 		Fetch AppRegistration data corresponding to user defined AppUids.
+//! @SYMTestActions 		Add Two(2) Appregistration data. Fetch Appregistration data for One(1) user
+//					 		defined AppUids which is not present in DB. [2 AppUid is present in DB, Requested AppUid not present].
+START_TESTCASE APPINS-SCR-APPARC-API-0012
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewdatafornearestlanguage_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_MultipleApp_for_english_test12
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0012
+
+
+//! @SYMTestCaseID		APPINS-SCR-APPARC-API-0013
+//! @SYMTestCaseDesc 		Test for Concurrent Application Registration View Entry API
+//! @SYMTestActions 		Add Four(4) Appregistration data. Fetch Appregistration data for Two(2) Entries using 
+//					 		ApplicationRegistrationViewEntry API. Then fetch user defined AppUids.
+START_TESTCASE APPINS-SCR-APPARC-API-0013
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_complete_for_english
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_noviewdatafornearestlanguage_english
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_4
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini add_app_reg_info_5
+RUN_TEST_STEP 100 tscrapparc ScrMultipleSubsessionsForAppRegistryView z:\tusif\tscr\tscr_appreginfo.ini ApplicationRegistrationData_MultipleApp_for_english_test13
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tscr\tscr_appreginfo.ini del_app_entry
+END_TESTCASE APPINS-SCR-APPARC-API-0013
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscr/source/appreginfosteps.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,1394 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Implements test steps for component management APIs in the SCR
+*
+*/
+
+#include "appreginfosteps.h"
+#include "tscrdefs.h"
+#include <scs/cleanuputils.h>
+#include <usif/usiferror.h>
+
+using namespace Usif;
+
+// -----------CScrAddApplicationEntryStep-----------------
+
+CScrAddApplicationEntryStep::CScrAddApplicationEntryStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrAddApplicationEntryStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrAddApplicationEntryStep::ImplTestStepL()
+    {
+    TComponentId compId = 0;
+    TBool newComponentAdded(EFalse);
+   
+    // Checking if have already inserted the component
+    TBool isMultiApp(EFalse);
+    GetBoolFromConfig(ConfigSection(), _L("IsMultiApp"), isMultiApp);
+    if (isMultiApp)
+        {
+        INFO_PRINTF1(_L("Checking if the component is already present"));
+        CGlobalComponentId *globalId = GetGlobalComponentIdLC();
+        TRAP_IGNORE(compId = iScrSession.GetComponentIdL(globalId->GlobalIdName(), globalId->SoftwareTypeName()););
+        CleanupStack::PopAndDestroy(globalId);
+        }
+
+	// Try adding the app to a component. The add operation will fail if the component is not present.
+	if (!compId) 
+		{
+		if (GetIntFromConfig(ConfigSection(), _L("UseComponentId"), compId))
+			INFO_PRINTF2(_L("Adding a new AppRegInfo to component %d"), compId);
+		}
+    
+    // The component is not present already
+    if (!compId)   
+        {
+        INFO_PRINTF1(_L("Adding a new component."));
+        compId = AddNonLocalisableComponentL(iScrSession);
+        newComponentAdded = ETrue;
+        }
+
+	INFO_PRINTF1(_L("Get reg info from config file."));
+	const CApplicationRegistrationData* appRegData = GetAppRegInfoFromConfigLC();
+	TRAPD(err, iScrSession.AddApplicationEntryL(compId, *appRegData));	
+	
+	if (err != KErrNone)
+	    {
+		if (newComponentAdded)
+			{
+			// We are going to delete the component with no apps
+			iScrSession.DeleteComponentL(compId);
+			}
+		User::Leave(err);
+	    }
+
+	CleanupStack::PopAndDestroy();
+	}
+    
+void CScrAddApplicationEntryStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+
+// -----------CScrDeleteApplicationEntriesStep-----------------
+
+CScrDeleteApplicationEntriesStep::CScrDeleteApplicationEntriesStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrDeleteApplicationEntriesStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrDeleteApplicationEntriesStep::ImplTestStepL()
+    {
+    TComponentId compId = 0;
+   
+    INFO_PRINTF1(_L("Fetching the component Id."));
+    
+    TUid appUid = TUid::Null();
+    TRAP_IGNORE(GetAppUidL(appUid));
+    
+    if(appUid == TUid::Null())
+        {
+        SetTestStepResult(EPass);
+        CGlobalComponentId *globalId = GetGlobalComponentIdLC();
+        compId = iScrSession.GetComponentIdL(globalId->GlobalIdName(), globalId->SoftwareTypeName());
+        CleanupStack::PopAndDestroy(globalId);
+        }
+    else
+        {
+        compId = iScrSession.GetComponentIdForAppL(appUid);
+        }
+
+    INFO_PRINTF2(_L("Deleting app entries for component %d"), compId);
+    iScrSession.DeleteApplicationEntriesL(compId);
+    INFO_PRINTF2(_L("Deleting component %d"), compId);
+    iScrSession.DeleteComponentL(compId);    
+    }
+    
+void CScrDeleteApplicationEntriesStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+CSCRGetAppServicesUids::CSCRGetAppServicesUids(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CSCRGetAppServicesUids::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CSCRGetAppServicesUids::ImplTestStepL()
+    {
+	TUid appUid, serviceUid;
+	TInt noOfServiceUids = 0;
+	RArray<TUid> expectedServiceUids;
+	RArray<TUid> obtainedServiceUids;
+	TBuf<20> serviceUidName;
+    CleanupClosePushL(expectedServiceUids);
+    CleanupClosePushL(obtainedServiceUids);
+    GetIntFromConfig(ConfigSection(), _L("NoOfServiceUids"), noOfServiceUids);
+    for (TUint i = 0; i < noOfServiceUids; ++i)
+        {                
+        serviceUidName = KServiceUid;
+        GenerateIndexedAttributeNameL(serviceUidName, i);
+        GetUidFromConfig(ConfigSection(), serviceUidName, serviceUid);
+        expectedServiceUids.AppendL(serviceUid);
+        }
+        
+	GetAppUidL(appUid);
+	RRegistrationInfoForApplication InfoQuerySubSession;
+	CleanupClosePushL(InfoQuerySubSession);	
+	
+	InfoQuerySubSession.OpenL(iScrSession, appUid);
+
+	TRAPD(err,InfoQuerySubSession.GetAppServicesUidsL(obtainedServiceUids));
+	
+	TInt noOfExpectedServiceUids = expectedServiceUids.Count();
+	TInt noOfObtainedServiceUids = obtainedServiceUids.Count();
+	 if(err != KErrNone && err !=KErrNotFound)
+         {
+         INFO_PRINTF2(_L("Failed to Get App Uid , error: %d"), err);
+         SetTestStepResult(EFail);        
+         }      
+	         	              
+	    
+	if(noOfExpectedServiceUids != noOfObtainedServiceUids)
+	    {
+	    INFO_PRINTF3(_L("Service Uid's Count doesn't match: expected/obtained Uid count: %d/%d"), noOfExpectedServiceUids, noOfObtainedServiceUids);
+	    SetTestStepResult(EFail);	 
+	    }
+	else
+	    {
+        //Comparing expected result and Obtained Result
+        for(TInt i=0 ; i < noOfExpectedServiceUids ; i++)
+            {
+            if(expectedServiceUids[i] != obtainedServiceUids[i])
+                {
+                INFO_PRINTF3(_L("Service Uid doesn't match: expected/obtained Uid: 0x%08x/0x%08x"), expectedServiceUids[i].iUid, obtainedServiceUids[i].iUid);
+                SetTestStepResult(EFail);           
+                }
+            }	
+	    }
+	InfoQuerySubSession.Close();	
+	obtainedServiceUids.Close();
+	expectedServiceUids.Close();
+	CleanupStack::Pop(3, &expectedServiceUids);	    
+    }
+    
+void CSCRGetAppServicesUids::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+CSCRGetAppForDataType::CSCRGetAppForDataType(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CSCRGetAppForDataType::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CSCRGetAppForDataType::ImplTestStepL()
+    {
+    TUid obtainedAppUid,expectedAppUid;
+        
+    TPtrC dataType;
+    if(!GetStringFromConfig(ConfigSection(), KServiceDataType, dataType))
+        {
+        INFO_PRINTF1(_L("Failed to Get Data Type from ini"));
+        SetTestStepResult(EFail);      
+        }
+    
+    TBool uidExists = EFalse;
+    GetUidFromConfig(ConfigSection(), KAppUid, expectedAppUid);
+    GetBoolFromConfig(ConfigSection(), _L("UidExists"), uidExists);
+
+    RApplicationRegistrationInfo InfoQuerySubSession;
+    CleanupClosePushL(InfoQuerySubSession);
+    
+    
+    InfoQuerySubSession.OpenL(iScrSession);
+
+    TRAPD(err,obtainedAppUid = InfoQuerySubSession.GetAppForDataTypeL(dataType));        
+         
+     if(err != KErrNone && uidExists)
+         {
+         INFO_PRINTF2(_L("Failed to Get App Uid , error: %d"), err);
+         SetTestStepResult(EFail);        
+         }      
+         
+     //Comparing expected result and Obtained Result
+     if(expectedAppUid != obtainedAppUid && uidExists)
+         {
+         INFO_PRINTF3(_L("App Uid doesn't match: expected/obtained Uid: 0x%08x/0x%08x"), expectedAppUid, obtainedAppUid);
+         SetTestStepResult(EFail);        
+         }         
+    
+    InfoQuerySubSession.Close();        
+    CleanupStack::PopAndDestroy();        
+    }
+    
+void CSCRGetAppForDataType::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+CSCRGetAppForDataTypeAndService::CSCRGetAppForDataTypeAndService(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CSCRGetAppForDataTypeAndService::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CSCRGetAppForDataTypeAndService::ImplTestStepL()
+    {
+    TUid obtainedAppUid, expectedAppUid, serviceUid;    
+        
+    TPtrC dataType;
+    if(!GetStringFromConfig(ConfigSection(), KServiceDataType, dataType))
+        {
+        INFO_PRINTF1(_L("Failed to Get Data Type from ini"));
+        SetTestStepResult(EFail);      
+        }
+    
+    //Get serviceUid from ini
+    if(!GetUidFromConfig(ConfigSection(), KServiceUid, serviceUid))
+        {
+        INFO_PRINTF1(_L("Failed to Service uid from ini"));
+        SetTestStepResult(EFail);
+        }
+    
+    //Get expected Appuid from ini
+    GetUidFromConfig(ConfigSection(), KAppUid, expectedAppUid);
+    
+    TBool uidExists = EFalse;
+    GetBoolFromConfig(ConfigSection(), _L("UidExists"), uidExists);
+    
+    RApplicationRegistrationInfo InfoQuerySubSession;
+    CleanupClosePushL(InfoQuerySubSession);
+    InfoQuerySubSession.OpenL(iScrSession);
+    
+    TRAPD(err,obtainedAppUid = InfoQuerySubSession.GetAppForDataTypeAndServiceL(dataType,serviceUid));
+        
+    if(err != KErrNone && uidExists)
+        {
+        INFO_PRINTF2(_L("Failed to Get App Uid , error: %d"), err);
+        SetTestStepResult(EFail);        
+        }      
+        
+    //Comparing expected result and Obtained Result
+    if(expectedAppUid != obtainedAppUid && uidExists)
+        {
+        INFO_PRINTF3(_L("App Uid doesn't match: expected/obtained Uid: 0x%08x/0x%08x"), expectedAppUid, obtainedAppUid);
+        SetTestStepResult(EFail);        
+        }    
+    
+    InfoQuerySubSession.Close();        
+    CleanupStack::PopAndDestroy();        
+    }
+    
+void CSCRGetAppForDataTypeAndService::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+CSCRGetDefaultScreenNumber::CSCRGetDefaultScreenNumber(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CSCRGetDefaultScreenNumber::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CSCRGetDefaultScreenNumber::ImplTestStepL()
+    {
+    TUid appUid;
+    TInt obtaineddefaultScreenNumber = 0 , expecteddefaultScreenNumber = 0;
+    
+    //Get the Default screen Number from the ini to compare
+    GetIntFromConfig(ConfigSection(), _L("DefaultScreenNumber"), expecteddefaultScreenNumber);
+               
+    GetAppUidL(appUid);
+    RRegistrationInfoForApplication InfoQuerySubSession;
+    CleanupClosePushL(InfoQuerySubSession);
+    INFO_PRINTF1(_L("After subsession creation"));
+    
+    InfoQuerySubSession.OpenL(iScrSession, appUid);
+    TRAPD(err, obtaineddefaultScreenNumber = InfoQuerySubSession.DefaultScreenNumberL());
+
+    if(err != KErrNone && expecteddefaultScreenNumber != 0)
+       {
+       INFO_PRINTF2(_L("Failed to Get Default Screen Number, error: %d"), err);
+       SetTestStepResult(EFail);        
+       }      
+       
+   //Comparing expected result and Obtained Result
+   if(expecteddefaultScreenNumber != obtaineddefaultScreenNumber && expecteddefaultScreenNumber != 0)
+       {
+       INFO_PRINTF3(_L("Screen Number doesn't match: expected/obtained Uid: %d/%d"), expecteddefaultScreenNumber, obtaineddefaultScreenNumber);
+       SetTestStepResult(EFail);        
+       }    
+    
+    InfoQuerySubSession.Close();        
+    CleanupStack::PopAndDestroy();
+    }
+    
+void CSCRGetDefaultScreenNumber::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+CSCRGetNumberOfDefinedIcons::CSCRGetNumberOfDefinedIcons(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CSCRGetNumberOfDefinedIcons::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CSCRGetNumberOfDefinedIcons::ImplTestStepL()
+    {
+    TUid appUid;
+    TInt obtainedIconcount = 0, expectedIconcount = 0;
+    
+    //Get the Expected Number of App Icons from the ini to compare
+    GetIntFromConfig(ConfigSection(), KLocNumberOfAppIcons, expectedIconcount);
+    GetAppUidL(appUid);
+    RRegistrationInfoForApplication InfoQuerySubSession;    
+    CleanupClosePushL(InfoQuerySubSession);
+    
+    InfoQuerySubSession.OpenL(iScrSession, appUid);
+            
+    TRAPD(err,obtainedIconcount = InfoQuerySubSession.NumberOfOwnDefinedIconsL());
+    
+    if(err != KErrNone && expectedIconcount != 0)
+       {
+       INFO_PRINTF2(_L("Failed to Get Deafult Screen Number, error: %d"), err);
+       SetTestStepResult(EFail);        
+       }      
+       
+    //Comparing expected result and Obtained Result
+    if(expectedIconcount != obtainedIconcount && expectedIconcount != -1)
+       {
+       INFO_PRINTF3(_L("Number of Defined Icons for App doesn't match: expected/obtained Uid: %d/%d"), expectedIconcount, obtainedIconcount);
+       SetTestStepResult(EFail);        
+       } 
+    
+    InfoQuerySubSession.Close();        
+    CleanupStack::PopAndDestroy();
+        
+    }
+    
+void CSCRGetNumberOfDefinedIcons::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+CSCRGetApplicationLanguage::CSCRGetApplicationLanguage(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CSCRGetApplicationLanguage::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CSCRGetApplicationLanguage::ImplTestStepL()
+    {
+    TUid appUid;    
+    TInt obtainedCurrentLanguage = 0, expectedCurrentLanguage = 0;
+    
+    //Get the Expected Current application Language from the ini to compare
+    GetIntFromConfig(ConfigSection(), KLocAppLanguage, expectedCurrentLanguage);
+    
+    GetAppUidL(appUid);
+    INFO_PRINTF1(_L("Before subsession creation"));
+
+    RRegistrationInfoForApplication InfoQuerySubSession;
+    CleanupClosePushL(InfoQuerySubSession);
+    
+    InfoQuerySubSession.OpenL(iScrSession, appUid);
+    
+    TRAPD(err, obtainedCurrentLanguage = (TInt)InfoQuerySubSession.ApplicationLanguageL());
+    
+    if(err != KErrNone && expectedCurrentLanguage != 0)
+       {
+       INFO_PRINTF2(_L("Failed to Get Current App Language, error: %d"), err);
+       SetTestStepResult(EFail);        
+       }      
+       
+    //Comparing expected result and Obtained Result
+    if(expectedCurrentLanguage != obtainedCurrentLanguage && expectedCurrentLanguage != 0)
+       {
+       INFO_PRINTF3(_L("Number of Defined Icons for App doesn't match: expected/obtained Uid: %d/%d"), expectedCurrentLanguage, obtainedCurrentLanguage);
+       SetTestStepResult(EFail);        
+       } 
+        
+    InfoQuerySubSession.Close();     
+    CleanupStack::PopAndDestroy(&InfoQuerySubSession);
+    }
+    
+void CSCRGetApplicationLanguage::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+// -----------CScrGetAppOwnedFilesEntryStep-----------------
+
+CScrGetAppOwnedFilesEntryStep::CScrGetAppOwnedFilesEntryStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppOwnedFilesEntryStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrGetAppOwnedFilesEntryStep::ImplTestStepL()
+    {
+    INFO_PRINTF1(_L("Get the UID from the ini for which the sub session is to be opened"));
+    TUid  appUid;
+    GetAppUidL(appUid);
+    
+    INFO_PRINTF1(_L("Get the expected App owned files from ini"));
+    RPointerArray<HBufC> appOwnedFilesFromIni;
+    GetAppOwnedFilesL(appOwnedFilesFromIni);
+   
+    INFO_PRINTF1(_L("Open the sub session for the UID"));
+    RRegistrationInfoForApplication AppRegInfoQueryAppSubSession;    
+    TRAPD(sessionerr,AppRegInfoQueryAppSubSession.OpenL(iScrSession,appUid));
+    if(KErrNone != sessionerr)
+           {
+           INFO_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), sessionerr);
+           User::Leave(sessionerr);
+           }    
+    
+    INFO_PRINTF1(_L("Retrieving the App Owned Files form db."));
+    RPointerArray<HBufC> appOwnedFilesArray;     
+    TInt err = KErrNone;
+    TRAP(err, AppRegInfoQueryAppSubSession.GetAppOwnedFilesL(appOwnedFilesArray));
+    if(KErrNone == err)
+        {
+        INFO_PRINTF1(_L("Comparing the retrieved AppOwned files with the expected files within the ini"));
+        if(CompareAppOwnedFileNamesL(appOwnedFilesArray,appOwnedFilesFromIni))
+            SetTestStepResult(EPass);
+        else
+            SetTestStepResult(EFail);
+        }
+    else
+        {
+        appOwnedFilesArray.ResetAndDestroy();    
+        appOwnedFilesFromIni.ResetAndDestroy();
+        AppRegInfoQueryAppSubSession.Close();
+        User::Leave(err);
+        }               
+   
+    //closing the resource handles
+    appOwnedFilesArray.ResetAndDestroy();    
+    appOwnedFilesFromIni.ResetAndDestroy();
+    AppRegInfoQueryAppSubSession.Close();
+    }
+    
+TBool CScrGetAppOwnedFilesEntryStep::CompareAppOwnedFileNamesL(RPointerArray<HBufC>& aActualValue,RPointerArray<HBufC>& aExpetedValue)
+    {
+    TInt expectedCount = aExpetedValue.Count();
+    TInt actualCount = aActualValue.Count();
+    TBool result = ETrue;
+    if(  expectedCount != actualCount )
+        return EFalse;
+        
+    for(TInt i = 0 ; i < actualCount ; i++)            
+        {
+        if(!aExpetedValue.Find(aActualValue[i]))
+             {
+             result = EFalse;
+             break;
+             }
+        }
+    
+    return result;
+    }
+
+void CScrGetAppOwnedFilesEntryStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+
+
+// -----------CScrGetAppCharacteristicsEntryStep-----------------
+
+CScrGetAppCharacteristicsEntryStep::CScrGetAppCharacteristicsEntryStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppCharacteristicsEntryStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();    
+    }
+
+void CScrGetAppCharacteristicsEntryStep::ImplTestStepL()
+    {
+    INFO_PRINTF1(_L("Get the UID from the ini for which the sub session is to be opened"));
+    TUid  appUid;
+    GetAppUidL(appUid);
+    
+    INFO_PRINTF1(_L("Get the expected capabilty for an app from ini"));
+    TInt attributes, hidden, embeddability, newFile, launch;
+    TPtrC groupName;
+    if(GetIntFromConfig(ConfigSection(), _L("Attributes"), attributes) == EFalse)
+        PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+    if(GetIntFromConfig(ConfigSection(), _L("Hidden"), hidden) == EFalse)
+        PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+    if(GetIntFromConfig(ConfigSection(), _L("Embeddability"), embeddability) == EFalse)
+        PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+    if(GetIntFromConfig(ConfigSection(), _L("NewFile"), newFile) == EFalse)
+        PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+    if(GetIntFromConfig(ConfigSection(), _L("Launch"), launch) == EFalse)
+        PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+    GetStringFromConfig(ConfigSection(), _L("GroupName"), groupName);
+    
+    INFO_PRINTF1(_L("Open the sub session for the UID"));
+    RRegistrationInfoForApplication AppRegInfoQueryAppSubSession;
+    TRAPD(sessionerr,AppRegInfoQueryAppSubSession.OpenL(iScrSession,appUid));
+    if(KErrNone != sessionerr)
+               {
+               INFO_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), sessionerr);
+               User::Leave(sessionerr);
+               }    
+    
+    INFO_PRINTF1(_L("Retrieving characteristics for an app form db."));
+    Usif::TApplicationCharacteristics appCharacteristics ;
+    TInt err = KErrNone;
+    TRAP(err, AppRegInfoQueryAppSubSession.GetAppCharacteristicsL(appCharacteristics));
+    if(KErrNone ==err)
+        {
+        INFO_PRINTF1(_L("Comparing the retrieved App characteristics with the expected app characteristics within the ini"));
+  
+        if(appCharacteristics.iEmbeddability != embeddability || appCharacteristics.iAppIsHidden != hidden || appCharacteristics.iSupportsNewFile != newFile || appCharacteristics.iLaunchInBackground != launch || appCharacteristics.iGroupName.Compare(groupName))
+            SetTestStepResult(EFail);   
+        else
+            SetTestStepResult(EPass);
+        }
+    else
+        {
+        AppRegInfoQueryAppSubSession.Close();        
+        User::Leave(err);
+        }  
+    //closing the resource handles    
+    AppRegInfoQueryAppSubSession.Close();
+    }
+    
+
+void CScrGetAppCharacteristicsEntryStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();    
+    }
+
+
+// -----------CScrGetAppIconFileNameEntryStep-----------------
+
+CScrGetAppIconEntryStep::CScrGetAppIconEntryStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppIconEntryStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();    
+    }
+
+void CScrGetAppIconEntryStep::ImplTestStepL()
+    {        
+    TVerdict result = EFail;
+    INFO_PRINTF1(_L("Get the UID from the ini for which the sub session is to be opened"));
+    TUid  appUid;
+    GetAppUidL(appUid);
+    
+    INFO_PRINTF1(_L("Get the expected filename of the Icon for an app from ini"));
+    TPtrC IconFileName;
+    if(GetStringFromConfig(ConfigSection(), _L("LocIconFileName"), IconFileName) == EFalse)
+            {           
+            PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+            }
+    
+    INFO_PRINTF1(_L("Open the sub session for the UID"));
+    RRegistrationInfoForApplication AppRegInfoQueryAppSubSession;
+    TRAPD(sessionerr,AppRegInfoQueryAppSubSession.OpenL(iScrSession,appUid));
+    if(KErrNone != sessionerr)
+            {
+            INFO_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), sessionerr);
+            User::Leave(sessionerr);
+            }      
+    
+    
+    HBufC* filename = NULL;        
+    INFO_PRINTF1(_L("Retrieving the Icon for an app form db."));
+   
+    TInt err = KErrNotFound;
+    TRAP(err, AppRegInfoQueryAppSubSession.GetAppIconL(filename));    
+    if(KErrNone == err)
+      {
+      INFO_PRINTF1(_L("Comparing the retrieved App Icon with the expected app capability within the ini"));               
+            if(!IconFileName.Compare(*filename))
+            {
+            result = EPass;            
+            }            
+       }
+    else
+      {
+      if(NULL != filename)
+          delete filename;
+      AppRegInfoQueryAppSubSession.Close();      
+      User::Leave(err);
+      }     
+       
+  
+    SetTestStepResult(result);   
+    if(NULL != filename)
+        delete filename;
+    
+    //closing the resource handles    
+    AppRegInfoQueryAppSubSession.Close(); 
+    }
+    
+
+void CScrGetAppIconEntryStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();    
+    }
+
+
+// -----------CScrGetAppViewIconEntryStep-----------------
+
+CScrGetAppViewIconEntryStep::CScrGetAppViewIconEntryStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppViewIconEntryStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();    
+    }
+
+void CScrGetAppViewIconEntryStep::ImplTestStepL()
+    {
+    INFO_PRINTF1(_L("Get the App UID and View Uid from the ini for which the sub session is to be opened"));
+    TUid  appUid;
+    TInt viewUid;
+    GetAppUidL(appUid);
+    
+    if(GetIntFromConfig(ConfigSection(), _L("VwUid"), viewUid) == EFalse)
+        {
+        PrintErrorL(_L("View Uid was not found!"), KErrNotFound);
+        }
+    
+    INFO_PRINTF1(_L("Get the expected filename of the View Icon for an app from ini"));
+    TPtrC appFileName; 
+    if(GetStringFromConfig(ConfigSection(), _L("VwIconFileName"), appFileName)== EFalse)
+       {
+       PrintErrorL(_L("View Icon file Name was not found!"), KErrNotFound);
+       }
+    
+    INFO_PRINTF1(_L("Open the sub session for the UID"));
+    RRegistrationInfoForApplication AppRegInfoQueryAppSubSession;
+    TRAPD(sessionerr,AppRegInfoQueryAppSubSession.OpenL(iScrSession,appUid));
+    if(KErrNone != sessionerr)
+          {
+          INFO_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), sessionerr);
+          User::Leave(sessionerr);
+          }    
+    
+    INFO_PRINTF1(_L("Retrieving the view icon file for an app form db."));   
+    
+    HBufC* filename = NULL;     
+    TUid viewId = TUid::Uid(viewUid);
+    
+    TInt err = KErrNotFound;
+    TRAP(err, AppRegInfoQueryAppSubSession.GetAppViewIconL(viewId,filename));
+    if(KErrNone == err)
+        {
+        INFO_PRINTF1(_L("Comparing the retrieved view icon file with the expected view icon file within the ini"));
+       
+        if(!appFileName.Compare(*filename))
+            {
+            SetTestStepResult(EPass);           
+            }
+        else
+            {
+            SetTestStepResult(EFail);    
+            }
+        }
+    else
+        {
+        if(NULL != filename)
+            delete filename;        
+        AppRegInfoQueryAppSubSession.Close();
+        User::Leave(err);
+        }
+    if(NULL != filename)
+        delete filename; 
+    //closing the resource handles    
+    AppRegInfoQueryAppSubSession.Close();
+    }
+    
+
+void CScrGetAppViewIconEntryStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();    
+    }
+
+
+// -----------CScrGetAppViewsStep-----------------
+
+CScrGetAppViewsStep::CScrGetAppViewsStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppViewsStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrGetAppViewsStep::ImplTestStepL()
+    {
+    TUid appUid;    
+    GetAppUidL(appUid);
+    RPointerArray<Usif::CAppViewData> appViewInfoArrayExpected;
+    CleanupResetAndDestroyPushL(appViewInfoArrayExpected);
+    GetViewDataInfoFromConfigL(appViewInfoArrayExpected);
+        
+    RPointerArray<Usif::CAppViewData> appViewInfoArrayRetrieved;
+    CleanupResetAndDestroyPushL(appViewInfoArrayRetrieved);   
+      
+    RRegistrationInfoForApplication infoQuerySubSession;
+    CleanupClosePushL(infoQuerySubSession); 
+            
+    infoQuerySubSession.OpenL(iScrSession, appUid);
+    
+    // Start timer just before invocation of SCR API
+    StartTimer();
+    infoQuerySubSession.GetAppViewsL(appViewInfoArrayRetrieved);
+            
+    if(appViewInfoArrayExpected.Count()!=appViewInfoArrayRetrieved.Count())
+        {
+        ERR_PRINTF1(_L("Returned view data entry count doesnt match the expected count")); 
+        SetTestStepResult(EFail);
+        }
+    else
+        {
+        for(TInt i=0;i<appViewInfoArrayExpected.Count();i++)
+                {
+                const CCaptionAndIconInfo *captionAndIconInfoExpected = appViewInfoArrayExpected[i]->CaptionAndIconInfo();
+                const CCaptionAndIconInfo *captionAndIconInfoRetrieved = appViewInfoArrayRetrieved[i]->CaptionAndIconInfo();
+                if((appViewInfoArrayExpected[i]->Uid()!= appViewInfoArrayRetrieved[i]->Uid())||(appViewInfoArrayExpected[i]->ScreenMode()!= appViewInfoArrayRetrieved[i]->ScreenMode())||(NotEqual(captionAndIconInfoExpected, captionAndIconInfoRetrieved)))  
+                    {
+                    ERR_PRINTF1(_L("Returned view data entry values don't match with the expected ones."));
+                    SetTestStepResult(EFail);
+                    }
+                else
+                    {
+                    INFO_PRINTF2(_L("View details associated with view data entry %d"), i);
+                    INFO_PRINTF3(_L("ViewData Expected: Uid-%d, ScreenMode-%d"), (appViewInfoArrayExpected[i]->Uid()).iUid, appViewInfoArrayExpected[i]->ScreenMode());
+                    INFO_PRINTF3(_L("ViewData Retrieved: Uid-%d, ScreenMode-%d"), (appViewInfoArrayRetrieved[i]->Uid()).iUid, appViewInfoArrayRetrieved[i]->ScreenMode());
+                    if(captionAndIconInfoExpected!=NULL)
+                        {
+                        INFO_PRINTF4(_L("Associated caption details Expected: Caption-%S, No.of Icons-%d, IconFilename-%S"),&(captionAndIconInfoExpected->Caption()), captionAndIconInfoExpected->NumOfAppIcons(), &(captionAndIconInfoExpected->IconFileName()));
+                        INFO_PRINTF4(_L("Associated caption details Retrieved: Caption-%S, No.of Icons-%d, IconFilename-%S"), &(captionAndIconInfoRetrieved->Caption()), captionAndIconInfoRetrieved->NumOfAppIcons(), &(captionAndIconInfoRetrieved->IconFileName()));
+                        }
+                    else
+                        {
+                        INFO_PRINTF1(_L("No expected caption and icon info. No retrieved caption and icon info."));
+                        }
+                    }
+                }
+            }    
+            infoQuerySubSession.Close();
+            CleanupStack::PopAndDestroy(1, &infoQuerySubSession); 
+            CleanupStack::Pop(2,&appViewInfoArrayExpected); 
+            appViewInfoArrayRetrieved.ResetAndDestroy();
+            appViewInfoArrayExpected.ResetAndDestroy();
+            
+        }
+    
+void CScrGetAppViewsStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+
+// -----------CScrGetAppServiceInfoStep-----------------
+
+CScrGetAppServiceInfoStep::CScrGetAppServiceInfoStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppServiceInfoStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrGetAppServiceInfoStep::ImplTestStepL()
+    {
+    RApplicationRegistrationInfo infoQuerySubSession;
+    CleanupClosePushL(infoQuerySubSession);
+    infoQuerySubSession.OpenL(iScrSession);    
+    
+    TUid serviceUid, appUid;      
+    RPointerArray<Usif::CServiceInfo> appServiceInfoArrayExpected;
+    CleanupResetAndDestroyPushL(appServiceInfoArrayExpected);
+               
+    RPointerArray<Usif::CServiceInfo> appServiceInfoArrayRetrieved;
+    CleanupResetAndDestroyPushL(appServiceInfoArrayRetrieved);   
+
+    CAppServiceInfoFilter* appServiceInfoFilter = CAppServiceInfoFilter::NewLC();
+    
+    TInt filterToSet(0);
+    if (!GetIntFromConfig(ConfigSection(), _L("FilterToSet"), filterToSet))
+        PrintErrorL(_L("Filter to be set was not found!"), KErrNotFound);
+    
+    switch(filterToSet)
+        {
+        case 1:
+            {
+            
+            //Testing GetAppServiceInfo given the appUid
+            if (!GetUidFromConfig(ConfigSection(), _L("AppUid"), appUid))
+                PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+            INFO_PRINTF2(_L("AppUid is 0x%x"), appUid.iUid);
+            
+            appServiceInfoFilter->SetAppUidForServiceInfo(appUid);
+            
+            GetAppServiceInfoL(appServiceInfoArrayExpected);
+            
+            infoQuerySubSession.GetServiceInfoL(appServiceInfoFilter, appServiceInfoArrayRetrieved);
+            break;
+            }
+        case 2:
+            {
+            //Testing GetAppServiceInfo given the serviceUid
+           
+            if(!GetUidFromConfig(ConfigSection(), _L("ServiceUid"), serviceUid))
+                PrintErrorL(_L("ServiceUid was not found!"), KErrNotFound);            
+            INFO_PRINTF2(_L("ServiceUid is 0x%x"), serviceUid.iUid);
+            
+            appServiceInfoFilter->SetServiceUidForServiceImplementations(serviceUid);
+            
+            GetAppServiceInfoL(appServiceInfoArrayExpected);
+                                    
+            infoQuerySubSession.GetServiceInfoL(appServiceInfoFilter, appServiceInfoArrayRetrieved);
+            break;
+            }
+        case 3:
+            {
+            //Testing GetAppServiceInfo given the serviceUid and dataType
+            TPtrC dataType;
+            if (!GetUidFromConfig(ConfigSection(), _L("ServiceUid"), serviceUid))
+                PrintErrorL(_L("ServiceUid was not found!"), KErrNotFound);            
+            INFO_PRINTF2(_L("ServiceUid is 0x%x"), serviceUid.iUid);
+            
+            if(!GetStringFromConfig(ConfigSection(), _L("ServiceDataType"), dataType))
+                PrintErrorL(_L("DataType was not found!"), KErrNotFound);
+            INFO_PRINTF2(_L("DataType is %S"), &dataType);
+            
+            appServiceInfoFilter->SetServiceUidAndDatatTypeForServiceImplementationsL(serviceUid, dataType);
+            
+            GetAppServiceInfoL(appServiceInfoArrayExpected);
+            
+            infoQuerySubSession.GetServiceInfoL(appServiceInfoFilter, appServiceInfoArrayRetrieved);
+            break;
+            }
+        case 4:
+            {
+            //Testing GetAppServiceInfo given the appUid and serviceUid
+            if (!GetUidFromConfig(ConfigSection(), _L("AppUid"), appUid))
+                PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+            INFO_PRINTF2(_L("AppUid is 0x%x"), appUid.iUid);
+            
+            if (!GetUidFromConfig(ConfigSection(), _L("ServiceUid"), serviceUid))
+                PrintErrorL(_L("ServiceUid was not found!"), KErrNotFound);            
+            INFO_PRINTF2(_L("ServiceUid is 0x%x"), serviceUid.iUid);
+            
+            appServiceInfoFilter->SetAppUidAndServiceUidForOpaqueData(appUid, serviceUid);
+            
+            GetAppServiceInfoL(appServiceInfoArrayExpected);
+            
+            infoQuerySubSession.GetServiceInfoL(appServiceInfoFilter, appServiceInfoArrayRetrieved);
+            break;
+            }
+        default:
+            ERR_PRINTF1(_L("Incorrect value for filterToSet, values range from 1-4"));
+            SetTestStepResult(EFail);
+            break;
+        }
+    
+    //check if they r equal
+    if(NotEqualL(appServiceInfoArrayExpected, appServiceInfoArrayRetrieved))
+        {
+        ERR_PRINTF1(_L("Returned service data entry doesnt match the expected values")); 
+        SetTestStepResult(EFail);
+        }
+    
+    //clean up
+    CleanupStack::PopAndDestroy(4,&infoQuerySubSession); //appServiceInfoFilter, appServiceInfoArrayRetrieved, appServiceInfoArrayExpected, infoQuerySubSession 
+    }
+    
+void CScrGetAppServiceInfoStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+
+// -----------CScrGetComponentIdForApp-----------------
+
+CScrGetComponentIdForApp::CScrGetComponentIdForApp(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetComponentIdForApp::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrGetComponentIdForApp::ImplTestStepL()
+    {
+    TUid appUid;
+    CGlobalComponentId *globalId = GetGlobalComponentIdLC();
+    TComponentId expectedCompId, retrievedCompId;
+    if (!GetUidFromConfig(ConfigSection(), _L("AppUid"), appUid))
+        PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+    
+    //Given the GlobalIdName and software type of the component anticipated, fetch the value of the expected ComponentId value.
+    expectedCompId = iScrSession.GetComponentIdL(globalId->GlobalIdName(), globalId->SoftwareTypeName());    
+    CleanupStack::PopAndDestroy(globalId);
+
+    //Fetch the ComponentId associated to the given App.
+    retrievedCompId = iScrSession.GetComponentIdForAppL(appUid);
+    
+    INFO_PRINTF3(_L("Retrieved ComponentId is %d, and Expected componentId is %d "), retrievedCompId, expectedCompId);
+    if(retrievedCompId != expectedCompId)
+        {
+        ERR_PRINTF1(_L("Retrieved componentId  doesnot match the expected values")); 
+        SetTestStepResult(EFail);
+        }
+    }
+    
+void CScrGetComponentIdForApp::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+
+// -----------CScrGetAppUidsForComponent-----------------
+
+CScrGetAppUidsForComponent::CScrGetAppUidsForComponent(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppUidsForComponent::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrGetAppUidsForComponent::ImplTestStepL()
+    {
+    TComponentId compId;
+    TInt appCount = 0;
+    RArray<TUid> expectedAppUid, retrievedAppUid;
+    CleanupClosePushL(expectedAppUid);
+    CleanupClosePushL(retrievedAppUid);
+    TUid appUid;
+    TBuf<20> appUidTxt;
+    CGlobalComponentId *globalId = GetGlobalComponentIdLC();
+    
+    //Given the GlobalIdName and software type of the component, fetch the value of the componentId value whose associated apps have to be subsequently fetched.
+    compId = iScrSession.GetComponentIdL(globalId->GlobalIdName(), globalId->SoftwareTypeName());
+    CleanupStack::PopAndDestroy(globalId);
+
+    if (!GetIntFromConfig(ConfigSection(), _L("AppCount"), appCount))
+        PrintErrorL(_L("AppCount was not found!"), KErrNotFound);
+  
+    for(TInt i=0; i<appCount; i++)
+        {
+        appUidTxt = KAppUid; 
+        GenerateIndexedAttributeNameL(appUidTxt, i);
+        if(!GetUidFromConfig(ConfigSection(), appUidTxt, appUid))
+            PrintErrorL(_L("%S was not found!"), KErrNotFound, &appUidTxt);
+        expectedAppUid.AppendL(appUid);
+        }
+    
+    //Get the apps associated to the given componentId.
+    INFO_PRINTF2(_L("Fetching apps asssociated to ComponentId %d"), compId);
+    iScrSession.GetAppUidsForComponentL(compId, retrievedAppUid);
+    if(expectedAppUid.Count()!= retrievedAppUid.Count())
+        {
+        ERR_PRINTF1(_L("Count of the retrieved appUids doesnt match the expected count")); 
+        SetTestStepResult(EFail);
+        }
+    retrievedAppUid.SortSigned();
+    expectedAppUid.SortSigned();
+    
+    for(TInt i=0; i<expectedAppUid.Count();i++)
+        {
+        if(retrievedAppUid[i].iUid != expectedAppUid[i].iUid)
+            {
+            ERR_PRINTF3(_L("Mismatch in expected and retrieved AppUids! Expected Uid: %d, Retrieved Uid: %d"), expectedAppUid[i].iUid, retrievedAppUid[i].iUid); 
+            SetTestStepResult(EFail);
+            break;
+            }
+        }
+    
+    CleanupStack::PopAndDestroy(2, &expectedAppUid);     //retrievedAppUid, expectedAppUid     
+    }
+    
+void CScrGetAppUidsForComponent::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+// -----------CScrAddConcurrentApplicationEntryStep-----------------
+
+CScrAddConcurrentApplicationEntryStep::CScrAddConcurrentApplicationEntryStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrAddConcurrentApplicationEntryStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrAddConcurrentApplicationEntryStep::ImplTestStepL()
+    {
+    TBool isSimultaneousCreateTransaction = EFalse;
+    TBool isSimultaneousWriteReadAppInfoSameSession = EFalse;
+    TBool isSimultaneousWriteAppInfoDiffSession = EFalse;
+    TBool isSimultaneousReadAppInfoDiffSessionWithoutTransaction = EFalse;
+        
+    GetBoolFromConfig(ConfigSection(), _L("SimultaneousCreateTransaction"), isSimultaneousCreateTransaction);
+    GetBoolFromConfig(ConfigSection(), _L("SimultaneousWriteReadAppInfoSameSession"), isSimultaneousWriteReadAppInfoSameSession);
+    GetBoolFromConfig(ConfigSection(), _L("SimultaneousWriteAppInfoDiffSession"), isSimultaneousWriteAppInfoDiffSession);
+    GetBoolFromConfig(ConfigSection(), _L("SimultaneousReadAppInfoDiffSessionWithoutTransaction"), isSimultaneousReadAppInfoDiffSessionWithoutTransaction);
+    
+    Usif::RSoftwareComponentRegistry scrSession1, scrSession2;    
+    TBool newComponentAdded(EFalse);
+    // connect to the SCR
+    scrSession1.Connect();
+    scrSession2.Connect();
+        
+    if(isSimultaneousCreateTransaction)
+        {         
+        // Create two transactions using two diffrent Scr Sessions, transactrion creation for 
+        // second scr session will fail( KErrScrWriteOperationInProgress)
+        TRAPD(err, scrSession1.CreateTransactionL());
+        if(KErrNone != err)
+            {
+            INFO_PRINTF2(_L("Failed to Create Transaction , error: %d"), err);
+            SetTestStepResult(EFail);        
+            }
+        else
+            {
+            //it will fail with KErrScrWriteOperationInProgress since two simultaneous transactions are not allowed.
+            scrSession2.CreateTransactionL();            
+            }
+        }
+    else if(isSimultaneousWriteReadAppInfoSameSession)
+        {        
+        //Create a transaction for the scr session , add the application info, then using the same scr session
+        //create a subsession to read the app Info, will successfuly read the app info(fron SCR Journal)
+        TComponentId compId = 0;        
+        CAppInfoFilter* appinfoFilter=NULL ;
+        TBool isMultiApp(EFalse);
+        
+        // Create transaction 
+        TRAPD(err, scrSession1.CreateTransactionL());
+        if(KErrNone != err)
+            {
+            INFO_PRINTF2(_L("Failed to Create Transaction , error: %d"), err);
+            SetTestStepResult(EFail);        
+            }
+        
+        //WRITE INTO THE DB(Add App Info)
+        GetBoolFromConfig(ConfigSection(), _L("IsMultiApp"), isMultiApp);
+        if (isMultiApp)
+            {
+            INFO_PRINTF1(_L("Checking if the component is already present"));
+            CGlobalComponentId *globalId = GetGlobalComponentIdLC();
+            TRAP_IGNORE(compId = iScrSession.GetComponentIdL(globalId->GlobalIdName(), globalId->SoftwareTypeName()););
+            CleanupStack::PopAndDestroy(globalId);
+            }
+        
+        // Try adding the app to a component. The add operation will fail if the component is not present.
+        if (!compId) 
+            {
+            if (GetIntFromConfig(ConfigSection(), _L("UseComponentId"), compId))
+                INFO_PRINTF2(_L("Adding a new AppRegInfo to component %d"), compId);
+            }
+        
+        // The component is not present already
+        if (!compId)   
+            {
+            INFO_PRINTF1(_L("Adding a new component."));
+            compId = AddNonLocalisableComponentL(iScrSession);
+            newComponentAdded = ETrue;
+            }
+        
+        INFO_PRINTF1(_L("Get reg info from config file."));
+        const CApplicationRegistrationData* appRegData = GetAppRegInfoFromConfigLC();
+        TRAP(err, scrSession1.AddApplicationEntryL(compId, *appRegData));  
+        if(KErrNone != err)
+           {
+           INFO_PRINTF2(_L("Failed to Create Transaction , error: %d"), err);
+           SetTestStepResult(EFail); 
+           if (newComponentAdded)
+               {
+               // We are going to delete the component with no apps
+               scrSession1.DeleteComponentL(compId);
+               }
+           }
+
+        INFO_PRINTF1(_L("Read appinfo filter from configuration"));
+        TRAP(err, ReadAppInfoFilterFromConfigL(&appinfoFilter));
+        if (KErrNotFound==err)
+            {
+            delete appinfoFilter;
+            appinfoFilter=NULL;
+            }
+        
+        //READ FROM th DB the AppRegInfo
+        RApplicationInfoView  subSession;
+        CleanupClosePushL(subSession);
+        subSession.OpenViewL(scrSession1,appinfoFilter);
+        if(appinfoFilter)
+                delete appinfoFilter;
+        
+        RPointerArray<Usif::TAppRegInfo> appRegInfoSet;               
+        subSession.GetNextAppInfoL(5, appRegInfoSet);                      
+        
+        //No Need To Commit The Transaction as we only need to check whether we can read while the transaction(Write) is Alive.
+        
+        appRegInfoSet.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(&subSession);        
+        CleanupStack::Pop();
+        delete appRegData;
+        }
+    
+    else if(isSimultaneousWriteAppInfoDiffSession)
+        {
+        //Using two scr sessions ,create a transaction for only the first scr session(because creation of transaction for the second will result into an error)
+        //, add the application info using both the scr sessions ,the second addition will result into an error( KErrScrWriteOperationInProgress) 
+        TComponentId compId = 0;             
+        TBool isMultiApp(EFalse);
+        
+        // Create transaction 
+        TRAPD(err, scrSession1.CreateTransactionL());
+        if(KErrNone != err)
+            {
+            INFO_PRINTF2(_L("Failed to Create Transaction , error: %d"), err);
+            SetTestStepResult(EFail);        
+            }
+        
+        //WRITE INTO THE DB(Add App Info)
+        GetBoolFromConfig(ConfigSection(), _L("IsMultiApp"), isMultiApp);
+        if (isMultiApp)
+            {
+            INFO_PRINTF1(_L("Checking if the component is already present"));
+            CGlobalComponentId *globalId = GetGlobalComponentIdLC();
+            TRAP_IGNORE(compId = iScrSession.GetComponentIdL(globalId->GlobalIdName(), globalId->SoftwareTypeName()););
+            CleanupStack::PopAndDestroy(globalId);
+            }
+        
+        // Try adding the app to a component. The add operation will fail if the component is not present.
+        if (!compId) 
+            {
+            if (GetIntFromConfig(ConfigSection(), _L("UseComponentId"), compId))
+                INFO_PRINTF2(_L("Adding a new AppRegInfo to component %d"), compId);
+            }
+        
+        // The component is not present already
+        if (!compId)   
+            {
+            INFO_PRINTF1(_L("Adding a new component."));
+            compId = AddNonLocalisableComponentL(iScrSession);
+            newComponentAdded = ETrue;
+            }
+        
+        INFO_PRINTF1(_L("Get reg info from config file."));
+        const CApplicationRegistrationData* appRegData = GetAppRegInfoFromConfigLC();
+        TRAP(err, scrSession1.AddApplicationEntryL(compId, *appRegData));  
+        if(KErrNone != err)
+            {
+            INFO_PRINTF2(_L("Failed to Create Transaction , error: %d"), err);
+            SetTestStepResult(EFail); 
+            if (newComponentAdded)
+               {
+               // We are going to delete the component with no apps
+               scrSession1.DeleteComponentL(compId);
+               }
+            }
+        
+        //Trying to write(app app info) to the db while scrSession1 is alredy in process of writing. 
+        //It will fail with KErrScrWriteOperationInProgress since a transaction is alredy alive.
+        scrSession2.AddApplicationEntryL(compId, *appRegData);
+        CleanupStack::Pop();
+        delete appRegData;        
+        }
+    
+    else if(isSimultaneousReadAppInfoDiffSessionWithoutTransaction)
+        {
+        //Two subsessions without a transaction simultaneously reading the db. 
+        CAppInfoFilter* appinfoFilter=NULL ;                   
+       
+        INFO_PRINTF1(_L("Read appinfo filter from configuration"));
+        TRAPD(err, ReadAppInfoFilterFromConfigL(&appinfoFilter));
+        if (KErrNotFound==err)
+           {
+           delete appinfoFilter;
+           appinfoFilter=NULL;
+           }
+        CleanupStack::PushL(appinfoFilter);
+        
+     
+        //READ the AppRegInfo for (scrSession1/subSession) and (scrSession2/subSession2)
+        RApplicationInfoView  subSession, subSession2;
+        CleanupClosePushL(subSession);
+        CleanupClosePushL(subSession2);
+        
+        subSession.OpenViewL(scrSession1,appinfoFilter);
+        subSession2.OpenViewL(scrSession2,appinfoFilter);        
+                
+        
+        RPointerArray<Usif::TAppRegInfo> appRegInfoSet, appRegInfoSet2;
+               
+        subSession.GetNextAppInfoL(5, appRegInfoSet);        
+        subSession2.GetNextAppInfoL(5, appRegInfoSet2);
+             
+        appRegInfoSet.ResetAndDestroy();
+        appRegInfoSet2.ResetAndDestroy();
+        
+        CleanupStack::PopAndDestroy(2, &subSession); 
+        CleanupStack::PopAndDestroy(appinfoFilter);
+        }    
+
+    //Close the sessions
+    scrSession1.Close();
+    scrSession2.Close();    
+    }
+    
+void CScrAddConcurrentApplicationEntryStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
+
+// -----------CScrGetAppInfoStep-----------------
+
+CScrGetAppInfoStep::CScrGetAppInfoStep(CScrTestServer& aParent) : CScrTestStep(aParent)
+    {
+    }
+
+void CScrGetAppInfoStep::ImplTestStepPreambleL()
+    {
+    CScrTestStep::ImplTestStepPreambleL();
+    }
+
+void CScrGetAppInfoStep::ImplTestStepL()
+    {
+    TLanguage locale;
+    TBool result;
+    TAppRegInfo retrievedAppRegEntry;
+    TUid uid;
+    TPtrC fullName, caption, shortCaption;
+
+    _LIT(KAppInfoUid, "AppUid");
+    if (!GetUidFromConfig(ConfigSection(), KAppInfoUid, uid))
+        {
+         ERR_PRINTF2(_L("The application Uid type param %S could not be found in configuration."), &KAppInfoUid);
+         User::Leave(KErrNotFound);
+        }
+        
+    _LIT(KAppInfoApplicationFilename, "AppFile");
+    if(!GetStringFromConfig(ConfigSection(), KAppInfoApplicationFilename, fullName))
+       {
+       fullName.Set(KNull);
+       }
+ 
+    _LIT(KAppInfoCaption, "Caption");
+    if(!GetStringFromConfig(ConfigSection(), KAppInfoCaption, caption))
+       {
+       caption.Set(KNull);
+       }
+ 
+    _LIT(KAppInfoShortCaption, "ShortCaption");
+    if(!GetStringFromConfig(ConfigSection(), KAppInfoShortCaption, shortCaption))
+       {
+       shortCaption.Set(KNull);
+       }
+
+    RApplicationRegistrationInfo infoQuerySubSession;
+    CleanupClosePushL(infoQuerySubSession);
+    infoQuerySubSession.OpenL(iScrSession);    
+
+    _LIT(KLocaleParam, "Locale");
+    if(GetLocaleFromConfigL(KLocaleParam,locale))
+        {
+        result = infoQuerySubSession.GetAppInfoL(uid, retrievedAppRegEntry, locale);
+        }
+    else
+        {
+        result = infoQuerySubSession.GetAppInfoL(uid, retrievedAppRegEntry);
+        }
+    
+    if(result)
+        {
+        INFO_PRINTF3(_L("Expected Uid:0x%x Retrieved Uid:0x%x"), uid, retrievedAppRegEntry.Uid()); 
+        INFO_PRINTF3(_L("Expected filename:%S Retrieved Filename: %s"), &fullName, retrievedAppRegEntry.FullName().PtrZ());
+        INFO_PRINTF3(_L("Expected caption:%S Retrieved caption: %s"), &caption, retrievedAppRegEntry.Caption().PtrZ());
+        INFO_PRINTF3(_L("Expected short caption:%S Retrieved caption: %s"), &shortCaption, retrievedAppRegEntry.ShortCaption().PtrZ());
+        }
+    else
+        {
+        INFO_PRINTF1(_L("The given application Uid is absent in the database.")); 
+        }
+    
+    if(fullName!=retrievedAppRegEntry.FullName() ||caption!=retrievedAppRegEntry.Caption()|| shortCaption!=retrievedAppRegEntry.ShortCaption())
+        {
+        ERR_PRINTF1(_L("Mismatch in expected and retrieved values! ")); 
+        SetTestStepResult(EFail);
+        }
+    else
+        {
+        INFO_PRINTF1(_L("Expected and retrieved results match."));
+        }
+
+    CleanupStack::PopAndDestroy(&infoQuerySubSession);    
+    }
+ 
+void CScrGetAppInfoStep::ImplTestStepPostambleL()
+    {
+    CScrTestStep::ImplTestStepPostambleL();
+    }
--- a/installationservices/swcomponentregistry/test/tscr/source/componentmanagementsteps.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/source/componentmanagementsteps.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -71,7 +71,7 @@
 	if (isLocalisable)
 		componentId = AddLocalisableComponentL();
 	else
-		componentId = AddNonLocalisableComponentL();
+		componentId = AddNonLocalisableComponentL(iScrSession);
 	
 	TPtrC version;
 	if (GetStringFromConfig(ConfigSection(), KVersionName, version))
--- a/installationservices/swcomponentregistry/test/tscr/source/componentquerysteps.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/source/componentquerysteps.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -595,64 +595,161 @@
 // -----------CScrOom-----------------
 SCROufOfMemory::SCROufOfMemory(CScrTestServer& aParent)	: CScrTestStep(aParent)
 	{
-	iFailRate = 0;
+	iFailRate = 0;		
 	}
 
 void SCROufOfMemory::ImplTestStepPreambleL()
 	{
+	CScrTestStep::ImplTestStepPreambleL();
 	}
 
 void SCROufOfMemory::ImplTestStepL()
 	{
-	TInt i = 5000;
+	TInt i = 5000;		
 	while(i--)
-		{
+		{    
+		iScrSession.SetServerHeapFail(++iFailRate);
 		TRAPD(err, ExecuteL());
-		if (err == KErrNone)
+		if (err != KErrNone || err != KErrNoMemory)		    
 			{
-			}
+			INFO_PRINTF2(_L("Error in oom Test : %d "),err);
+			}	
+		iScrSession.ResetServerHeapFail();		
 		}
+	
 	}
 
 void SCROufOfMemory::ImplTestStepPostambleL()
 	{
+	CScrTestStep::ImplTestStepPostambleL();
 	}
 
+void SCROufOfMemory::ApplicationRegistrationOperationsL(Usif::RSoftwareComponentRegistry& aScrSession)
+    {    
+    TComponentId compId = 0;
+    TBool newComponentAdded(EFalse);
+   
+    // Checking if have already inserted the component
+    TBool isMultiApp(EFalse);
+    GetBoolFromConfig(ConfigSection(), _L("IsMultiApp"), isMultiApp);
+    if (isMultiApp)
+        {
+        INFO_PRINTF1(_L("Checking if the component is already present"));
+        CGlobalComponentId *globalId = GetGlobalComponentIdLC();
+        TRAP_IGNORE(compId = aScrSession.GetComponentIdL(globalId->GlobalIdName(), globalId->SoftwareTypeName()););
+        CleanupStack::PopAndDestroy(globalId);
+        }
+
+    // Try adding the app to a component. The add operation will fail if the component is not present.
+    if (!compId) 
+        {
+        if (GetIntFromConfig(ConfigSection(), _L("UseComponentId"), compId))
+            INFO_PRINTF2(_L("Adding a new AppRegInfo to component %d"), compId);
+        }
+    
+    // The component is not present already
+    if (!compId)   
+        {
+        INFO_PRINTF1(_L("Adding a new component."));
+        compId = AddNonLocalisableComponentL(aScrSession);
+        newComponentAdded = ETrue;
+        }
+
+    INFO_PRINTF1(_L("Get reg info from config file."));
+    const CApplicationRegistrationData* appRegData = GetAppRegInfoFromConfigLC();
+    TRAPD(err, aScrSession.AddApplicationEntryL(compId, *appRegData));  
+    
+    if (err != KErrNone && err != KErrAlreadyExists )
+        {
+        if (newComponentAdded)
+            {
+            // We are going to delete the component with no apps
+            aScrSession.DeleteComponentL(compId);
+            }
+        User::Leave(err);
+        }
+
+    CleanupStack::PopAndDestroy();
+    
+    //Read from DB the AppRegInfo
+    CAppInfoFilter* appInfoFilter=NULL ;
+    INFO_PRINTF1(_L("Read appinfo filter from configuration"));
+    TRAP(err, ReadAppInfoFilterFromConfigL(&appInfoFilter));    
+    if (KErrNotFound==err)
+        {
+        delete appInfoFilter;
+        appInfoFilter=NULL;
+        }   
+    
+    CleanupStack::PushL(appInfoFilter);
+    RApplicationInfoView  subSession;
+    CleanupClosePushL(subSession);
+    subSession.OpenViewL(aScrSession,appInfoFilter);
+    if(appInfoFilter)
+        {        
+        delete appInfoFilter;
+        appInfoFilter = NULL;
+        }
+    
+    RPointerArray<Usif::TAppRegInfo> appRegInfoSet;   
+    do
+      {
+      subSession.GetNextAppInfoL(5, appRegInfoSet);       
+      appRegInfoSet.ResetAndDestroy();
+      }while(0 != appRegInfoSet.Count()); 
+    
+    CleanupStack::Pop(&subSession);
+    subSession.Close();
+    CleanupStack::Pop();
+        
+    // Delete the component
+    aScrSession.DeleteComponentL(compId);
+    }
+
+
 void SCROufOfMemory::ExecuteL()
 	{
-	// Connect to the SCR server
-	RSoftwareComponentRegistry scr;
-	TInt err = scr.Connect();
-	if (err != KErrNone)
-		{
-		INFO_PRINTF1(_L("Failed to connect to the SCR server"));
-		User::Leave(err);
-		}
-	CleanupClosePushL(scr);
+	TBool isAppInfoOomTest(EFalse);
+	GetBoolFromConfig(ConfigSection(), _L("IsAppInfoOomTest"), isAppInfoOomTest);
+	//Connect to the SCR server
+    Usif::RSoftwareComponentRegistry scr;
+    TInt err = scr.Connect();
+    
+    if (err != KErrNone)
+        {
+        INFO_PRINTF1(_L("Failed to connect to the SCR server"));
+        User::Leave(err);
+        }
+    CleanupClosePushL(scr);
 
-	scr.SetServerHeapFail(++iFailRate);
 	INFO_PRINTF2(_L("HeapFail set for %d allocation"),iFailRate);
-	
-	// Create an SCR view
-	RSoftwareComponentRegistryView scrView;
-	scrView.OpenViewL(scr);
-	CleanupClosePushL(scrView);
 
-	// Iterate over the matching components
-	CComponentEntry* entry = CComponentEntry::NewLC();
-	while (scrView.NextComponentL(*entry))
-	    {
-		RPointerArray<Usif::CLocalizableComponentInfo> compLocalizedInfoArray;
-		CleanupResetAndDestroyPushL(compLocalizedInfoArray);
-		scr.GetComponentLocalizedInfoL(entry->ComponentId(), compLocalizedInfoArray);
-		CleanupStack::Pop(&compLocalizedInfoArray);
-		compLocalizedInfoArray.ResetAndDestroy();
-	    }
-	
-	scrView.Close();
-	// Disconnect from the SCR server and cleanup the entry
-	scr.ResetServerHeapFail();
-	CleanupStack::PopAndDestroy();
-	CleanupStack::Pop();
-	CleanupStack::PopAndDestroy();
+    if(isAppInfoOomTest)
+        {
+        ApplicationRegistrationOperationsL(scr);
+        }
+    else
+        {
+        // Create an SCR view
+        RSoftwareComponentRegistryView scrView;
+        scrView.OpenViewL(scr);
+        CleanupClosePushL(scrView);
+    
+        // Iterate over the matching components
+        CComponentEntry* entry = CComponentEntry::NewLC();
+        while (scrView.NextComponentL(*entry))
+            {
+            RPointerArray<Usif::CLocalizableComponentInfo> compLocalizedInfoArray;
+            CleanupResetAndDestroyPushL(compLocalizedInfoArray);
+            scr.GetComponentLocalizedInfoL(entry->ComponentId(), compLocalizedInfoArray);
+            CleanupStack::Pop(&compLocalizedInfoArray);
+            compLocalizedInfoArray.ResetAndDestroy();
+            }
+        
+        scrView.Close();
+        CleanupStack::PopAndDestroy();
+        CleanupStack::Pop();
+        }	
+    CleanupStack::PopAndDestroy();
 	}
+
--- a/installationservices/swcomponentregistry/test/tscr/source/installloghistorysteps.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/source/installloghistorysteps.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -134,8 +134,23 @@
 		{
 		if (*aFoundLogEntries[i] != *aExpectedLogEntries[i])
 			{
-			ERR_PRINTF2(_L("Log entry %d did not match."), i);
-			return EFalse;
+            ERR_PRINTF2(_L("Log entry %d did not match."), i);
+            ERR_PRINTF2(_L("current device lang is %d"), User::Language());
+			
+			ERR_PRINTF6(_L("found values are name %S, type %S, version %S, globalid %S, optype is %d"),
+                            &(aFoundLogEntries[i]->ComponentName()),
+                            &(aFoundLogEntries[i]->SoftwareTypeName()), 
+                            &(aFoundLogEntries[i]->ComponentVersion()), 
+                            &(aFoundLogEntries[i]->GlobalId()),
+                            aFoundLogEntries[i]->OperationType());
+
+            ERR_PRINTF6(_L("expected values were name %S, type %S, version %S, globalid %S, optype is %d"),
+							&(aExpectedLogEntries[i]->ComponentName()) ,
+                            &(aExpectedLogEntries[i]->SoftwareTypeName()) , 
+                            &(aExpectedLogEntries[i]->ComponentVersion()), 
+                            &(aExpectedLogEntries[i]->GlobalId()), 
+                            aExpectedLogEntries[i]->OperationType() );
+            return EFalse;
 			}
 		}	
 	return ETrue;
--- a/installationservices/swcomponentregistry/test/tscr/source/subsessionsteps.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/source/subsessionsteps.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -28,6 +28,24 @@
 	return (aLhsEntry == aRhsEntry);
 	}
 
+TBool operator ==(const Usif::TAppRegInfo& aLhsEntry, const Usif::TAppRegInfo& aRhsEntry)
+    {
+    return (aLhsEntry.Uid() == aRhsEntry.Uid() && 
+            aLhsEntry.FullName() == aRhsEntry.FullName() &&  
+            aLhsEntry.Caption() == aRhsEntry.Caption() &&  
+            aLhsEntry.ShortCaption() == aRhsEntry.ShortCaption());
+    }
+TBool operator !=(const TAppRegInfo& aLhsEntry, const TAppRegInfo& aRhsEntry)
+    {
+    return !operator ==(aLhsEntry, aRhsEntry);
+    }
+
+TBool IsEqual(const TAppRegInfo& aLhsEntry, const TAppRegInfo& aRhsEntry)
+    {
+    return (aLhsEntry == aRhsEntry);
+    }
+
+
 TBool IsEqual(const HBufC& aLhs, const HBufC& aRhs)
 	{
 	return const_cast<HBufC &>(aLhs).Des() == const_cast<HBufC &>(aRhs).Des();
@@ -319,3 +337,175 @@
 	{
 	CScrTestStep::ImplTestStepPostambleL();
 	}
+
+// -----------CAppInfoView-----------------
+
+CAppInfoView::CAppInfoView(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CAppInfoView::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CAppInfoView::GetAppEntryFromConfigL(RPointerArray<Usif::TAppRegInfo>& aEntries)
+    {
+    TInt appEntriesCount(0);
+    TAppRegInfo *appRegInfo=NULL;
+    if (!GetIntFromConfig(ConfigSection(), KAppEntriesCountName, appEntriesCount))
+        {
+        appRegInfo = GetAppInfoFromConfigL(ETrue);
+        aEntries.AppendL(appRegInfo);
+        }
+    
+    for (TInt i = 0; i < appEntriesCount; ++i)
+        {
+        appRegInfo = GetAppInfoFromConfigL(EFalse,i);
+        aEntries.AppendL(appRegInfo);
+        }
+    }
+
+void CAppInfoView::VerifyNonReturnedEntriesL(const RPointerArray<Usif::TAppRegInfo>& aExpectedEntries)
+    {
+    // Check if we need to verify the returned components
+    // Performance tests don't need verification.
+    TBool noVerification = EFalse;
+    GetBoolFromConfig(ConfigSection(), _L("NoVerification"), noVerification);
+    if(noVerification) return;
+
+    if (aExpectedEntries.Count() > 0)
+        {
+        TUid appUid = aExpectedEntries[0]->Uid(); 
+        const TDesC& appName = aExpectedEntries[0]->FullName();
+        ERR_PRINTF3(_L("At least one expected entry was not returned by the API - id %d, name %S"), appUid, &appName);
+        SetTestStepResult(EFail);
+        }   
+    }
+
+void CAppInfoView::TestSessionL(TInt aNoOfEntries, const RApplicationInfoView& aSubSession, RPointerArray<Usif::TAppRegInfo>& aExpectedEntries)
+    {
+    // Check if we need to verify the returned components
+    // Performance tests don't need verification.
+    TBool isVerification = EFalse;
+    GetBoolFromConfig(ConfigSection(), _L("IsVerification"), isVerification);
+    while (1)
+            {
+            RPointerArray<Usif::TAppRegInfo> appRegInfoSet;
+            aSubSession.GetNextAppInfoL(aNoOfEntries, appRegInfoSet);
+            TInt returnedAppRegInfoCount = appRegInfoSet.Count(); 
+            if (returnedAppRegInfoCount <= 0)
+                {
+                INFO_PRINTF2(_L("May be negative case... no entries found ...Entries count read is %d "),returnedAppRegInfoCount);
+				appRegInfoSet.Close();
+                break;
+                }
+            
+            if(!isVerification) 
+                {
+                //INFO_PRINTF2(_L("Read Appuid is  %S"),appRegInfoSet[0]->iFullName );
+                INFO_PRINTF3(_L("No of entries read is %d and first appuid is %d "),returnedAppRegInfoCount,  appRegInfoSet[0]->Uid());
+               
+                    TAppRegInfo* tp=NULL;
+                    for (TInt i = 0; i<returnedAppRegInfoCount; i++ )
+                        {
+                    tp=appRegInfoSet[i];
+                    delete tp;
+                        }
+                appRegInfoSet.Close();
+				continue;
+                }
+                    
+            for (TInt i = 0; i < returnedAppRegInfoCount; ++i)
+                {
+                if (!VerifyMatchingL(appRegInfoSet[i], aExpectedEntries))
+                   {
+                   
+                   SetTestStepResult(EFail);
+                   ERR_PRINTF2(_L("The API returned an unexpected entry with id 0x%x "), appRegInfoSet[i]->Uid());
+                   TAppRegInfo* tp=NULL;
+                   for (TInt i = 0; i<returnedAppRegInfoCount; i++ )
+                       {
+                       tp=appRegInfoSet[i];
+                       delete tp;
+                       }
+                   appRegInfoSet.Close();
+                   return;
+                   }
+                }
+                                TAppRegInfo* tp=NULL;
+                               for (TInt i = 0; i<returnedAppRegInfoCount; i++ )
+                                   {
+                               tp=appRegInfoSet[i];
+                               delete tp;
+                                   }
+            appRegInfoSet.Close();
+            }
+        
+    VerifyNonReturnedEntriesL(aExpectedEntries); 
+    
+    }
+
+void CAppInfoView::ImplTestStepL()
+	{	
+	CAppInfoFilter* appinfoFilter=NULL ;
+
+	INFO_PRINTF1(_L("Read appinfo filter from configuration"));
+	TRAPD(err, ReadAppInfoFilterFromConfigL(&appinfoFilter));
+	if (KErrNotFound==err)
+	    {
+	    delete appinfoFilter;
+	    appinfoFilter=NULL;
+	    }
+	RPointerArray<TAppRegInfo> expectedAppRegEntries;
+    CleanupResetAndDestroyPushL(expectedAppRegEntries);
+	TInt noOfEntries(1);
+	GetIntFromConfig(ConfigSection(), _L("NoOfEntries"), noOfEntries);
+	
+	TBool isVerification = EFalse;
+	GetBoolFromConfig(ConfigSection(), _L("IsVerification"), isVerification);
+	if(isVerification) 
+	{
+        GetAppEntryFromConfigL(expectedAppRegEntries);
+        INFO_PRINTF1(_L("Read expected entries for verification "));
+	}
+    
+	INFO_PRINTF1(_L("Opened subsession to SCR"));
+    TBool callGetNextAppWithLocale=EFalse;
+    TInt appLocale;
+    if (GetIntFromConfig(ConfigSection(), _L("LocaleValue"), appLocale))
+        callGetNextAppWithLocale=ETrue;
+	RApplicationInfoView  subSession;
+	CleanupClosePushL(subSession);
+
+	if(callGetNextAppWithLocale)
+	    {
+	    subSession.OpenViewL(iScrSession,appinfoFilter, (TLanguage)appLocale);
+	    }
+	else
+	    {
+	    subSession.OpenViewL(iScrSession,appinfoFilter);
+	    }
+
+	if(appinfoFilter)
+	    delete appinfoFilter;
+
+	TRAPD(err1,TestSessionL(noOfEntries, subSession, expectedAppRegEntries));
+	
+	TInt count = expectedAppRegEntries.Count();
+	TAppRegInfo* tp=NULL;
+	for (TInt i = 0; i<count; i++ )
+	    {
+	    tp=expectedAppRegEntries[i];
+	    delete tp;
+	    }
+	expectedAppRegEntries.Close();
+	CleanupStack::PopAndDestroy(2, &expectedAppRegEntries); //expectedAppRegEntries, subSession
+	if (KErrNone!=err1)
+	    User::Leave(err1);
+	}
+
+void CAppInfoView::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
--- a/installationservices/swcomponentregistry/test/tscr/source/transactionmanagementsteps.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/source/transactionmanagementsteps.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -40,7 +40,7 @@
 	iScrSession.CreateTransactionL();
 	
 	// Add a new component into SCR database
-	TComponentId componentId= AddNonLocalisableComponentL();
+	TComponentId componentId= AddNonLocalisableComponentL(iScrSession);
 	AppendSharedComponentIdL(componentId);
 	
 	// Register a file to the component
--- a/installationservices/swcomponentregistry/test/tscr/source/tscrserver.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/source/tscrserver.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -28,6 +28,7 @@
 #include "deletescrdbstep.h"
 #include "pluginmanagementsteps.h"
 #include "installloghistorysteps.h"
+#include "appreginfosteps.h"
 
 CScrTestServer* CScrTestServer::NewL()
 /**
@@ -215,7 +216,46 @@
   		testStep = new CScrValuesNegativeStep(*this);		
   	else if (strippedStepName == KScrOutOfMemoryStep)
   		testStep = new SCROufOfMemory(*this);
-	
+  	else if (strippedStepName == KScrAddApplicationEntry)
+  	    testStep = new CScrAddApplicationEntryStep(*this);
+  	else if (strippedStepName == KScrDeleteApplicationEntry)
+	  	testStep = new CScrDeleteApplicationEntriesStep(*this);
+	else if (strippedStepName == KSCRGetAppServicesUids)
+  	    testStep = new CSCRGetAppServicesUids(*this);
+	else if (strippedStepName == KSCRGetAppForDataType)
+	    testStep = new CSCRGetAppForDataType(*this);	    
+	else if (strippedStepName == KSCRGetAppForDataTypeAndService)
+	    testStep = new CSCRGetAppForDataTypeAndService(*this);	    
+	else if (strippedStepName == KSCRGetDefaultScreenNumber)
+	    testStep = new CSCRGetDefaultScreenNumber(*this);
+    else if (strippedStepName == KSCRGetNumberOfDefinedIcons)
+        testStep = new CSCRGetNumberOfDefinedIcons(*this);	    
+    else if (strippedStepName == KSCRGetApplicationLanguage)
+        testStep = new CSCRGetApplicationLanguage(*this);	
+    else if (strippedStepName == KScrGetAppOwnedFilesEntry)
+        testStep = new CScrGetAppOwnedFilesEntryStep(*this);
+    else if (strippedStepName == KScrGetAppCapabilityEntry)
+        testStep = new CScrGetAppCharacteristicsEntryStep(*this);
+    else if (strippedStepName == KScrGetAppIconEntry)
+        testStep = new CScrGetAppIconEntryStep(*this);
+    else if (strippedStepName == KScrGetAppViewIconEntry)
+        testStep = new CScrGetAppViewIconEntryStep(*this);	
+	else if (strippedStepName == KScrGetAppViewInfoStep)
+            testStep = new CScrGetAppViewsStep(*this);
+	else if (strippedStepName == KScrAppViewSubsessionStep)
+  		testStep = new CAppInfoView(*this);
+    else if (strippedStepName == KScrGetAppServiceInfoStep)
+        testStep = new CScrGetAppServiceInfoStep(*this);
+    else if (strippedStepName == KScrGetComponentIdForAppStep)
+        testStep = new CScrGetComponentIdForApp(*this);
+    else if (strippedStepName == KScrGetAppUidsForComponentStep)
+        testStep = new CScrGetAppUidsForComponent(*this);
+	else if (strippedStepName == KScrAddConcurrentApplicationEntryStep)
+        testStep = new CScrAddConcurrentApplicationEntryStep(*this);	
+    else if (strippedStepName == KScrGetAppInfoStep)
+        testStep = new CScrGetAppInfoStep(*this);
+  	
+
 	if(performanceStep)
 		{
 		CScrTestStep *scrTestStep = dynamic_cast<CScrTestStep*>(testStep);
--- a/installationservices/swcomponentregistry/test/tscr/source/tscrstep.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swcomponentregistry/test/tscr/source/tscrstep.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -22,9 +22,11 @@
 #include "tscrdefs.h"
 #include <f32file.h>
 #include <scs/cleanuputils.h>
+#include <usif/sif/sifutils.h>
 
 using namespace Usif;
 
+
 CScrTestStep::CScrTestStep(CScrTestServer& aParent)
 // Constructor.
 	: iParent(aParent)
@@ -770,10 +772,16 @@
 	{
 	TInt propertiesCount = 0;
 	if (!GetIntFromConfig(ConfigSection(), KPropertiesCountParamName, propertiesCount))
-		PrintErrorL(_L("Properties count was not found!"), KErrNotFound);
+	    {
+	    INFO_PRINTF1(_L("Properties count was not found!"));
+	    return;
+	    }
 	
 	if (propertiesCount < 0)
-		PrintErrorL(_L("Properties count is negative!"), KErrNotFound);
+	    {
+	    INFO_PRINTF1(_L("Properties count was negative !"));
+	    return;
+	    }
 	
 	for (TInt i = 0; i < propertiesCount; ++i)
 		{
@@ -908,7 +916,7 @@
 	return setSize;
 	}
 
-Usif::TComponentId CScrTestStep::AddNonLocalisableComponentL()
+Usif::TComponentId CScrTestStep::AddNonLocalisableComponentL(Usif::RSoftwareComponentRegistry& aScrSession)
 	{
 	TPtrC componentName;
 	GetComponentNameFromConfigL(componentName);
@@ -918,6 +926,7 @@
 	GetSoftwareTypeNameL(swTypeName);
 	
 	TScrComponentOperationType operationType(EScrCompInstall);
+	
 	TInt opTypeInt(0);
 	if(GetIntFromConfig(ConfigSection(), KOperationType, opTypeInt))
 		{
@@ -927,9 +936,9 @@
 	Usif::TComponentId componentId;
 	TPtrC globalIdName;
 	if(GetGlobalIdNameL(globalIdName))
-		componentId = iScrSession.AddComponentL(componentName, vendorName, swTypeName, &globalIdName, operationType);
+		componentId = aScrSession.AddComponentL(componentName, vendorName, swTypeName, &globalIdName, operationType);
 	else
-		componentId = iScrSession.AddComponentL(componentName, vendorName, swTypeName, NULL, operationType);
+		componentId = aScrSession.AddComponentL(componentName, vendorName, swTypeName, NULL, operationType);
 	
 	return componentId;
 	}
@@ -1042,3 +1051,618 @@
 	
 	return componentFilter;
 	}
+
+void CScrTestStep::GetAppOwnedFilesL(RPointerArray<HBufC>& aOwnedFileArray)
+	{
+	TInt ownedFileCount = 0;
+	GetIntFromConfig(ConfigSection(), _L("OwnedFileCount"), ownedFileCount);
+	for (TUint i = 0; i < ownedFileCount; ++i)
+		{
+		TPtrC tOwnedFileName;
+		TBuf<20> fileName;
+		fileName = KOwnedFileName;
+		GenerateIndexedAttributeNameL(fileName, i);
+		GetStringFromConfig(ConfigSection(), fileName, tOwnedFileName);
+		HBufC* ownedFileName = tOwnedFileName.AllocLC();
+		aOwnedFileArray.AppendL(ownedFileName);
+		CleanupStack::Pop(ownedFileName);
+		}	
+	}
+
+void CScrTestStep::GetAppServiceInfoL(RPointerArray<CServiceInfo>& aServiceInfoArray)
+	{
+	TInt serviceInfoCount = 0;
+	TInt totalOpaqueDataCount = 0;
+	TInt totalServiceDataTypeCount = 0;
+	GetIntFromConfig(ConfigSection(), _L("ServiceInfoCount"), serviceInfoCount);
+	for (TUint i = 0; i < serviceInfoCount; ++i)
+		{
+		// service Uid
+        TBuf<20> uid;
+		TUid serviceUid;
+		uid = KServiceUid;
+		GenerateIndexedAttributeNameL(uid, i);
+		GetUidFromConfig(ConfigSection(), uid, serviceUid);
+		
+		// service opaque data
+		RPointerArray<COpaqueData> serviceOpaqueDataInfoArray;
+		TBuf<27> servOpaqueDataCountStr;
+		servOpaqueDataCountStr = KServiceOpaqueDataInfoCount;
+		GenerateIndexedAttributeNameL(servOpaqueDataCountStr, i);
+		TInt serviceOpaqueDataInfoCount = 0;
+		GetIntFromConfig(ConfigSection(), servOpaqueDataCountStr, serviceOpaqueDataInfoCount);
+		GetServiceOpaqueDataInfoL(serviceOpaqueDataInfoArray, serviceOpaqueDataInfoCount, totalOpaqueDataCount);
+		totalOpaqueDataCount += serviceOpaqueDataInfoCount;
+		//CleanupStack::PushL(&serviceOpaqueDataInfoArray);
+
+		// service data type
+		TBuf<21> serviceDataTypeCountString;
+		serviceDataTypeCountString = KServiceDataTypeCount;
+		GenerateIndexedAttributeNameL(serviceDataTypeCountString, i);
+		TInt serviceDataTypeCount = 0;
+		GetIntFromConfig(ConfigSection(), serviceDataTypeCountString, serviceDataTypeCount);
+		totalServiceDataTypeCount+=serviceDataTypeCount;
+		RPointerArray<CDataType> serviceDataTypeArray;
+		for (TUint j = 0; j < serviceDataTypeCount; ++j)
+			{
+			TInt indexToRead = totalServiceDataTypeCount-serviceDataTypeCount+j;
+			TInt serviceDataTypePriority;
+			TPtrC serviceType;
+			TBuf<25> priority, type;
+			priority = KServiceDataTypePriority;
+			GenerateIndexedAttributeNameL(priority, indexToRead);
+			GetIntFromConfig(ConfigSection(), priority, serviceDataTypePriority);
+			type = KServiceDataType;
+			GenerateIndexedAttributeNameL(type, indexToRead);
+			GetStringFromConfig(ConfigSection(), type, serviceType);
+			CDataType* serviceDataType = CDataType::NewLC(serviceDataTypePriority,serviceType);
+			serviceDataTypeArray.AppendL(serviceDataType);
+			CleanupStack::Pop(serviceDataType);
+			}
+		
+		CServiceInfo* serviceInfo = CServiceInfo::NewLC(serviceUid, serviceOpaqueDataInfoArray, serviceDataTypeArray);
+		aServiceInfoArray.AppendL(serviceInfo);
+		CleanupStack::Pop(serviceInfo);
+		}
+	}
+
+void CScrTestStep::GetAppLocalizableInfoL(RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoArray)
+	{
+	TInt localizableAppInfoCount = 0;
+	TInt totalViewDataCount=0;
+	GetIntFromConfig(ConfigSection(), _L("LocalizableAppInfoCount"), localizableAppInfoCount);
+	for (TUint i = 0; i < localizableAppInfoCount; ++i)
+		{
+		TPtrC locShortCaption;
+		TLanguage locLanguage;
+		TInt lang;
+		TPtrC locGroupName;
+		TBuf<20> shortCaption, language, groupName, viewDataCount;
+		shortCaption = KLocShortCaption;
+		GenerateIndexedAttributeNameL(shortCaption, i);
+		GetStringFromConfig(ConfigSection(), shortCaption, locShortCaption);
+		language = KLocAppLanguage;
+		GenerateIndexedAttributeNameL(language, i);
+		GetIntFromConfig(ConfigSection(), language, lang);
+
+		locLanguage = static_cast<TLanguage>(lang);
+		groupName = KLocGroupName;
+		GenerateIndexedAttributeNameL(groupName, i);
+		GetStringFromConfig(ConfigSection(), groupName, locGroupName);
+		
+		TPtrC locCaption;
+		TPtrC locIconFileName;
+		TInt locNoOfAppIcons = 0;
+		TBuf<20> caption, iconFileName, noOfAppIcons;
+		caption = KLocCaption;
+		GenerateIndexedAttributeNameL(caption, i);
+		GetStringFromConfig(ConfigSection(), caption, locCaption);
+		iconFileName = KLocIconFileName;
+		GenerateIndexedAttributeNameL(iconFileName, i);
+		GetStringFromConfig(ConfigSection(), iconFileName, locIconFileName);
+		noOfAppIcons = KLocNumberOfAppIcons;
+		GenerateIndexedAttributeNameL(noOfAppIcons, i);
+		GetIntFromConfig(ConfigSection(), noOfAppIcons, locNoOfAppIcons);
+		CCaptionAndIconInfo* captionAndIconInfo = NULL;
+		if(locCaption.Length() != 0 || locIconFileName.Length() !=0 || locNoOfAppIcons != 0)
+		  {
+		   captionAndIconInfo = CCaptionAndIconInfo::NewLC(locCaption,locIconFileName,locNoOfAppIcons);
+		  }
+		else
+		  CleanupStack::PushL(captionAndIconInfo);
+		
+		TInt viewDataCountForLocale = 0;
+		viewDataCount=KViewDataCount;
+		GenerateIndexedAttributeNameL(viewDataCount, i);
+		GetIntFromConfig(ConfigSection(), viewDataCount , viewDataCountForLocale);
+		totalViewDataCount+=viewDataCountForLocale;
+		RPointerArray<CAppViewData> viewDataArray;
+		for (TUint i = 0; i < viewDataCountForLocale; ++i)
+			{
+			TInt viewScreenMode,vUid,indexToRead;
+			TBuf<20> uid, screenMode;
+			uid = KVwUid;
+			indexToRead=totalViewDataCount-viewDataCountForLocale+i;
+			GenerateIndexedAttributeNameL(uid, indexToRead);
+			GetIntFromConfig(ConfigSection(), uid, vUid);
+			TUid viewUid = TUid::Uid(vUid);
+			screenMode = KVwScreenMode;
+			GenerateIndexedAttributeNameL(screenMode, indexToRead);
+			GetIntFromConfig(ConfigSection(), screenMode, viewScreenMode);
+			
+			TPtrC viewCaption;
+			TPtrC viewIconFileName;
+			TInt viewNoOfAppIcons = 0;
+			TBuf<20> caption, iconFileName, noOfAppIcons;
+			caption = KVwCaption;
+			GenerateIndexedAttributeNameL(caption, indexToRead);
+			GetStringFromConfig(ConfigSection(), caption, viewCaption);
+			iconFileName = KVwIconFileName;
+			GenerateIndexedAttributeNameL(iconFileName, indexToRead);
+			GetStringFromConfig(ConfigSection(), iconFileName, viewIconFileName);
+			noOfAppIcons = KVwNumberOfAppIcons;
+			GenerateIndexedAttributeNameL(noOfAppIcons, indexToRead);
+			GetIntFromConfig(ConfigSection(), noOfAppIcons, viewNoOfAppIcons);
+			CCaptionAndIconInfo* viewCaptionAndIconInfo = NULL;
+			if(viewCaption.Length() != 0 || viewIconFileName.Length() !=0 || viewNoOfAppIcons != 0)
+			  {
+			   viewCaptionAndIconInfo = CCaptionAndIconInfo::NewLC(viewCaption,viewIconFileName,viewNoOfAppIcons);
+			  }
+			else
+			  CleanupStack::PushL(viewCaptionAndIconInfo);			
+			
+			CAppViewData* viewData = CAppViewData::NewLC(viewUid,viewScreenMode,viewCaptionAndIconInfo);
+			viewDataArray.AppendL(viewData);
+			CleanupStack::Pop(2, viewCaptionAndIconInfo);
+			}
+
+		CLocalizableAppInfo* localizableAppInfo = CLocalizableAppInfo::NewLC(locShortCaption,locLanguage,locGroupName,captionAndIconInfo,viewDataArray);
+		aLocalizableAppInfoArray.AppendL(localizableAppInfo);
+		CleanupStack::Pop(localizableAppInfo);
+		CleanupStack::Pop(captionAndIconInfo);
+		}
+	}
+
+void CScrTestStep::GetAppOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aAppOpaqueDataInfoArray)
+    {
+    TInt appOpaqueDataInfoCount = 0;
+    
+    GetIntFromConfig(ConfigSection(), _L("AppOpaqueDataInfoCount"), appOpaqueDataInfoCount);
+    for (TUint i = 0; i < appOpaqueDataInfoCount; ++i)
+        {
+        TBuf<16> localeAttr;
+        localeAttr = KAppOpaqueDataLocale;
+        TInt locale = 0;
+        GenerateIndexedAttributeNameL(localeAttr, i);
+        GetIntFromConfig(ConfigSection(), localeAttr, locale);
+        
+
+                    
+        TBuf<14> opaqueDataAttr;
+        opaqueDataAttr = KAppOpaqueData;
+        TPtrC opaqueData;
+        GenerateIndexedAttributeNameL(opaqueDataAttr, i);
+        GetStringFromConfig(ConfigSection(), opaqueDataAttr, opaqueData);
+                
+        TPtrC8 blobOpaqueData((TUint8*)opaqueData.Ptr(), opaqueData.Length()*2);
+
+        COpaqueData* appOpaqueData = COpaqueData::NewLC(blobOpaqueData, (TLanguage) locale);
+        aAppOpaqueDataInfoArray.AppendL(appOpaqueData);
+        CleanupStack::Pop(appOpaqueData);
+        }    
+    }
+
+void CScrTestStep::GetServiceOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aServiceOpaqueDataInfoArray, TInt aServiceOpaqueDataInfoCount, TInt aStartingIndex)
+    {
+    for (TUint i = 0; i < aServiceOpaqueDataInfoCount; ++i)
+        {
+        TBuf<20> localeAttr;
+        localeAttr = KServiceOpaqueLocale;
+        TInt locale = 0;
+        TInt indexToRead = i + aStartingIndex;
+        GenerateIndexedAttributeNameL(localeAttr, indexToRead);
+        GetIntFromConfig(ConfigSection(), localeAttr, locale);
+                    
+        TBuf<18> opaqueDataAttr;
+        opaqueDataAttr = KServiceOpaqueData;
+        TPtrC opaqueData;
+        GenerateIndexedAttributeNameL(opaqueDataAttr, indexToRead);
+        GetStringFromConfig(ConfigSection(), opaqueDataAttr, opaqueData);
+                
+        TPtrC8 blobOpaqueData((TUint8*)opaqueData.Ptr(), opaqueData.Length()*2);
+
+        COpaqueData* serviceOpaqueData = COpaqueData::NewLC(blobOpaqueData, (TLanguage) locale);
+        aServiceOpaqueDataInfoArray.AppendL(serviceOpaqueData);
+        CleanupStack::Pop(serviceOpaqueData);
+        }    
+    }
+
+CApplicationRegistrationData* CScrTestStep::GetAppRegInfoFromConfigLC()
+	{
+	TUid appUid;
+	GetAppUidL(appUid);
+
+	TPtrC appFile; 
+	TBuf<128> appFileBuf;
+	_LIT(KAppFileName, "appName%d");
+	if(!GetStringFromConfig(ConfigSection(), _L("AppFile"), appFile))
+	    {
+	    TBool generateNewUid(EFalse);
+		//Generate appFile Name from the appUid.
+	    if (GetBoolFromConfig(ConfigSection(), _L("GenerateNewUid"), generateNewUid))
+	         {
+	         appFileBuf.Format(KAppFileName, appUid);
+	         appFile.Set(appFileBuf);
+	         }
+	    }
+
+	TInt attributes, hidden, embeddability, newFile, launch, defScreenNo;
+	GetIntFromConfig(ConfigSection(), _L("Attributes"), attributes);
+	GetIntFromConfig(ConfigSection(), _L("Hidden"), hidden);
+	GetIntFromConfig(ConfigSection(), _L("Embeddability"), embeddability);
+	GetIntFromConfig(ConfigSection(), _L("NewFile"), newFile);
+	GetIntFromConfig(ConfigSection(), _L("Launch"), launch);
+
+	TPtrC groupName; 
+	GetStringFromConfig(ConfigSection(), _L("GroupName"), groupName);
+	
+	GetIntFromConfig(ConfigSection(), _L("DefaultScreenNumber"), defScreenNo);
+	
+	RPointerArray<HBufC> ownedFileArray;
+	GetAppOwnedFilesL(ownedFileArray);
+	CleanupStack::PushL(&ownedFileArray);
+	RPointerArray<CServiceInfo> serviceInfoArray;
+	GetAppServiceInfoL(serviceInfoArray);
+	CleanupStack::PushL(&serviceInfoArray);
+	RPointerArray<CLocalizableAppInfo> localizableAppInfoArray;
+	GetAppLocalizableInfoL(localizableAppInfoArray);
+	CleanupStack::PushL(&localizableAppInfoArray);
+
+	RPointerArray<COpaqueData> appOpaqueDataInfoArray;
+	GetAppOpaqueDataInfoL(appOpaqueDataInfoArray);
+	CleanupStack::PushL(&appOpaqueDataInfoArray);
+
+	RPointerArray<CPropertyEntry> appPropertyArray;
+	GetPropertiesFromConfigL(appPropertyArray, ETrue);
+	CleanupStack::PushL(&appPropertyArray);
+	INFO_PRINTF1(_L("Going to create CApplicationRegistrationData obj."));
+	
+	TBool ObjectWithoutOptionalFields = EFalse;
+	GetBoolFromConfig(ConfigSection(), _L("ObjectWithoutOptionalFields"), ObjectWithoutOptionalFields);
+	CApplicationRegistrationData* appRegData = NULL;
+	if(ObjectWithoutOptionalFields)
+	    {
+	    appRegData = CApplicationRegistrationData::NewLC(ownedFileArray, serviceInfoArray, localizableAppInfoArray, appPropertyArray, appUid, appFile);
+	    }
+	else
+	    {
+	    TApplicationCharacteristics appCharacteristics;
+	    appCharacteristics.iAttributes = attributes;
+	    appCharacteristics.iAppIsHidden = hidden;
+	    appCharacteristics.iEmbeddability = TApplicationCharacteristics::TAppEmbeddability(embeddability);
+	    appCharacteristics.iGroupName = groupName;
+	    appCharacteristics.iLaunchInBackground = launch;
+	    
+        appRegData = CApplicationRegistrationData::NewLC(ownedFileArray, serviceInfoArray, localizableAppInfoArray, appPropertyArray, appOpaqueDataInfoArray, appUid, appFile, appCharacteristics, defScreenNo);	    
+	    }
+	
+	INFO_PRINTF1(_L("Created CApplicationRegistrationData obj."));
+	CleanupStack::Pop(6);
+	CleanupStack::PushL(appRegData);
+	return appRegData;
+	}
+
+TComponentId CScrTestStep::GetCompIdFromConfigL()
+	{
+	TInt cId;
+	GetIntFromConfig(ConfigSection(), _L("ComponentId"), cId);
+	INFO_PRINTF1(_L("returning compid value from CScrTestStep::GetCompIdFromConfigL."));
+	return static_cast<TComponentId>(cId);
+	}
+
+void CScrTestStep::GetAppUidL(TUid& aAppUid)
+    {
+    TBool generateNewUid(EFalse);
+    if (!GetUidFromConfig(ConfigSection(), _L("AppUid"), aAppUid))
+        {
+        if (GetBoolFromConfig(ConfigSection(), _L("GenerateNewUid"), generateNewUid))
+            {
+            INFO_PRINTF1(_L("Generating new UID"));
+			//Find an unused UID and return it.
+            aAppUid = GenerateNewAppUidL();
+            }
+        else
+            {
+            PrintErrorL(_L("AppUid was not found!"), KErrNotFound);
+            }
+        }  
+    INFO_PRINTF2(_L("AppUid is 0x%x"), aAppUid.iUid);
+    }
+	
+TUid CScrTestStep::GetServiceUidL()
+    {
+    TUid serviceUid;
+    TInt tmpuid=0, i=0;
+    TBuf<25> uid;
+    
+    uid = KServiceUid;
+    GenerateIndexedAttributeNameL(uid, i);
+    if(!GetIntFromConfig(ConfigSection(), uid, tmpuid))
+         PrintErrorL(_L("Service Uid was not found!"), KErrNotFound);
+    serviceUid.iUid=tmpuid;
+    INFO_PRINTF2(_L("Service Uid %d"), serviceUid.iUid);
+    return serviceUid;
+    }
+
+TBool CScrTestStep::GetUidFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TUid& aUid)
+    {
+    TInt val;
+    if(GetHexFromConfig(aSectName, aKeyName, val))
+        {
+        aUid = TUid::Uid(val);
+        return ETrue;
+        }
+    else
+        {
+        return EFalse;
+        }
+    }
+
+Usif::TAppRegInfo* CScrTestStep::GetAppInfoFromConfigL(TBool aIsSingle , TInt aIndex )
+	{
+    Usif::TAppRegInfo *appinfo=NULL;
+    
+    TBuf<MAX_SCR_PARAM_LENGTH> applicationUidParam, applicationFileNameParam, applicationCaptionParam, applicationShortCaptionParam;
+    applicationUidParam = KIntTAppInfoUID;
+    applicationFileNameParam = KStringTAppInfoFileName;
+    applicationCaptionParam = KStringTAppInfoCaption;
+    applicationShortCaptionParam = KStringTAppInfoShortCaption;
+            
+    if (!aIsSingle)
+        {
+        INFO_PRINTF1(_L("Preparing Index "));
+        GenerateIndexedAttributeNameL(applicationUidParam, aIndex);
+        GenerateIndexedAttributeNameL(applicationFileNameParam, aIndex);
+        GenerateIndexedAttributeNameL(applicationCaptionParam, aIndex);
+        GenerateIndexedAttributeNameL(applicationShortCaptionParam, aIndex);
+        }
+
+    TUid applicationUid;
+    if (!GetUidFromConfig(ConfigSection(), applicationUidParam, applicationUid))
+        {
+         ERR_PRINTF2(_L("The application Uid type param %S could not be found in configuration."), &applicationUidParam);
+         User::Leave(KErrNotFound);
+        }
+        
+    TPtrC applicationFileName;
+    if (!GetStringFromConfig(ConfigSection(), applicationFileNameParam, applicationFileName))
+        {
+        ERR_PRINTF2(_L("The application file name param %S could not be found in configuration."), &applicationFileNameParam);
+        User::Leave(KErrNotFound);
+        }
+    TPtrC applicationCaption;
+    if (!GetStringFromConfig(ConfigSection(), applicationCaptionParam, applicationCaption))
+        {
+        INFO_PRINTF2(_L("The application caption param %S could not be found in configuration."), &applicationCaptionParam);
+       
+        }
+    TPtrC applicationShortCaption;
+    if (!GetStringFromConfig(ConfigSection(), applicationShortCaptionParam, applicationShortCaption))
+        {
+        appinfo = new TAppRegInfo(applicationUid , applicationFileName, applicationCaption);
+        INFO_PRINTF2(_L("The application short caption param %S could not be found in configuration."), &applicationShortCaptionParam);
+        }
+    else
+        appinfo = new TAppRegInfo(applicationUid , applicationFileName, applicationCaption,applicationShortCaption);
+
+    return appinfo;
+    }
+
+void CScrTestStep::ReadAppInfoFilterFromConfigL(Usif::CAppInfoFilter** aFilter)
+    {
+    *aFilter=CAppInfoFilter::NewL();
+    Usif::CAppInfoFilter *aAppInfoFilter=*aFilter;
+      
+    TBool filterToSet(EFalse);
+    TInt screenMode(0);
+    if (GetBoolFromConfig(ConfigSection(), _L("AIFAllApps"), filterToSet))
+        {
+        if (filterToSet)
+            aAppInfoFilter->SetAllApps();
+        if (GetIntFromConfig(ConfigSection(), _L("AIFAllAppsScreenMode"), screenMode ))
+            aAppInfoFilter->SetAllApps(screenMode);
+        return ;
+        }
+    if (GetBoolFromConfig(ConfigSection(), _L("AIFEmbApps"), filterToSet))
+        {
+        if (filterToSet)
+            aAppInfoFilter->SetEmbeddableApps();
+        if (GetIntFromConfig(ConfigSection(), _L("AIFEmbAppScreanMode"), screenMode ))
+            aAppInfoFilter->SetEmbeddableApps(screenMode);
+        return ;
+        }
+    TInt filterValue(0);
+    if (GetIntFromConfig(ConfigSection(), _L("AIFFilEmbAppsEmbedabilityFilter"), filterValue))
+        {
+		TInt readFilterVal(0);
+        Usif::TEmbeddableFilter embadibilityFilter ;
+        for (TInt i=0 ; i <filterValue;i++)
+            {
+            TBuf<20>  filterName=_L("EFilterVal");
+            GenerateIndexedAttributeNameL(filterName, i);
+            if(GetIntFromConfig(ConfigSection(), filterName, readFilterVal))
+			embadibilityFilter.AddEmbeddability(TApplicationCharacteristics::TAppEmbeddability(readFilterVal));
+            }
+        if (GetIntFromConfig(ConfigSection(), _L("AIFFilEmbAppsEmbedableScreenMode"), screenMode ))
+            aAppInfoFilter->SetEmbeddabilityFilterWithScreenMode(embadibilityFilter,screenMode);
+        else
+            aAppInfoFilter->SetEmbeddabilityFilter(embadibilityFilter);
+        return ;
+        }
+    if (GetIntFromConfig(ConfigSection(), _L("AIFFilAppsWithCapMask"), filterValue))
+        {
+        TInt capValue(0);
+        if (GetIntFromConfig(ConfigSection(), _L("AIFFilAppsWithCapValue"), capValue))
+           {
+           if (GetIntFromConfig(ConfigSection(), _L("AIFFilAppsWithCapScreenMode"), screenMode ))
+               aAppInfoFilter->SetCapabilityAttributeMaskAndValue(filterValue,capValue,screenMode);
+           else
+               aAppInfoFilter->SetCapabilityAttributeMaskAndValue(filterValue,capValue);
+           }
+        return ;
+        }
+    TUid filterUId;
+    if (GetUidFromConfig(ConfigSection(), _L("AIFServerApps"), filterUId))
+        {
+        if (GetIntFromConfig(ConfigSection(), _L("AIFServerAppsScreenMode"), screenMode ))
+            aAppInfoFilter->SetServerApps(filterUId,screenMode);
+        else
+            aAppInfoFilter->SetServerApps(filterUId);
+        return ;
+        }
+    User::Leave(KErrNotFound);
+    }
+
+void CScrTestStep::GetViewDataInfoFromConfigL(RPointerArray<CAppViewData>& aAppViewInfoArray)
+    {
+    TInt viewDataCount=0;
+    GetIntFromConfig(ConfigSection(), _L("ViewDataCount"), viewDataCount);
+    for (TUint i = 0; i < viewDataCount; ++i)
+        {
+        TInt viewScreenMode,vUid;
+        TBuf<20> uid, screenMode;
+        uid = KVwUid;
+        GenerateIndexedAttributeNameL(uid, i);
+        GetIntFromConfig(ConfigSection(), uid, vUid);
+        TUid viewUid = TUid::Uid(vUid);
+        screenMode = KVwScreenMode;
+        GenerateIndexedAttributeNameL(screenMode, i);
+        GetIntFromConfig(ConfigSection(), screenMode, viewScreenMode);
+           
+        TPtrC viewCaption;
+        TPtrC viewIconFileName;
+        TInt viewNoOfAppIcons = 0;
+        TBuf<20> caption, iconFileName, noOfAppIcons;
+        caption = KVwCaption;
+        GenerateIndexedAttributeNameL(caption, i);
+        GetStringFromConfig(ConfigSection(), caption, viewCaption);
+        iconFileName = KVwIconFileName;
+        GenerateIndexedAttributeNameL(iconFileName, i);
+        GetStringFromConfig(ConfigSection(), iconFileName, viewIconFileName);
+        noOfAppIcons = KVwNumberOfAppIcons;
+        GenerateIndexedAttributeNameL(noOfAppIcons, i);
+        GetIntFromConfig(ConfigSection(), noOfAppIcons, viewNoOfAppIcons);
+        CCaptionAndIconInfo* viewCaptionAndIconInfo = NULL;
+        if(viewCaption.Length() != 0 || viewIconFileName.Length() !=0 || viewNoOfAppIcons != 0)
+            {
+            viewCaptionAndIconInfo = CCaptionAndIconInfo::NewLC(viewCaption,viewIconFileName,viewNoOfAppIcons);
+            }
+        else
+            {
+            CleanupStack::PushL(viewCaptionAndIconInfo);          
+            }
+        CAppViewData* viewData = CAppViewData::NewLC(viewUid,viewScreenMode,viewCaptionAndIconInfo);
+        aAppViewInfoArray.AppendL(viewData);
+        CleanupStack::Pop(2, viewCaptionAndIconInfo);
+        }
+    }
+
+TBool CScrTestStep::NotEqual(const Usif::CCaptionAndIconInfo *aLhsEntry, const Usif::CCaptionAndIconInfo *aRhsEntry) const
+    {
+    if(aLhsEntry != NULL  && aRhsEntry != NULL )
+        {
+        if ((aLhsEntry->Caption() != aRhsEntry->Caption())||(aLhsEntry->IconFileName() != aRhsEntry->IconFileName() )||(aLhsEntry->NumOfAppIcons() != aRhsEntry->NumOfAppIcons()))
+        return ETrue;
+        else 
+        return EFalse;
+        }
+    else
+        {
+        if(aLhsEntry == NULL && aRhsEntry == NULL)
+            return EFalse;
+        else return ETrue;
+        }
+    }
+
+TBool CScrTestStep::NotEqualL(
+        const RPointerArray<Usif::CServiceInfo>& aLhsEntry,
+        const RPointerArray<Usif::CServiceInfo>& aRhsEntry) const
+    {
+    TInt result(EFalse);
+    if (aLhsEntry.Count() != aRhsEntry.Count())
+        result = ETrue;
+
+    else
+        {
+        for (TInt i = 0; i < aLhsEntry.Count(); i++)
+            {
+            // Compare Uids
+            if (aLhsEntry[i]->Uid() != aRhsEntry[i]->Uid())
+                {
+                result = ETrue;
+                break;
+                }
+
+            // Compare Opaque Data Array
+            RPointerArray<Usif::COpaqueData> lhsOpaqueData =
+                    aLhsEntry[i]->OpaqueData();
+            CleanupResetAndDestroyPushL(lhsOpaqueData);
+            RPointerArray<Usif::COpaqueData> rhsOpaqueData =
+                    aRhsEntry[i]->OpaqueData();
+            CleanupResetAndDestroyPushL(rhsOpaqueData);
+            if (lhsOpaqueData.Count() != rhsOpaqueData.Count())
+                {
+                CleanupStack::Pop(2, &lhsOpaqueData);
+                result = ETrue;
+                break;
+                }
+            else
+                {
+                for (TInt j = 0; j < rhsOpaqueData.Count(); j++)
+                    {
+                    if (lhsOpaqueData[j]->Language()
+                            != rhsOpaqueData[j]->Language()
+                            || lhsOpaqueData[j]->OpaqueData()
+                                    != rhsOpaqueData[j]->OpaqueData())
+                        {
+                        CleanupStack::Pop(2, &lhsOpaqueData);
+                        result = ETrue;
+                        break;
+                        }
+                    }
+                }
+            CleanupStack::Pop(2, &lhsOpaqueData);
+
+            // Data Entry
+            RPointerArray<Usif::CDataType> aLhsDataEntry =
+                    aLhsEntry[i]->DataTypes();
+            CleanupResetAndDestroyPushL(aLhsDataEntry);
+            RPointerArray<Usif::CDataType> aRhsDataEntry =
+                    aRhsEntry[i]->DataTypes();
+            CleanupResetAndDestroyPushL(aRhsDataEntry);
+            if (aLhsDataEntry.Count() != aRhsDataEntry.Count())
+                {
+                CleanupStack::Pop(2, &aLhsDataEntry);
+                result = ETrue;
+                break;
+                }
+            else
+                {
+                for (TInt j = 0; j < aLhsDataEntry.Count(); j++)
+                    {
+                    if (aLhsDataEntry[j]->Priority()
+                            != aRhsDataEntry[j]->Priority()
+                            || aLhsDataEntry[j]->Type()
+                                    != aRhsDataEntry[j]->Type())
+                        {
+                        CleanupStack::Pop(2, &aLhsDataEntry);
+                        result = ETrue;
+                        break;
+                        }
+                    }
+                }
+            CleanupStack::Pop(2, &aLhsDataEntry);
+            }
+        }
+    return result;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscrapparc/inc/appreginfoapparcsteps.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Defines the basic test step for the Software Component Registry test harness
+*
+*/
+
+/**
+ @file 
+ @internalComponent
+ @test
+*/
+#ifndef APPREGINFOAPPARCSTEPS_H_
+#define APPREGINFOAPPARCSTEPS_H_
+
+#include <scs/oomteststep.h>
+#include <usif/scr/scr.h>
+
+using namespace Usif;
+
+class CScrApparcTestServer;
+
+_LIT(KScrApplicationRegistrationViewSubsessionStep,"ScrGetApplicationRegistrationView");
+_LIT(KScrMultipleSubsessionsForAppRegistryViewStep,"ScrMultipleSubsessionsForAppRegistryView");
+
+class CScrGetApplicationRegistrationViewSubsessionStep : public COomTestStep
+/**
+    TEF test step which exercises the SCR GetApplicationRegistrationView interface
+ */
+    {
+public:
+    CScrGetApplicationRegistrationViewSubsessionStep();
+    ~CScrGetApplicationRegistrationViewSubsessionStep();
+protected:
+    
+    Usif::RSoftwareComponentRegistry iScrSession;
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    
+    
+    // Utility Functions
+    void PrintErrorL(const TDesC& aMsg, TInt aErrNum,...);
+    
+    static void GenerateIndexedAttributeNameL(TDes& aInitialAttributeName, TInt aIndex);
+    TBool GetUidFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TUid& aUid);
+    //for reading data from ini file
+    Usif::CApplicationRegistrationData* GetAppRegInfoFromConfigLC(HBufC* aConfigSection = NULL);
+    void GetAppOwnedFilesL(RPointerArray<HBufC>& aOwnedFileArray, HBufC* aConfigSection = NULL);
+    void GetAppServiceInfoL(RPointerArray<Usif::CServiceInfo>& aServiceInfoArray, HBufC* aConfigSection = NULL);
+    void GetAppLocalizableInfoL(RPointerArray<Usif::CLocalizableAppInfo>& aLocalizableAppInfoArray, HBufC* aConfigSection = NULL);
+    void GetAppOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aAppOpaqueDataInfoArray, HBufC* aConfigSection = NULL);
+    void GetServiceOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aServiceOpaqueDataInfoArray, TInt aServiceOpaqueDataInfoCount, TInt aStartingIndex, HBufC* aConfigSection = NULL);
+    TBool Get64BitIntegerFromConfigL(const TDesC& aConfigKeyName, TInt64& aRetVal,HBufC* aConfigsection = NULL);
+    CPropertyEntry* GetPropertyFromConfigLC(TBool aIsSingle, TInt aIndex, TBool aSupportLocalized, HBufC* aConfigsection = NULL);
+    void GetAppPropertiesL(RPointerArray<Usif::CPropertyEntry>& aAppPropertyArray, TBool aSupportLocalized, HBufC* aConfigSection = NULL );
+    void GetAppUidL(TUid& aAppUid, HBufC* aConfigsection = NULL);
+    
+    
+    //for comparing data 
+    TBool CompareApplicationRegistrationDataL(Usif::CApplicationRegistrationData *aActualData, Usif::CApplicationRegistrationData *aExpectedData);
+    TBool CompareFileOwnershipInfo(RPointerArray<HBufC> aActualData, RPointerArray<HBufC> aExpectedData);
+    TBool CompareServiceInfoL(RPointerArray<Usif::CServiceInfo> aActualData,  RPointerArray<Usif::CServiceInfo> aExpectedData);
+    TBool CompareDataType(RPointerArray<Usif::CDataType> aActualData,  RPointerArray<Usif::CDataType> aExpectedData);
+    TBool CompareLocalizableAppInfo(RPointerArray<Usif::CLocalizableAppInfo> aActualData,  RPointerArray<Usif::CLocalizableAppInfo> aExpectedData);
+    TBool CompareCaptionandIconInfo(const CCaptionAndIconInfo* aActualData, const CCaptionAndIconInfo* aExpectedData);
+    TBool CompareViewData(RPointerArray<Usif::CAppViewData> aActualData,  RPointerArray<Usif::CAppViewData> aExpectedData);
+    TBool CompareOpaqueDataL(RPointerArray<Usif::COpaqueData> aActualData,  RPointerArray<Usif::COpaqueData> aExpectedData);
+//private:
+    
+    void GetApplicationRegistrationDataFromConfigL(RPointerArray<Usif::CApplicationRegistrationData>& aEntries);
+    };
+
+
+class CScrMultipleSubsessionsForAppRegistryViewStep : public CScrGetApplicationRegistrationViewSubsessionStep
+/**
+    TEF test step which exercises the SCR CScrAddConcurrentApplicationRegistrationViewEntryStep interface
+ */
+    {
+public:
+    CScrMultipleSubsessionsForAppRegistryViewStep();
+    ~CScrMultipleSubsessionsForAppRegistryViewStep();
+protected:
+      
+    void ImplTestStepPreambleL();
+    void ImplTestStepL();
+    void ImplTestStepPostambleL();
+    };
+
+
+#endif /* APPREGINFOAPPARCSTEPS_H_ */
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscrapparc/inc/tscrapparcserver.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Defines the test server of the Software Component Registry test harness
+*
+*/
+
+/**
+ @file 
+ @internalComponent
+ @test
+*/
+#ifndef TSCRAPPARCSERVER_H_
+#define TSCRAPPARCSERVER_H_
+
+#include <test/testexecuteserverbase.h>
+
+_LIT(KScrApparcTestServerName, "tscrapparc");
+
+class CScrApparcTestServer : public CTestServer
+/**
+    Describes the test server for the SCR-Apparc test harness.
+ */
+    {
+public:
+    static CScrApparcTestServer* NewL();
+    virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+    ~CScrApparcTestServer();
+    };
+    
+#endif /* TSCRAPPARCSERVER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscrapparc/source/appreginfoapparcsteps.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,1254 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Implements the test steps for component management APIs in the SCR
+*
+*/
+
+#include "appreginfoapparcsteps.h"
+#include "tscrdefs.h"
+#include <scs/cleanuputils.h>
+#include <barsread.h> 
+using namespace Usif;
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GenerateIndexedAttributeNameL(TDes& aInitialAttributeName, TInt aIndex)
+    {
+    const TInt MAX_INT_STR_LEN = 8;
+    TBuf<MAX_INT_STR_LEN> integerAppendStr;
+    integerAppendStr.Format(_L("%d"), aIndex);
+    aInitialAttributeName.Append(integerAppendStr);
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetAppOwnedFilesL(RPointerArray<HBufC>& aOwnedFileArray,HBufC* aConfigSection)
+    {
+    TInt ownedFileCount = 0;
+    HBufC* configsection;
+    if(aConfigSection == NULL)
+       configsection = ConfigSection().AllocL();
+    else
+       configsection = aConfigSection->AllocL();
+    
+    GetIntFromConfig(*configsection, _L("OwnedFileCount"), ownedFileCount);
+    for (TUint i = 0; i < ownedFileCount; ++i)
+        {
+        TPtrC tOwnedFileName;
+        TBuf<20> fileName;
+        fileName = KOwnedFileName;
+        GenerateIndexedAttributeNameL(fileName, i);
+        GetStringFromConfig(*configsection, fileName, tOwnedFileName);
+        HBufC* ownedFileName = tOwnedFileName.AllocLC();
+        aOwnedFileArray.AppendL(ownedFileName);
+        CleanupStack::Pop(ownedFileName);
+        }
+    delete configsection;
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::GetUidFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TUid& aUid)
+    {
+    TInt val;
+    if(GetHexFromConfig(aSectName, aKeyName, val))
+        {
+        aUid = TUid::Uid(val);
+        return ETrue;
+        }
+    else
+        {
+        return EFalse;
+        }
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::PrintErrorL(const TDesC& aMsg, TInt aErrNum,...)
+    {
+    VA_LIST list;
+    VA_START(list, aErrNum);
+    
+    RBuf msgBuf;
+    msgBuf.CreateL(MAX_SCR_ERROR_MESSAGE_LENGTH);
+    msgBuf.CleanupClosePushL();
+    msgBuf.AppendFormatList(aMsg, list);
+    
+    ERR_PRINTF1(msgBuf);
+    SetTestStepResult(EFail);
+
+    CleanupStack::PopAndDestroy(&msgBuf);
+    User::Leave(aErrNum);
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetAppUidL(TUid& aAppUid, HBufC* aConfigSection)
+    {    
+    HBufC* configsection;
+    if(aConfigSection == NULL)
+       configsection = ConfigSection().AllocL();
+    else
+       configsection = aConfigSection->AllocL();
+    
+    if (!GetUidFromConfig(*configsection, _L("AppUid"), aAppUid))
+        {
+        delete configsection;
+        PrintErrorL(_L("AppUid was not found!"), KErrNotFound);        
+        }    
+    INFO_PRINTF2(_L("AppUid is 0x%x"), aAppUid.iUid);
+    delete configsection;
+    }
+    
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetAppServiceInfoL(
+        RPointerArray<CServiceInfo>& aServiceInfoArray, HBufC* aConfigSection)
+    {
+    TInt serviceInfoCount = 0;
+    TInt totalOpaqueDataCount = 0;
+    TInt totalServiceDataTypeCount = 0;
+    HBufC* configsection;
+    if (aConfigSection == NULL)
+        configsection = ConfigSection().AllocL();
+    else
+        configsection = aConfigSection->AllocL();
+
+    GetIntFromConfig(*configsection, _L("ServiceInfoCount"),
+            serviceInfoCount);
+    for (TUint i = 0; i < serviceInfoCount; ++i)
+        {
+        // service Uid
+        TBuf<20> uid;
+        TUid serviceUid;
+        uid = KServiceUid;
+        GenerateIndexedAttributeNameL(uid, i);
+        GetUidFromConfig(*configsection, uid, serviceUid);
+
+        // service opaque data
+        RPointerArray<COpaqueData> serviceOpaqueDataInfoArray;
+        TBuf<27> servOpaqueDataCountStr;
+        servOpaqueDataCountStr = KServiceOpaqueDataInfoCount;
+        GenerateIndexedAttributeNameL(servOpaqueDataCountStr, i);
+        TInt serviceOpaqueDataInfoCount = 0;
+        GetIntFromConfig(*configsection, servOpaqueDataCountStr, serviceOpaqueDataInfoCount);
+        GetServiceOpaqueDataInfoL(serviceOpaqueDataInfoArray, serviceOpaqueDataInfoCount, totalOpaqueDataCount, configsection);
+        totalOpaqueDataCount += serviceOpaqueDataInfoCount;
+                
+        //GetServiceOpaqueDataInfoL(serviceOpaqueDataInfoArray);
+        //CleanupStack::PushL(&serviceOpaqueDataInfoArray);
+
+        // service data type
+        TBuf<21> serviceDataTypeCountString;
+        serviceDataTypeCountString = KServiceDataTypeCount;
+        GenerateIndexedAttributeNameL(serviceDataTypeCountString, i);
+        TInt serviceDataTypeCount = 0;
+        GetIntFromConfig(*configsection, serviceDataTypeCountString,
+                serviceDataTypeCount);
+        totalServiceDataTypeCount += serviceDataTypeCount;
+        RPointerArray<CDataType> serviceDataTypeArray;
+        for (TUint j = 0; j < serviceDataTypeCount; ++j)
+            {
+            TInt indexToRead = totalServiceDataTypeCount
+                    - serviceDataTypeCount + j;
+            TInt serviceDataTypePriority;
+            TPtrC serviceType;
+            TBuf<25> priority, type;
+            priority = KServiceDataTypePriority;
+            GenerateIndexedAttributeNameL(priority, indexToRead);
+            GetIntFromConfig(*configsection, priority,
+                    serviceDataTypePriority);
+            type = KServiceDataType;
+            GenerateIndexedAttributeNameL(type, indexToRead);
+            GetStringFromConfig(*configsection, type, serviceType);
+            CDataType* serviceDataType = CDataType::NewLC(
+                    serviceDataTypePriority, serviceType);
+            serviceDataTypeArray.AppendL(serviceDataType);
+            CleanupStack::Pop(serviceDataType);
+            }
+
+        CServiceInfo* serviceInfo = CServiceInfo::NewLC(serviceUid,
+                serviceOpaqueDataInfoArray, serviceDataTypeArray);
+        aServiceInfoArray.AppendL(serviceInfo);
+        CleanupStack::Pop(serviceInfo);
+        }
+    delete configsection;
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetAppLocalizableInfoL(RPointerArray<CLocalizableAppInfo>& aLocalizableAppInfoArray, HBufC* aConfigSection)
+    {
+    TInt localizableAppInfoCount = 0;
+    TInt totalViewDataCount=0;
+    HBufC* configsection;
+    if(aConfigSection == NULL)
+      configsection = ConfigSection().AllocL();
+    else
+      configsection = aConfigSection->AllocL();
+    
+    GetIntFromConfig(*configsection, _L("LocalizableAppInfoCount"), localizableAppInfoCount);
+    for (TUint i = 0; i < localizableAppInfoCount; ++i)
+        {
+        TPtrC locShortCaption;
+        TLanguage locLanguage = (TLanguage)0;
+        TInt lang;
+        TPtrC locGroupName;
+        TBuf<20> shortCaption, language, groupName, viewDataCount;
+        shortCaption = KLocShortCaption;
+        GenerateIndexedAttributeNameL(shortCaption, i);
+        GetStringFromConfig(*configsection, shortCaption, locShortCaption);
+        language = KLocAppLanguage;
+        GenerateIndexedAttributeNameL(language, i);
+        GetIntFromConfig(*configsection, language, lang);
+        locLanguage = static_cast<TLanguage>(lang);
+        groupName = KLocGroupName;
+        GenerateIndexedAttributeNameL(groupName, i);
+        GetStringFromConfig(*configsection, groupName, locGroupName);
+        
+        TPtrC locCaption;
+        TPtrC locIconFileName;
+        TInt locNoOfAppIcons = 0;
+        TBuf<20> caption, iconFileName, noOfAppIcons;
+        caption = KLocCaption;
+        GenerateIndexedAttributeNameL(caption, i);
+        GetStringFromConfig(*configsection, caption, locCaption);
+        iconFileName = KLocIconFileName;
+        GenerateIndexedAttributeNameL(iconFileName, i);
+        GetStringFromConfig(*configsection, iconFileName, locIconFileName);
+        noOfAppIcons = KLocNumberOfAppIcons;
+        GenerateIndexedAttributeNameL(noOfAppIcons, i);
+        GetIntFromConfig(*configsection, noOfAppIcons, locNoOfAppIcons);
+        CCaptionAndIconInfo* captionAndIconInfo = NULL;
+        if(locCaption.Length() != 0 || locIconFileName.Length() !=0 || locNoOfAppIcons != 0)
+          {
+           captionAndIconInfo = CCaptionAndIconInfo::NewLC(locCaption,locIconFileName,locNoOfAppIcons);
+          }
+        else
+          CleanupStack::PushL(captionAndIconInfo);
+        
+        TInt viewDataCountForLocale = 0;
+        viewDataCount=KViewDataCount;
+        GenerateIndexedAttributeNameL(viewDataCount, i);
+        GetIntFromConfig(*configsection, viewDataCount , viewDataCountForLocale);
+        totalViewDataCount+=viewDataCountForLocale;
+        RPointerArray<CAppViewData> viewDataArray;
+        for (TUint i = 0; i < viewDataCountForLocale; ++i)
+            {
+            TInt viewScreenMode = 0 ,vUid,indexToRead;
+            TBuf<20> uid, screenMode;
+            uid = KVwUid;
+            indexToRead=totalViewDataCount-viewDataCountForLocale+i;
+            GenerateIndexedAttributeNameL(uid, indexToRead);
+            GetIntFromConfig(*configsection, uid, vUid);
+            TUid viewUid = TUid::Uid(vUid);
+            screenMode = KVwScreenMode;
+            GenerateIndexedAttributeNameL(screenMode, indexToRead);
+            GetIntFromConfig(*configsection, screenMode, viewScreenMode);
+            
+            TPtrC viewCaption;
+            TPtrC viewIconFileName;
+            TInt viewNoOfAppIcons = 0;
+            TBuf<20> caption, iconFileName, noOfAppIcons;
+            caption = KVwCaption;
+            GenerateIndexedAttributeNameL(caption, indexToRead);
+            GetStringFromConfig(*configsection, caption, viewCaption);
+            iconFileName = KVwIconFileName;
+            GenerateIndexedAttributeNameL(iconFileName, indexToRead);
+            GetStringFromConfig(*configsection, iconFileName, viewIconFileName);
+            noOfAppIcons = KVwNumberOfAppIcons;
+            GenerateIndexedAttributeNameL(noOfAppIcons, indexToRead);
+            GetIntFromConfig(*configsection, noOfAppIcons, viewNoOfAppIcons);
+            CCaptionAndIconInfo* viewCaptionAndIconInfo = NULL;
+            if(viewCaption.Length() != 0 || viewIconFileName.Length() !=0 || viewNoOfAppIcons != 0)
+              {
+               viewCaptionAndIconInfo = CCaptionAndIconInfo::NewLC(viewCaption,viewIconFileName,viewNoOfAppIcons);
+              }
+            else
+              CleanupStack::PushL(viewCaptionAndIconInfo);          
+            
+            CAppViewData* viewData = CAppViewData::NewLC(viewUid,viewScreenMode,viewCaptionAndIconInfo);
+            viewDataArray.AppendL(viewData);
+            CleanupStack::Pop(2, viewCaptionAndIconInfo);
+            }
+
+        CLocalizableAppInfo* localizableAppInfo = CLocalizableAppInfo::NewLC(locShortCaption,locLanguage,locGroupName,captionAndIconInfo,viewDataArray);
+        aLocalizableAppInfoArray.AppendL(localizableAppInfo);
+        CleanupStack::Pop(localizableAppInfo);
+        CleanupStack::Pop(captionAndIconInfo);
+        }
+    delete configsection;
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetAppOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aAppOpaqueDataInfoArray, HBufC* aConfigSection)
+    {
+    TInt appOpaqueDataInfoCount = 0;
+    HBufC* configsection;
+    if(aConfigSection == NULL)
+      configsection = ConfigSection().AllocL();
+    else
+      configsection = aConfigSection->AllocL();
+
+    GetIntFromConfig(*configsection, _L("AppOpaqueDataInfoCount"), appOpaqueDataInfoCount);
+    for (TUint i = 0; i < appOpaqueDataInfoCount; ++i)
+        {
+        TBuf<16> localeAttr;
+        localeAttr = KAppOpaqueDataLocale;
+        TInt locale = 0;
+        GenerateIndexedAttributeNameL(localeAttr, i);
+        GetIntFromConfig(*configsection, localeAttr, locale);
+                    
+        TBuf<14> opaqueDataAttr;
+        opaqueDataAttr = KAppOpaqueData;
+        TPtrC opaqueData;
+        GenerateIndexedAttributeNameL(opaqueDataAttr, i);
+        GetStringFromConfig(*configsection, opaqueDataAttr, opaqueData);
+
+        TPtrC8 blobOpaqueData((TUint8*)opaqueData.Ptr(), opaqueData.Length()*2);
+
+        COpaqueData* appOpaqueData = COpaqueData::NewLC(blobOpaqueData, (TLanguage) locale);
+        aAppOpaqueDataInfoArray.AppendL(appOpaqueData);
+        CleanupStack::Pop(1, appOpaqueData);
+        }
+    delete configsection;
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetServiceOpaqueDataInfoL(RPointerArray<Usif::COpaqueData>& aServiceOpaqueDataInfoArray, TInt aServiceOpaqueDataInfoCount, TInt aStartingIndex, HBufC* aConfigSection)
+    {
+    for (TUint i = 0; i < aServiceOpaqueDataInfoCount; ++i)
+        {
+        TBuf<20> localeAttr;
+        localeAttr = KServiceOpaqueLocale;
+        TInt locale = 0;
+        TInt indexToRead = i + aStartingIndex;
+        GenerateIndexedAttributeNameL(localeAttr, indexToRead);
+        GetIntFromConfig(*aConfigSection, localeAttr, locale);
+                    
+        TBuf<18> opaqueDataAttr;
+        opaqueDataAttr = KServiceOpaqueData;
+        TPtrC opaqueData;
+        GenerateIndexedAttributeNameL(opaqueDataAttr, indexToRead);
+        GetStringFromConfig(*aConfigSection, opaqueDataAttr, opaqueData);
+                
+        TPtrC8 blobOpaqueData((TUint8*)opaqueData.Ptr(), opaqueData.Length()*2);
+        COpaqueData* serviceOpaqueData = COpaqueData::NewLC(blobOpaqueData, (TLanguage) locale);
+        aServiceOpaqueDataInfoArray.AppendL(serviceOpaqueData);
+        CleanupStack::Pop(1, serviceOpaqueData);
+        }    
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::Get64BitIntegerFromConfigL(const TDesC& aConfigKeyName, TInt64& aRetVal,HBufC* aConfigSection)
+    {
+    TPtrC int64Str;
+    HBufC* configsection;
+        if(aConfigSection == NULL)
+            configsection = ConfigSection().AllocLC();
+        else
+            configsection = aConfigSection->AllocLC();
+    
+    if (!GetStringFromConfig(*configsection, aConfigKeyName, int64Str))
+        return EFalse;
+
+    TLex lex(int64Str);
+    User::LeaveIfError(lex.Val(aRetVal));
+    CleanupStack::PopAndDestroy(configsection);
+    return ETrue;
+    }
+
+CPropertyEntry* CScrGetApplicationRegistrationViewSubsessionStep::GetPropertyFromConfigLC(TBool aIsSingle, TInt aIndex, TBool aSupportLocalized,HBufC* aConfigSection)
+    {
+    // This function can be used for getting a single property, which is defined by attributes such as PropertyName etc.
+    // or a property in a set - in this case the properties would be PropertyType0, PropertyName0 etc.
+    // aIsSingle defines the working mode. aIndex applies only if aIsSingle is false
+    
+    // First, we need to generate the property name
+    TBuf<MAX_SCR_PARAM_LENGTH> propertyTypeParam, propertyNameParam, propertyValueParam, propertyLocaleParam;
+    propertyTypeParam = KPropertyTypeParam;
+    propertyNameParam = KPropertyNameParam;
+    propertyValueParam = KPropertyValueParam;
+    propertyLocaleParam = KPropertyLocaleParam;
+    if (!aIsSingle)
+        {
+        GenerateIndexedAttributeNameL(propertyTypeParam, aIndex);
+        GenerateIndexedAttributeNameL(propertyNameParam, aIndex);
+        GenerateIndexedAttributeNameL(propertyValueParam, aIndex);
+        GenerateIndexedAttributeNameL(propertyLocaleParam, aIndex);
+        }
+    HBufC* configsection;
+    if(aConfigSection == NULL)
+        configsection = ConfigSection().AllocLC();
+    else
+        configsection = aConfigSection->AllocLC();
+    
+    TPtrC propertyName;
+    if (!GetStringFromConfig(*configsection, propertyNameParam, propertyName))
+        {
+        ERR_PRINTF2(_L("The property name param %S could not be found in configuration."), &propertyNameParam);
+        User::Leave(KErrNotFound);
+        }
+    
+    TInt propertyTypeInt;
+    if (!GetIntFromConfig(*configsection, propertyTypeParam, propertyTypeInt))
+        {
+        ERR_PRINTF2(_L("The property type param %S could not be found in configuration."), &propertyTypeParam);
+        User::Leave(KErrNotFound);
+        }
+    
+    CPropertyEntry::TPropertyType propertyType = static_cast<CPropertyEntry::TPropertyType>(propertyTypeInt);
+    
+    CPropertyEntry* propertyEntry(NULL);
+    switch (propertyType)
+        {
+        case CPropertyEntry::EBinaryProperty:
+        case CPropertyEntry::ELocalizedProperty:
+            {
+            TPtrC propertyStrValue;
+            if (!GetStringFromConfig(*configsection, propertyValueParam, propertyStrValue))
+                {
+                ERR_PRINTF2(_L("The property value param %S could not be found in configuration."), &propertyValueParam);
+                User::Leave(KErrNotFound);
+                }
+            if(!aSupportLocalized || propertyType == CPropertyEntry::EBinaryProperty)
+                {
+                HBufC8* buffer8Bit = ConvertBufferTo8bitL(propertyStrValue);
+                CleanupStack::PushL(buffer8Bit);
+                propertyEntry = CBinaryPropertyEntry::NewL(propertyName, *buffer8Bit);
+                CleanupStack::PopAndDestroy(buffer8Bit);
+                break;
+                }
+            // Handle ELocalProperty case
+            TLanguage locale;
+            TInt localeParam;
+            if (!GetIntFromConfig(*configsection, propertyLocaleParam, localeParam))
+                {
+                ERR_PRINTF2(_L("The property locale param %S could not be found in configuration."), &propertyLocaleParam);
+                User::Leave(KErrNotFound);  
+                }
+            locale = static_cast<TLanguage>(localeParam);
+            propertyEntry = CLocalizablePropertyEntry::NewL(propertyName, propertyStrValue, locale);
+            break;                      
+            }
+        case CPropertyEntry::EIntProperty:
+            {
+            TInt64 int64Value;
+            if (!Get64BitIntegerFromConfigL(propertyValueParam, int64Value, configsection))
+                {
+                ERR_PRINTF2(_L("The integer param %S could not be found in configuration."), &propertyValueParam);
+                User::Leave(KErrNotFound);
+                }
+            propertyEntry = CIntPropertyEntry::NewL(propertyName, int64Value);
+            break;
+            }           
+        }
+    CleanupStack::PopAndDestroy(configsection);
+    CleanupStack::PushL(propertyEntry);
+    return propertyEntry;
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetAppPropertiesL(RPointerArray<CPropertyEntry>& aAppPropertyArray,TBool aSupportLocalized, HBufC* aConfigSection)
+    {
+    TInt propertiesCount = 0;  
+    HBufC* configsection;
+    if(aConfigSection == NULL)
+      configsection = ConfigSection().AllocLC();
+    else
+      configsection = aConfigSection->AllocLC();
+     
+    if (!GetIntFromConfig(*configsection, KPropertiesCountParamName, propertiesCount))
+       {
+        INFO_PRINTF1(_L("Properties count was not found!"));
+        CleanupStack::PopAndDestroy(configsection);
+        return;
+        }
+    
+    if (propertiesCount < 0)
+        {
+        INFO_PRINTF1(_L("Properties count was negative !"));
+        CleanupStack::PopAndDestroy(configsection);
+        return;
+        }
+    
+    for (TInt i = 0; i < propertiesCount; ++i)
+        {
+        CPropertyEntry *propertyEntry = GetPropertyFromConfigLC(EFalse, i, aSupportLocalized,configsection);
+        User::LeaveIfError(aAppPropertyArray.Append(propertyEntry));
+        CleanupStack::Pop(propertyEntry);
+        }
+    CleanupStack::PopAndDestroy(configsection);
+    }
+
+CApplicationRegistrationData* CScrGetApplicationRegistrationViewSubsessionStep::GetAppRegInfoFromConfigLC(HBufC* aConfigSection )
+    {
+    TUid appUid;
+    HBufC* configsection;
+    if(aConfigSection == NULL)
+       configsection = ConfigSection().AllocLC();
+    else
+       configsection = aConfigSection->AllocLC();
+    
+    GetAppUidL(appUid, configsection);
+
+    TPtrC appFile; 
+    
+    GetStringFromConfig(*configsection, _L("AppFile"), appFile);
+    
+    TInt attributes = 0, hidden = 0, embeddability = 0, newFile = 0, launch = 0, defScreenNo = 0;
+    GetIntFromConfig(*configsection, _L("Attributes"), attributes);
+    GetIntFromConfig(*configsection, _L("Hidden"), hidden);
+    GetIntFromConfig(*configsection, _L("Embeddability"), embeddability);
+    GetIntFromConfig(*configsection, _L("NewFile"), newFile);
+    GetIntFromConfig(*configsection, _L("Launch"), launch);
+
+    TPtrC groupName; 
+    GetStringFromConfig(*configsection, _L("GroupName"), groupName);
+    
+    GetIntFromConfig(*configsection, _L("DefaultScreenNumber"), defScreenNo);
+    
+    RPointerArray<HBufC> ownedFileArray;
+    GetAppOwnedFilesL(ownedFileArray, configsection);
+    CleanupStack::PushL(&ownedFileArray);
+    RPointerArray<CServiceInfo> serviceInfoArray;
+    GetAppServiceInfoL(serviceInfoArray, configsection);
+    CleanupStack::PushL(&serviceInfoArray);
+    RPointerArray<CLocalizableAppInfo> localizableAppInfoArray;
+    GetAppLocalizableInfoL(localizableAppInfoArray, configsection);
+    CleanupStack::PushL(&localizableAppInfoArray);
+    RPointerArray<COpaqueData> appOpaqueDataInfoArray;
+    GetAppOpaqueDataInfoL(appOpaqueDataInfoArray, configsection);
+    CleanupStack::PushL(&appOpaqueDataInfoArray);
+    RPointerArray<CPropertyEntry> appPropertyArray;
+    GetAppPropertiesL(appPropertyArray,ETrue, configsection);
+    CleanupStack::PushL(&appPropertyArray);
+    INFO_PRINTF1(_L("Going to create CApplicationRegistrationData obj."));
+    
+    TApplicationCharacteristics appCharacteristics;
+    appCharacteristics.iAttributes = attributes;
+    appCharacteristics.iAppIsHidden = hidden;
+    appCharacteristics.iEmbeddability = TApplicationCharacteristics::TAppEmbeddability(embeddability);
+    appCharacteristics.iGroupName = groupName;
+    appCharacteristics.iLaunchInBackground = launch;
+    CApplicationRegistrationData* appRegData = CApplicationRegistrationData::NewLC(ownedFileArray, serviceInfoArray, localizableAppInfoArray, appPropertyArray, appOpaqueDataInfoArray, appUid, appFile, appCharacteristics, defScreenNo);
+    INFO_PRINTF1(_L("Created CApplicationRegistrationData obj."));
+    CleanupStack::Pop(6);
+    CleanupStack::PopAndDestroy(configsection);
+    CleanupStack::PushL(appRegData);
+    return appRegData;
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareFileOwnershipInfo(RPointerArray<HBufC> aActualData, RPointerArray<HBufC> aExpectedData)
+    {
+    TInt expectedAppOwnedFilesCount = aExpectedData.Count();
+    TInt actualAppOwnedFilesCount = aActualData.Count();
+    
+    if(actualAppOwnedFilesCount != expectedAppOwnedFilesCount)
+        {        
+        INFO_PRINTF1(_L("The no of expected owned files by an app is not same as the no of actual owned files"));
+        return EFalse;
+        }
+    
+    for (TInt i=0 ; i < expectedAppOwnedFilesCount ; i++)
+        {
+       if(!aExpectedData.Find(aActualData[i]))
+          {
+          INFO_PRINTF1(_L("The expected owned file name is not same as the actual file  name"));
+          return EFalse;      
+          }
+        }    
+    return ETrue;    
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareDataType(RPointerArray<Usif::CDataType> aActualData,  RPointerArray<Usif::CDataType> aExpectedData)
+    {
+    TInt expectedDataTypeCount = aExpectedData.Count();
+    TInt actualDataTypeCount = aActualData.Count();
+           
+    if(actualDataTypeCount != expectedDataTypeCount)
+      {        
+      INFO_PRINTF1(_L("The no of expected data types for a service is not same as the no of actual recieved data types"));
+      return EFalse;
+      }
+    for(TInt i = 0 ; i < expectedDataTypeCount ; i++)
+        {
+        if(aExpectedData[i]->Priority()!= aActualData[i]->Priority())
+           {
+           INFO_PRINTF1(_L("The expected priority for a service data type is not same as the actual recieved"));
+           return EFalse;      
+           }
+        
+        if(!(aExpectedData[i]->Type() == aActualData[i]->Type()))
+           {
+           INFO_PRINTF1(_L("The expected type for a service data type is not same as the actual recieved"));
+           return EFalse;      
+           }
+        }
+    return ETrue;
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareOpaqueDataL(RPointerArray<Usif::COpaqueData> aActualData,  RPointerArray<Usif::COpaqueData> aExpectedData)
+    {
+    TInt expectedCount = aExpectedData.Count();
+    TInt actualCount = aActualData.Count();
+           
+    if(actualCount != expectedCount)
+      {        
+
+      INFO_PRINTF1(_L("The no of expected opaque data is not same as the no of actual opaque data"));
+      INFO_PRINTF2(_L("The expected data : %d"), expectedCount);
+      INFO_PRINTF2(_L("The actual data : %d"), actualCount);
+      return EFalse;
+      }
+    for(TInt i = 0 ; i < expectedCount ; i++)
+        {
+        if(aExpectedData[i]->Language()!= aActualData[i]->Language())
+           {
+           INFO_PRINTF1(_L("The expected lang for a service data type is not same as the actual recieved"));
+           return EFalse;      
+           }
+        
+        TBool compareWithDb = EFalse;
+        GetBoolFromConfig(ConfigSection(), _L("CompareWithDb"), compareWithDb);
+        
+        if(compareWithDb)
+            {
+            TResourceReader reader;
+            reader.SetBuffer(&aActualData[i]->OpaqueData());
+            HBufC16* actualDataBuffer = reader.ReadHBufCL();
+            CleanupStack::PushL(actualDataBuffer);
+            
+            TPtrC16 ptr16(reinterpret_cast<const TUint16*>(aExpectedData[i]->OpaqueData().Ptr()),(aExpectedData[i]->OpaqueData().Length()/2));
+            HBufC16* expectedDataBuffer = ptr16.AllocLC();
+            
+            if(*actualDataBuffer != *expectedDataBuffer)
+               {                
+               INFO_PRINTF1(_L("The expected data for a service opqdata is not same as the actual recieved"));
+               INFO_PRINTF2(_L("The expected data %S"), expectedDataBuffer);
+               INFO_PRINTF2(_L("The Actual data %S"), actualDataBuffer);
+               CleanupStack::PopAndDestroy(2, actualDataBuffer);
+               return EFalse;      
+               }
+            CleanupStack::PopAndDestroy(2, actualDataBuffer);
+
+            }
+        else
+            {
+            if(aActualData[i]->OpaqueData() != aExpectedData[i]->OpaqueData())
+               {                
+               INFO_PRINTF1(_L("The expected data for a service opqdata is not same as the actual recieved"));
+               INFO_PRINTF2(_L("The expected data %S"), &aExpectedData[i]->OpaqueData());
+               INFO_PRINTF2(_L("The Actual data %S"), &aActualData[i]->OpaqueData());
+               return EFalse;      
+               }
+            }
+        }
+    return ETrue;
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareServiceInfoL(RPointerArray<Usif::CServiceInfo> aActualData,  RPointerArray<Usif::CServiceInfo> aExpectedData)
+    {
+    TInt expectedServicesCount = aExpectedData.Count();
+    TInt actualServicesCount = aActualData.Count();
+       
+    if(actualServicesCount != expectedServicesCount)
+      {        
+      INFO_PRINTF1(_L("The no of expected services for an app is not same as the no of actual services"));
+      return EFalse;
+      }
+    
+    for (TInt i=0 ; i < expectedServicesCount ; i++)
+      {
+        // Compare uids
+      if(aExpectedData[i]->Uid() != aActualData[i]->Uid())
+      {
+      INFO_PRINTF2(_L("Expected Uid 0x%08x"), aExpectedData[i]->Uid());
+      INFO_PRINTF2(_L("Actual Uid 0x%08x"), aActualData[i]->Uid());
+      INFO_PRINTF1(_L("The expected service uid is not same as the actual service uid"));
+      return EFalse;      
+      }
+
+      // Compare Opaque data
+      if(!CompareOpaqueDataL(aActualData[i]->OpaqueData(), aExpectedData[i]->OpaqueData()))
+        {
+        return EFalse;      
+        }
+      
+      //compare data type
+      if(!CompareDataType(aActualData[i]->DataTypes(), aExpectedData[i]->DataTypes()))
+          {
+          return EFalse;
+          }     
+      }
+    return ETrue; 
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareCaptionandIconInfo(const CCaptionAndIconInfo* aActualData,const CCaptionAndIconInfo* aExpectedData)
+    {       
+    if(aExpectedData == NULL && aActualData == NULL)
+      {
+      return ETrue;  
+      }
+    
+    if((aExpectedData == NULL && aActualData != NULL) || (aExpectedData != NULL && aActualData == NULL))
+      {
+      INFO_PRINTF1(_L("The caption and icon info  for a localizable is either not present ot not expected"));
+      return EFalse;   
+      }               
+            
+    if(aActualData->NumOfAppIcons() != aExpectedData->NumOfAppIcons())
+      {
+      INFO_PRINTF1(_L("The expected no od icons for a locale is not same as the actual recieved"));
+      return EFalse;
+      }
+           
+    if(aActualData->Caption().Compare(aExpectedData->Caption()))
+      {
+      INFO_PRINTF1(_L("The expected caption for a locale is not same as the actual recieved"));
+      return EFalse;
+      }
+       
+    if(aActualData->IconFileName().Compare(aExpectedData->IconFileName()))
+      {
+      INFO_PRINTF2(_L("Expected Icon File %S"), &aExpectedData->IconFileName());
+      INFO_PRINTF2(_L("Actual Icon File %S"), &aActualData->IconFileName());
+      INFO_PRINTF1(_L("The expected icon file name is not same as the actual recieves"));
+      return EFalse;
+      }
+    return ETrue;
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareViewData(RPointerArray<Usif::CAppViewData> aActualData,  RPointerArray<Usif::CAppViewData> aExpectedData)
+    {
+    TInt expectedViewDataCount = aExpectedData.Count();
+    TInt actualViewDataCount = aActualData.Count();
+              
+    if(actualViewDataCount != expectedViewDataCount)
+      {        
+      INFO_PRINTF1(_L("The no of expected localizable info for an app is not same as the no of actual recieved"));
+      return EFalse;
+      }
+    for (TInt i=0 ; i < expectedViewDataCount ; i++)
+        {
+        if(aExpectedData[i]->ScreenMode() != aActualData[i]->ScreenMode())
+          {
+          INFO_PRINTF1(_L("The expected screen mode for a view is not same as the actual recieved"));
+          return EFalse;      
+          }              
+                 
+        if(aExpectedData[i]->Uid() != aActualData[i]->Uid())
+          {
+          INFO_PRINTF1(_L("The expected uid for a view is not same as the actual recieved"));
+          return EFalse;      
+          } 
+           
+        //compare captionandicon info
+       if(!CompareCaptionandIconInfo(aActualData[i]->CaptionAndIconInfo(),aExpectedData[i]->CaptionAndIconInfo()))
+          {
+          return EFalse;
+          }
+        }
+    return ETrue;                      
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareLocalizableAppInfo(RPointerArray<Usif::CLocalizableAppInfo> aActualData,  RPointerArray<Usif::CLocalizableAppInfo> aExpectedData)
+    {
+    TInt expectedLocalizableCount = aExpectedData.Count();
+    TInt actualLocalizableCount = aActualData.Count();
+          
+    if(actualLocalizableCount != expectedLocalizableCount)
+       {        
+       INFO_PRINTF1(_L("The no of expected localizable info for an app is not same as the no of actual recieved"));
+       return EFalse;
+       }
+    for (TInt i=0 ; i < expectedLocalizableCount ; i++)
+       {
+       if(aExpectedData[i]->ShortCaption().Compare(aActualData[i]->ShortCaption()))
+         {
+         INFO_PRINTF1(_L("The expected short caption for a localizable info is not same as the actual recieved"));
+         return EFalse;      
+         }
+       
+       if(aExpectedData[i]->GroupName().Compare(aActualData[i]->GroupName()))
+         {
+         INFO_PRINTF1(_L("The expected group name for a localizable info is not same as the actual recieved"));
+         return EFalse;      
+         }
+             
+       if(aExpectedData[i]->ApplicationLanguage() != aActualData[i]->ApplicationLanguage())
+         {
+         INFO_PRINTF1(_L("The expected locale for a localizable info is not same as the actual recieved"));
+         INFO_PRINTF2(_L("The expected language %d"), aExpectedData[i]->ApplicationLanguage());
+         INFO_PRINTF2(_L("The Actual language %d"), aActualData[i]->ApplicationLanguage());
+         return EFalse;      
+         } 
+       
+       //compare caption and icon info
+       if(!CompareCaptionandIconInfo(aActualData[i]->CaptionAndIconInfo(),aExpectedData[i]->CaptionAndIconInfo()))
+           {
+          return EFalse;
+           }
+       
+       // compare view data    
+       if(!CompareViewData(aActualData[i]->ViewDataList(), aExpectedData[i]->ViewDataList()))
+           {
+           return EFalse;
+           }
+       }
+    return ETrue;
+    }
+
+TBool CScrGetApplicationRegistrationViewSubsessionStep::CompareApplicationRegistrationDataL(
+        Usif::CApplicationRegistrationData *aActualData,
+        Usif::CApplicationRegistrationData *aExpectedData)
+    {
+    //comparing AppRegistrationInfo    
+    if (aActualData->AppUid() != aExpectedData->AppUid())
+        {
+        INFO_PRINTF2(_L("Actual AppUid is 0x%x"), aActualData->AppUid().iUid);
+        INFO_PRINTF2(_L("Expected AppUid is 0x%x"), aExpectedData->AppUid().iUid);
+        INFO_PRINTF1(_L("The expected App Uid is not same as the actual AppUid"));
+        return EFalse;
+        }
+
+    if (aActualData->AppFile().Compare(aExpectedData->AppFile()))
+        {
+        INFO_PRINTF2(_L("Expected app File %S"), &aExpectedData->AppFile());
+        INFO_PRINTF2(_L("Actual app File %S"), &aActualData->AppFile());
+        INFO_PRINTF1(_L("The expected App File is not same as the actual App File"));
+        return EFalse;
+        }
+
+    if (aActualData->Attributes() != aExpectedData->Attributes())
+        {
+        INFO_PRINTF1(_L("The expected App Attribute is not same as the actual App Attribute"));
+        return EFalse;
+        }
+
+    if (aActualData->Hidden() != aExpectedData->Hidden())
+        {
+        INFO_PRINTF1(_L("The expected Hidden Value is not same as the actual App Hidden Value"));
+        return EFalse;
+        }
+
+    if (aActualData->Embeddability() != aExpectedData->Embeddability())
+        {
+        INFO_PRINTF1(_L("The expected embeddability value is not same as the actual embeddability value"));
+        return EFalse;
+        }
+
+    if (aActualData->NewFile() != aExpectedData->NewFile())
+        {
+        INFO_PRINTF1(_L("The expected App NewFile Value is not same as the actual App NewFile Value"));
+        return EFalse;
+        }
+
+    if (aActualData->Launch() != aExpectedData->Launch())
+        {
+        INFO_PRINTF1(_L("The expected App Launch Value is not same as the actual App Launch Value"));
+        return EFalse;
+        }
+
+    if (aActualData->GroupName().Compare(aExpectedData->GroupName()))
+        {
+        INFO_PRINTF1(_L("The expected App Group Name is not same as the actual App Group Name"));
+        return EFalse;
+        }
+
+    if (aActualData->DefaultScreenNumber()
+            != aExpectedData->DefaultScreenNumber())
+        {
+        INFO_PRINTF1(_L("The expected App DefaultScreenNumber is not same as the actual App DefaultScreenNumber"));
+        return EFalse;
+        }
+
+    // Compare Opaque data
+    if (!CompareOpaqueDataL(aActualData->AppOpaqueData(),
+            aExpectedData->AppOpaqueData()))
+        {
+        return EFalse;
+        }
+
+    // comparing FileOwnershipInfo
+    if (!CompareFileOwnershipInfo(aActualData->OwnedFileArray(),
+            aExpectedData->OwnedFileArray()))
+        {
+        return EFalse;
+        }
+
+    // comparing  Service info
+    if (!CompareServiceInfoL(aActualData->ServiceArray(),
+            aExpectedData->ServiceArray()))
+        {
+        return EFalse;
+        }
+
+    //comparing localizable app info
+    if (!CompareLocalizableAppInfo(aActualData->LocalizableAppInfoList(),
+            aExpectedData->LocalizableAppInfoList()))
+        {
+        return EFalse;
+        }
+
+    return ETrue;
+    }
+
+//-----------------CScrGetApplicationRegistrationViewStep-------------
+
+CScrGetApplicationRegistrationViewSubsessionStep::CScrGetApplicationRegistrationViewSubsessionStep() 
+    {
+    
+    }
+
+CScrGetApplicationRegistrationViewSubsessionStep::~CScrGetApplicationRegistrationViewSubsessionStep()
+// Destructor.
+    {
+    iScrSession.Close();
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::ImplTestStepPreambleL()
+    {
+    User::LeaveIfError(iScrSession.Connect());
+    }
+
+
+void CScrGetApplicationRegistrationViewSubsessionStep::GetApplicationRegistrationDataFromConfigL(RPointerArray<Usif::CApplicationRegistrationData>& aEntries)
+    {
+    TInt configSectionCount(0);
+    CApplicationRegistrationData *applicationRegistrationData = NULL;
+    TPtrC configSectionName(ConfigSection());
+    HBufC* cnfSecName = NULL;
+    
+    GetIntFromConfig(ConfigSection(), _L("AppRegEntriesConfigCount"), configSectionCount);          
+
+    for (TUint i = 0; i < configSectionCount; ++i)
+        {
+        TBuf<20> configSection = _L("configsection");
+        GenerateIndexedAttributeNameL(configSection, i);
+        GetStringFromConfig(ConfigSection(),configSection, configSectionName);
+        cnfSecName = configSectionName.AllocLC();
+        applicationRegistrationData = GetAppRegInfoFromConfigLC(cnfSecName);
+        aEntries.AppendL(applicationRegistrationData);
+        CleanupStack::Pop(applicationRegistrationData);
+        CleanupStack::PopAndDestroy(cnfSecName);
+        }  
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::ImplTestStepL()
+    {            
+    TInt locale;    
+    TInt expextedAppRegDataCount(0);
+    TInt actualAppRegDataCount(0);
+    TInt count = 0;
+    TInt remainingExpectedCount = 0;
+    TBool isFinish = EFalse;
+    TBool isError = EFalse;
+    TInt index = 0;
+      
+    RPointerArray<Usif::CApplicationRegistrationData> expectedAppRegData;
+    CleanupClosePushL(expectedAppRegData);
+    INFO_PRINTF1(_L("Read expected entries for verification "));
+    GetApplicationRegistrationDataFromConfigL(expectedAppRegData);
+    expextedAppRegDataCount = expectedAppRegData.Count();
+    remainingExpectedCount = expextedAppRegDataCount; 
+    
+    TInt noOfEntries(1);
+    GetIntFromConfig(ConfigSection(), _L("NoOfEntries"), noOfEntries);
+    
+    TInt noOfAppRegAppUid = 0;
+    TBuf<20> appRegAppUidName;
+    RArray<TUid> expectedAppRegAppUids;
+    CleanupClosePushL(expectedAppRegAppUids);
+
+    GetIntFromConfig(ConfigSection(), _L("AppRegAppUidCount"), noOfAppRegAppUid);
+    for (TUint i = 0; i < noOfAppRegAppUid; ++i)
+        {   
+        TUid appRegAppUid;
+        appRegAppUidName = _L("AppRegAppUid");
+        GenerateIndexedAttributeNameL(appRegAppUidName, i);
+        GetUidFromConfig(ConfigSection(), appRegAppUidName, appRegAppUid);
+        expectedAppRegAppUids.AppendL(appRegAppUid);
+        }
+    
+    TInt err = KErrNone;
+    RApplicationRegistryView subSession;
+    CleanupClosePushL(subSession);
+    if(GetIntFromConfig(ConfigSection(), _L("Locale"), locale))
+        {
+        if(expectedAppRegAppUids.Count())
+            {
+            TRAP(err,subSession.OpenViewL(iScrSession, expectedAppRegAppUids, (TLanguage)locale));
+            }
+        else
+            {
+            TRAP(err,subSession.OpenViewL(iScrSession, (TLanguage)locale));
+            }
+        if(KErrNone != err)
+            {
+            CleanupStack::PopAndDestroy(1,&subSession);
+            expectedAppRegAppUids.Close();
+            CleanupStack::Pop(2); //poping expectedAppRegAppUids expectedAppRegData            
+            expectedAppRegData.ResetAndDestroy();
+            User::Leave(err);
+            }
+        }
+    else
+        {
+        if(expectedAppRegAppUids.Count())
+            {
+            TRAP(err,subSession.OpenViewL(iScrSession, expectedAppRegAppUids));
+            }
+        else
+            {
+            TRAP(err,subSession.OpenViewL(iScrSession));
+            }
+        if(KErrNone != err)
+           {
+            CleanupStack::PopAndDestroy(1,&subSession);
+            expectedAppRegAppUids.Close();
+            CleanupStack::Pop(2); //poping expectedAppRegAppUids expectedAppRegData            
+            expectedAppRegData.ResetAndDestroy();
+            User::Leave(err);
+           }
+        }
+    
+    RPointerArray<CApplicationRegistrationData> actualAppRegData;
+    CleanupClosePushL(actualAppRegData);
+    
+    while(1)
+    {    
+    actualAppRegData.ResetAndDestroy();
+    TRAP(err,subSession.GetNextApplicationRegistrationInfoL(noOfEntries, actualAppRegData))
+    if(KErrNone != err)
+        {
+        CleanupStack::Pop(1); //poping actualAppRegData 
+        actualAppRegData.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(1,&subSession);
+        expectedAppRegAppUids.Close();
+        CleanupStack::Pop(2); //poping expectedAppRegAppUids expectedAppRegData
+        expectedAppRegData.ResetAndDestroy();
+        User::Leave(err);
+        }
+    
+    actualAppRegDataCount = actualAppRegData.Count();
+    
+    if(remainingExpectedCount > noOfEntries)
+        {
+        count = noOfEntries;
+        remainingExpectedCount -=  count;        
+        }
+    else
+        {
+        count =  remainingExpectedCount;
+        isFinish = ETrue;
+        }
+        
+    
+    if (count != actualAppRegDataCount)
+        {
+        INFO_PRINTF1(_L("actualAppRegDataCount is not same as expextedAppRegDataCount"));
+        SetTestStepResult(EFail);  
+        CleanupStack::Pop(1); //poping actualAppRegData 
+        actualAppRegData.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(1,&subSession);
+        expectedAppRegAppUids.Close();
+        CleanupStack::Pop(2); //poping expectedAppRegAppUids expectedAppRegData
+        expectedAppRegData.ResetAndDestroy();
+        return;
+        }       
+    
+    for(TInt i=0 ; i < count ; i++)
+        {
+      if(!CompareApplicationRegistrationDataL(actualAppRegData[i], expectedAppRegData[index]))
+          {
+          SetTestStepResult(EFail);
+          isError = ETrue;
+          break;
+          }     
+      index++;
+        }
+    
+    if(isFinish || isError)
+        {
+        break;
+        }    
+    }
+    
+    CleanupStack::Pop(1); //poping actualAppRegData 
+    actualAppRegData.ResetAndDestroy();
+    CleanupStack::PopAndDestroy(1,&subSession);
+    expectedAppRegAppUids.Close();
+    CleanupStack::Pop(2); //poping expectedAppRegAppUids expectedAppRegData
+    expectedAppRegData.ResetAndDestroy();
+    }
+
+void CScrGetApplicationRegistrationViewSubsessionStep::ImplTestStepPostambleL()
+    {
+    
+    }
+//-----------------CScrMultipleSubsessionsForAppRegistryViewStep-------------
+
+CScrMultipleSubsessionsForAppRegistryViewStep::CScrMultipleSubsessionsForAppRegistryViewStep() 
+    {
+    
+    }
+
+CScrMultipleSubsessionsForAppRegistryViewStep::~CScrMultipleSubsessionsForAppRegistryViewStep()
+// Destructor.
+    {
+    iScrSession.Close();
+    }
+
+void CScrMultipleSubsessionsForAppRegistryViewStep::ImplTestStepPreambleL()
+    {
+    User::LeaveIfError(iScrSession.Connect());
+    }
+
+void CScrMultipleSubsessionsForAppRegistryViewStep::ImplTestStepL()
+    {            
+    TInt locale;    
+    TInt actualAppRegDataCount(0);
+    TInt count = 0;
+    TInt index = 0;
+      
+    RPointerArray<Usif::CApplicationRegistrationData> expectedAppRegData;
+    CleanupClosePushL(expectedAppRegData);
+    INFO_PRINTF1(_L("Read expected entries for verification "));
+    GetApplicationRegistrationDataFromConfigL(expectedAppRegData);
+    
+    TInt noOfEntries(1);
+    GetIntFromConfig(ConfigSection(), _L("NoOfEntries"), noOfEntries);
+    
+    TInt noOfAppRegAppUid = 0;
+    TBuf<20> appRegAppUidName;
+    RArray<TUid> appUidsBeingQueried;
+    CleanupClosePushL(appUidsBeingQueried);
+
+    GetIntFromConfig(ConfigSection(), _L("AppRegAppUidCount"), noOfAppRegAppUid);
+    for (TUint i = 0; i < noOfAppRegAppUid; ++i)
+        {   
+        TUid appRegAppUid;
+        appRegAppUidName = _L("AppRegAppUid");
+        GenerateIndexedAttributeNameL(appRegAppUidName, i);
+        GetUidFromConfig(ConfigSection(), appRegAppUidName, appRegAppUid);
+        appUidsBeingQueried.AppendL(appRegAppUid);
+        }
+    
+    GetIntFromConfig(ConfigSection(), _L("Locale"), locale);
+    
+    TInt err = KErrNone;
+    RApplicationRegistryView subSession;
+    CleanupClosePushL(subSession);
+    
+    TRAP(err,subSession.OpenViewL(iScrSession, (TLanguage)locale));
+    if(KErrNone != err)
+        {
+        CleanupStack::PopAndDestroy(1,&subSession);
+        appUidsBeingQueried.Close();
+        CleanupStack::Pop(2); //poping appUidsBeingQueried expectedAppRegData            
+        expectedAppRegData.ResetAndDestroy();
+        User::Leave(err);
+        }
+
+    RPointerArray<CApplicationRegistrationData> actualAppRegData;
+    CleanupClosePushL(actualAppRegData);
+    
+    actualAppRegData.ResetAndDestroy();
+    TRAP(err,subSession.GetNextApplicationRegistrationInfoL(noOfEntries, actualAppRegData));
+    if(KErrNone != err)
+        {
+        CleanupStack::Pop(1); //poping actualAppRegData 
+        actualAppRegData.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(1,&subSession);
+        appUidsBeingQueried.Close();
+        CleanupStack::Pop(2); //poping appUidsBeingQueried expectedAppRegData
+        expectedAppRegData.ResetAndDestroy();
+        User::Leave(err);
+        }
+              
+    actualAppRegDataCount = actualAppRegData.Count();
+    count = noOfEntries;
+           
+    if (count != actualAppRegDataCount)
+        {
+        INFO_PRINTF1(_L("actualAppRegDataCount is not same as noOfEntries"));
+        SetTestStepResult(EFail);  
+        CleanupStack::Pop(1); //poping actualAppRegData 
+        actualAppRegData.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(1,&subSession);
+        appUidsBeingQueried.Close();
+        CleanupStack::Pop(2); //poping appUidsBeingQueried expectedAppRegData
+        expectedAppRegData.ResetAndDestroy();
+        return;
+        }  
+       
+    for(TInt i=0 ; i < count ; i++)
+        {
+        // Compare the first "count" number of entries in the DB to the entries specified in the config file. 
+        if(!CompareApplicationRegistrationDataL(actualAppRegData[i], expectedAppRegData[index]))
+             {
+             SetTestStepResult(EFail);
+             break;
+             }     
+        index++;
+        }
+       
+    actualAppRegData.ResetAndDestroy();
+    TRAP(err,subSession.OpenViewL(iScrSession, appUidsBeingQueried, (TLanguage)locale));
+    if(KErrNone != err)
+        {
+        CleanupStack::PopAndDestroy(1,&subSession);
+        appUidsBeingQueried.Close();
+        CleanupStack::Pop(2); //poping appUidsBeingQueried expectedAppRegData            
+        expectedAppRegData.ResetAndDestroy();
+        User::Leave(err);
+        }
+              
+    TRAP(err,subSession.GetNextApplicationRegistrationInfoL(noOfEntries, actualAppRegData))
+    if(KErrNone != err)
+        {
+        CleanupStack::Pop(1); //poping actualAppRegData 
+        actualAppRegData.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(1,&subSession);
+        appUidsBeingQueried.Close();
+        CleanupStack::Pop(2); //poping appUidsBeingQueried expectedAppRegData
+        expectedAppRegData.ResetAndDestroy();
+        User::Leave(err);
+        }
+                    
+     actualAppRegDataCount = actualAppRegData.Count();
+     count = noOfAppRegAppUid;
+                  
+     if (count != actualAppRegDataCount)
+        {
+        INFO_PRINTF1(_L("actualAppRegDataCount is not same as noOfAppRegAppUid to be fetched"));
+        SetTestStepResult(EFail);  
+        CleanupStack::Pop(1); //poping actualAppRegData 
+        actualAppRegData.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(1,&subSession);
+        appUidsBeingQueried.Close();
+        CleanupStack::Pop(2); //poping appUidsBeingQueried expectedAppRegData
+        expectedAppRegData.ResetAndDestroy();
+        return;
+        }     
+          
+     index = 0;
+     for(TInt i=0 ; i < count ; i++)
+        {
+         // Compare the entries fetched from the DB to the entries specified in the config file.
+        if(!CompareApplicationRegistrationDataL(actualAppRegData[i], expectedAppRegData[index]))
+           {
+           SetTestStepResult(EFail);
+           break;
+           }     
+        index++;
+        }
+
+    CleanupStack::Pop(1); //poping actualAppRegData 
+    actualAppRegData.ResetAndDestroy();
+    CleanupStack::PopAndDestroy(1,&subSession);
+    appUidsBeingQueried.Close();
+    CleanupStack::Pop(2); //poping appUidsBeingQueried expectedAppRegData
+    expectedAppRegData.ResetAndDestroy();
+    }
+
+void CScrMultipleSubsessionsForAppRegistryViewStep::ImplTestStepPostambleL()
+    {
+    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscrapparc/source/tscrapparcserver.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,98 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Implements the test server of the Software Component Registry test harness
+*
+*/
+
+#include "tscrapparcserver.h"             // TEF Test Server
+#include "appreginfoapparcsteps.h"
+
+
+CScrApparcTestServer* CScrApparcTestServer::NewL()
+/**
+    Called inside the MainL() function to create and start the CTestServer derived server.
+    @return Instance of the test server
+ */
+    {   
+    CScrApparcTestServer* server = new (ELeave) CScrApparcTestServer();
+    CleanupStack::PushL(server);    
+    server->ConstructL(KScrApparcTestServerName);
+    CleanupStack::Pop(server);
+    return server;
+    }
+    
+    
+CScrApparcTestServer::~CScrApparcTestServer()
+/**
+    Destructor.
+ */
+    {
+    
+    }
+
+
+LOCAL_C void MainL()
+    {
+    CActiveScheduler *scheduler = new(ELeave) CActiveScheduler;
+    CActiveScheduler::Install(scheduler);
+
+    CScrApparcTestServer* server = NULL;
+    
+    //Create the CScrApparcTestServer derived server
+    TRAPD(err,server = CScrApparcTestServer::NewL());
+    if(!err)
+       {
+       // Sync with the client and enter the active scheduler
+       RProcess::Rendezvous(KErrNone);
+       scheduler->Start();
+        }
+        
+    delete server;
+    delete scheduler;
+                
+    }
+
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Process entry point. Called by client using RProcess API
+ */
+    {
+    __UHEAP_MARK;
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    if(cleanup == NULL)
+        {
+        return KErrNoMemory;
+        }
+    TRAPD(err,MainL());
+    delete cleanup;
+    __UHEAP_MARKEND;
+    return err;
+    }
+
+CTestStep* CScrApparcTestServer::CreateTestStep(const TDesC& aStepName)    
+    {    
+    CTestStep* testStep = NULL;
+    
+    if (aStepName == KScrApplicationRegistrationViewSubsessionStep)
+        testStep = new CScrGetApplicationRegistrationViewSubsessionStep();
+           
+    if (aStepName == KScrMultipleSubsessionsForAppRegistryViewStep)
+        testStep = new CScrMultipleSubsessionsForAppRegistryViewStep();
+    
+    return testStep;
+    }
+
--- a/installationservices/swi/bwins/SecurityManager_v2U.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/bwins/SecurityManager_v2U.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -65,4 +65,6 @@
 	?MaxNumOfLogEntries@CSecurityPolicy@Swi@@QBEHXZ @ 64 NONAME ; int Swi::CSecurityPolicy::MaxNumOfLogEntries(void) const
 	?VerifyControllerL@CSecurityManager@Swi@@QAEXAAVTDesC8@@ABVCController@Sis@2@PAW4TSignatureValidationResult@2@AAV?$RPointerArray@VCPKIXValidationResultBase@@@@AAV?$RPointerArray@VCX509Certificate@@@@PAVTCapabilitySet@@AAH6AAVTRequestStatus@@H@Z @ 65 NONAME ; void Swi::CSecurityManager::VerifyControllerL(class TDesC8 &, class Swi::Sis::CController const &, enum Swi::TSignatureValidationResult *, class RPointerArray<class CPKIXValidationResultBase> &, class RPointerArray<class CX509Certificate> &, class TCapabilitySet *, int &, int &, class TRequestStatus &, int)
 	?AllowOverwriteOnRestore@CSecurityPolicy@Swi@@QBEHXZ @ 66 NONAME ; int Swi::CSecurityPolicy::AllowOverwriteOnRestore(void) const
+	?IsPackageUidPresent@SecUtils@Swi@@SAHVTUid@@AAY0BA@V3@@Z @ 67 NONAME ; int Swi::SecUtils::IsPackageUidPresent(class TUid, class TUid [16] &)
+	?PublishPackageUid@SecUtils@Swi@@SAHVTUid@@AAY0BA@V3@@Z @ 68 NONAME ; int Swi::SecUtils::PublishPackageUid(class TUid, class TUid [16] &)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/bwins/apprscparseru.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,6 @@
+EXPORTS
+	?ReadL@CAppRegInfoReader@@QAEPAVCApplicationRegistrationData@Usif@@ABV?$RArray@W4TLanguage@@@@@Z @ 1 NONAME ; class Usif::CApplicationRegistrationData * CAppRegInfoReader::ReadL(class RArray<enum TLanguage> const &)
+	?NewL@CAppRegInfoReader@@SAPAV1@AAVRFs@@ABVTDesC16@@@Z @ 2 NONAME ; class CAppRegInfoReader * CAppRegInfoReader::NewL(class RFs &, class TDesC16 const &)
+	??1CAppRegInfoReader@@UAE@XZ @ 3 NONAME ; CAppRegInfoReader::~CAppRegInfoReader(void)
+	?NewL@CAppRegInfoReader@@SAPAV1@AAVRFs@@ABVRFile@@@Z @ 4 NONAME ; class CAppRegInfoReader * CAppRegInfoReader::NewL(class RFs &, class RFile const &)
+
--- a/installationservices/swi/bwins/planU.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/bwins/planU.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -77,4 +77,7 @@
 	?IsDeviceMatchingLanguage@CApplication@Swi@@QBEHH@Z @ 76 NONAME ; int Swi::CApplication::IsDeviceMatchingLanguage(int) const
 	?SetSisHelper@CApplication@Swi@@QAEXABVRSisHelper@2@@Z @ 77 NONAME ; void Swi::CApplication::SetSisHelper(class Swi::RSisHelper const &)
 	?GetSisHelper@CApplication@Swi@@QAEAAVRSisHelper@2@XZ @ 78 NONAME ; class Swi::RSisHelper & Swi::CApplication::GetSisHelper(void)
+	?GetAffectedApps@CPlan@Swi@@QBEXAAV?$RArray@VTAppUpdateInfo@Swi@@@@@Z @ 79 NONAME ; void Swi::CPlan::GetAffectedApps(class RArray<class Swi::TAppUpdateInfo> &) const
+	?ResetAffectedApps@CPlan@Swi@@QAEXXZ @ 80 NONAME ; void Swi::CPlan::ResetAffectedApps(void)
+	?SetAffectedApps@CPlan@Swi@@QAEXAAV?$RArray@VTAppUpdateInfo@Swi@@@@@Z @ 81 NONAME ; void Swi::CPlan::SetAffectedApps(class RArray<class Swi::TAppUpdateInfo> &)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/bwins/plan_legacyu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,83 @@
+EXPORTS
+	??1CPlan@Swi@@UAE@XZ @ 1 NONAME ; Swi::CPlan::~CPlan(void)
+	?AddEmbeddedApplicationL@CApplication@Swi@@QAEXPAV12@@Z @ 2 NONAME ; void Swi::CApplication::AddEmbeddedApplicationL(class Swi::CApplication *)
+	?AddFileL@CApplication@Swi@@QAEXABVCFileDescription@Sis@2@VTChar@@@Z @ 3 NONAME ; void Swi::CApplication::AddFileL(class Swi::Sis::CFileDescription const &, class TChar)
+	?AddInstallFileForProgress@CPlan@Swi@@QAEX_J@Z @ 4 NONAME ; void Swi::CPlan::AddInstallFileForProgress(long long)
+	?AddPropertyL@CApplication@Swi@@QAEXABVTProperty@12@@Z @ 5 NONAME ; void Swi::CApplication::AddPropertyL(class Swi::CApplication::TProperty const &)
+	?AddUninstallFileForProgress@CPlan@Swi@@QAEXXZ @ 6 NONAME ; void Swi::CPlan::AddUninstallFileForProgress(void)
+	?AppInfoL@CPlan@Swi@@QBEABVTAppInfo@2@XZ @ 7 NONAME ; class Swi::TAppInfo const & Swi::CPlan::AppInfoL(void) const
+	?ApplicationL@CPlan@Swi@@UBEABVCApplication@2@XZ @ 8 NONAME ; class Swi::CApplication const & Swi::CPlan::ApplicationL(void) const
+	?ControllerL@CApplication@Swi@@QBEABVCController@Sis@2@XZ @ 9 NONAME ; class Swi::Sis::CController const & Swi::CApplication::ControllerL(void) const
+	?DisplayFileOnInstallL@CApplication@Swi@@QAEXABVCFileDescription@Sis@2@VTChar@@@Z @ 10 NONAME ; void Swi::CApplication::DisplayFileOnInstallL(class Swi::Sis::CFileDescription const &, class TChar)
+	?DisplayFileOnUninstallL@CApplication@Swi@@QAEXABVCSisRegistryFileDescription@2@@Z @ 11 NONAME ; void Swi::CApplication::DisplayFileOnUninstallL(class Swi::CSisRegistryFileDescription const &)
+	?EmbeddedApplications@CApplication@Swi@@QBEABV?$RPointerArray@VCApplication@Swi@@@@XZ @ 12 NONAME ; class RPointerArray<class Swi::CApplication> const & Swi::CApplication::EmbeddedApplications(void) const
+	?FilesToAdd@CApplication@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 13 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CApplication::FilesToAdd(void) const
+	?FilesToDisplayOnInstall@CApplication@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 14 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CApplication::FilesToDisplayOnInstall(void) const
+	?FilesToDisplayOnUninstall@CApplication@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 15 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CApplication::FilesToDisplayOnUninstall(void) const
+	?FilesToRemove@CApplication@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 16 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CApplication::FilesToRemove(void) const
+	?FilesToRunOnInstall@CApplication@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 17 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CApplication::FilesToRunOnInstall(void) const
+	?FilesToRunOnUninstall@CApplication@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 18 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CApplication::FilesToRunOnUninstall(void) const
+	?FinalProgressBarValue@CPlan@Swi@@QBEJXZ @ 19 NONAME ; long Swi::CPlan::FinalProgressBarValue(void) const
+	?IsAugmentation@CApplication@Swi@@QBEHXZ @ 20 NONAME ; int Swi::CApplication::IsAugmentation(void) const
+	?IsInROM@CApplication@Swi@@QBEHXZ @ 21 NONAME ; int Swi::CApplication::IsInROM(void) const
+	?IsInstall@CApplication@Swi@@QBEHXZ @ 22 NONAME ; int Swi::CApplication::IsInstall(void) const
+	?IsPartialUpgrade@CApplication@Swi@@QBEHXZ @ 23 NONAME ; int Swi::CApplication::IsPartialUpgrade(void) const
+	?IsPreInstalledApp@CApplication@Swi@@QBEHXZ @ 24 NONAME ; int Swi::CApplication::IsPreInstalledApp(void) const
+	?IsPreInstalledPatch@CApplication@Swi@@QBEHXZ @ 25 NONAME ; int Swi::CApplication::IsPreInstalledPatch(void) const
+	?IsUninstall@CApplication@Swi@@QBEHXZ @ 26 NONAME ; int Swi::CApplication::IsUninstall(void) const
+	?IsUpgrade@CApplication@Swi@@QBEHXZ @ 27 NONAME ; int Swi::CApplication::IsUpgrade(void) const
+	?NewL@CApplication@Swi@@SAPAV12@XZ @ 28 NONAME ; class Swi::CApplication * Swi::CApplication::NewL(void)
+	?NewL@CPlan@Swi@@SAPAV12@XZ @ 29 NONAME ; class Swi::CPlan * Swi::CPlan::NewL(void)
+	?NewLC@CApplication@Swi@@SAPAV12@XZ @ 30 NONAME ; class Swi::CApplication * Swi::CApplication::NewLC(void)
+	?PackageL@CApplication@Swi@@QBEABVCSisRegistryPackage@2@XZ @ 31 NONAME ; class Swi::CSisRegistryPackage const & Swi::CApplication::PackageL(void) const
+	?Properties@CApplication@Swi@@QBEABV?$RArray@VTProperty@CApplication@Swi@@@@XZ @ 32 NONAME ; class RArray<class Swi::CApplication::TProperty> const & Swi::CApplication::Properties(void) const
+	?RemoveFileL@CApplication@Swi@@QAEXABVCSisRegistryFileDescription@2@@Z @ 33 NONAME ; void Swi::CApplication::RemoveFileL(class Swi::CSisRegistryFileDescription const &)
+	?RunFileOnInstallL@CApplication@Swi@@QAEXABVCFileDescription@Sis@2@VTChar@@@Z @ 34 NONAME ; void Swi::CApplication::RunFileOnInstallL(class Swi::Sis::CFileDescription const &, class TChar)
+	?RunFileOnUninstallL@CApplication@Swi@@QAEXABVCSisRegistryFileDescription@2@@Z @ 35 NONAME ; void Swi::CApplication::RunFileOnUninstallL(class Swi::CSisRegistryFileDescription const &)
+	?SetAppInfoL@CPlan@Swi@@QAEXABVTAppInfo@2@@Z @ 36 NONAME ; void Swi::CPlan::SetAppInfoL(class Swi::TAppInfo const &)
+	?SetApplication@CPlan@Swi@@UAEXPAVCApplication@2@@Z @ 37 NONAME ; void Swi::CPlan::SetApplication(class Swi::CApplication *)
+	?SetApplicationInformationL@CPlan@Swi@@QAEXABVTDesC16@@0ABVTVersion@@@Z @ 38 NONAME ; void Swi::CPlan::SetApplicationInformationL(class TDesC16 const &, class TDesC16 const &, class TVersion const &)
+	?SetAugmentation@CApplication@Swi@@QAEXABVCController@Sis@2@@Z @ 39 NONAME ; void Swi::CApplication::SetAugmentation(class Swi::Sis::CController const &)
+	?SetController@CApplication@Swi@@QAEXABVCController@Sis@2@@Z @ 40 NONAME ; void Swi::CApplication::SetController(class Swi::Sis::CController const &)
+	?SetController@CApplication@Swi@@QAEXVTUid@@@Z @ 41 NONAME ; void Swi::CApplication::SetController(class TUid)
+	?SetInROM@CApplication@Swi@@QAEXXZ @ 42 NONAME ; void Swi::CApplication::SetInROM(void)
+	?SetInstall@CApplication@Swi@@QAEXABVCController@Sis@2@@Z @ 43 NONAME ; void Swi::CApplication::SetInstall(class Swi::Sis::CController const &)
+	?SetOptionsL@CUserSelections@Swi@@QAEXABV?$RArray@H@@@Z @ 44 NONAME ; void Swi::CUserSelections::SetOptionsL(class RArray<int> const &)
+	?SetPackageL@CApplication@Swi@@QAEXABVCSisRegistryPackage@2@@Z @ 45 NONAME ; void Swi::CApplication::SetPackageL(class Swi::CSisRegistryPackage const &)
+	?SetPartialUpgrade@CApplication@Swi@@QAEXABVCController@Sis@2@@Z @ 46 NONAME ; void Swi::CApplication::SetPartialUpgrade(class Swi::Sis::CController const &)
+	?SetPreInstalledApp@CApplication@Swi@@QAEXABVCController@Sis@2@@Z @ 47 NONAME ; void Swi::CApplication::SetPreInstalledApp(class Swi::Sis::CController const &)
+	?SetPreInstalledPatch@CApplication@Swi@@QAEXABVCController@Sis@2@@Z @ 48 NONAME ; void Swi::CApplication::SetPreInstalledPatch(class Swi::Sis::CController const &)
+	?SetUninstallL@CApplication@Swi@@QAEXABVCSisRegistryPackage@2@@Z @ 49 NONAME ; void Swi::CApplication::SetUninstallL(class Swi::CSisRegistryPackage const &)
+	?SetUpgrade@CApplication@Swi@@QAEXABVCController@Sis@2@@Z @ 50 NONAME ; void Swi::CApplication::SetUpgrade(class Swi::Sis::CController const &)
+	?AddSisStubFileL@CApplication@Swi@@QAEXABVCSisRegistryFileDescription@2@@Z @ 51 NONAME ; void Swi::CApplication::AddSisStubFileL(class Swi::CSisRegistryFileDescription const &)
+	?CanPropagate@CApplication@Swi@@QBEHXZ @ 52 NONAME ; int Swi::CApplication::CanPropogate(void) const
+	?StubDrive@CApplication@Swi@@QBE?AVTChar@@XZ @ 53 NONAME ; class TChar Swi::CApplication::StubDrive(void) const
+	?SetPreInstalledApp@CApplication@Swi@@QAEXXZ @ 54 NONAME ; void Swi::CApplication::SetPreInstalledApp(void)
+	?SetPreInstalledPatch@CApplication@Swi@@QAEXXZ @ 55 NONAME ; void Swi::CApplication::SetPreInstalledPatch(void)
+	?RemoveFileL@CApplication@Swi@@QAEXABVTDesC16@@@Z @ 56 NONAME ; void Swi::CApplication::RemoveFileL(class TDesC16 const &)
+	?FilesToRunBeforeShutdown@CPlan@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 57 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CPlan::FilesToRunBeforeShutdown(void) const
+	?RunFilesBeforeShutdownL@CPlan@Swi@@QAEXABVCSisRegistryFileDescription@2@@Z @ 58 NONAME ; void Swi::CPlan::RunFilesBeforeShutdownL(class Swi::CSisRegistryFileDescription const &)
+	?IsInstallSuCertBased@CApplication@Swi@@QBEHXZ @ 59 NONAME ; int Swi::CApplication::IsInstallSuCertBased(void) const
+	?SetInstallSuCertBased@CApplication@Swi@@QAEXXZ @ 60 NONAME ; void Swi::CApplication::SetInstallSuCertBased(void)
+	?AddFileL@CApplication@Swi@@QAEXABVCSisRegistryFileDescription@2@@Z @ 61 NONAME ; void Swi::CApplication::AddFileL(class Swi::CSisRegistryFileDescription const &)
+	?FilesToSkipOnInstall@CApplication@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 62 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CApplication::FilesToSkipOnInstall(void) const
+	?SkipFileOnInstallL@CApplication@Swi@@QAEXABVCFileDescription@Sis@2@VTChar@@@Z @ 63 NONAME ; void Swi::CApplication::SkipFileOnInstallL(class Swi::Sis::CFileDescription const &, class TChar)
+	?SetDrmProtected@CApplication@Swi@@QAEXH@Z @ 64 NONAME ; void Swi::CApplication::SetDrmProtected(int)
+	?IsDrmProtected@CApplication@Swi@@QBEHXZ @ 65 NONAME ; int Swi::CApplication::IsDrmProtected(void) const
+	?FilesToRunAfterInstall@CPlan@Swi@@QBEABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@XZ @ 66 NONAME ; class RPointerArray<class Swi::CSisRegistryFileDescription> const & Swi::CPlan::FilesToRunAfterInstall(void) const
+	?RunFileAfterInstallL@CPlan@Swi@@QAEXABVCFileDescription@Sis@2@VTChar@@H@Z @ 67 NONAME ; void Swi::CPlan::RunFileAfterInstallL(class Swi::Sis::CFileDescription const &, class TChar, int)
+	?AppArcRegFiles@CPlan@Swi@@QBEABV?$RPointerArray@VTDesC16@@@@XZ @ 68 NONAME ; class RPointerArray<class TDesC16> const & Swi::CPlan::AppArcRegFiles(void) const
+	?ContainsPlugins@CPlan@Swi@@QBEHXZ @ 69 NONAME ; int Swi::CPlan::ContainsPlugins(void) const
+	?SetContainsPlugins@CPlan@Swi@@QAEXH@Z @ 70 NONAME ; void Swi::CPlan::SetContainsPlugins(int)
+	?AddAppArcRegFileL@CPlan@Swi@@QAEXABVTDesC16@@@Z @ 71 NONAME ; void Swi::CPlan::AddAppArcRegFileL(class TDesC16 const &)
+	?ResetAppArcRegFiles@CPlan@Swi@@QAEXXZ @ 72 NONAME ; void Swi::CPlan::ResetAppArcRegFiles(void)
+	?CopyDeviceSupportedLanguagesL@CApplication@Swi@@QAEXABV?$RArray@H@@@Z @ 73 NONAME ; void Swi::CApplication::CopyDeviceSupportedLanguagesL(class RArray<int> const &)
+	?GetMatchingDeviceLanguages@CApplication@Swi@@QAEABV?$RArray@H@@XZ @ 74 NONAME ; class RArray<int> const & Swi::CApplication::GetMatchingDeviceLanguages(void)
+	?PopulateMatchingDeviceLanguagesL@CApplication@Swi@@QAEXH@Z @ 75 NONAME ; void Swi::CApplication::PopulateMatchingDeviceLanguagesL(int)
+	?IsDeviceMatchingLanguage@CApplication@Swi@@QBEHH@Z @ 76 NONAME ; int Swi::CApplication::IsDeviceMatchingLanguage(int) const
+	?SetSisHelper@CApplication@Swi@@QAEXABVRSisHelper@2@@Z @ 77 NONAME ; void Swi::CApplication::SetSisHelper(class Swi::RSisHelper const &)
+	?GetSisHelper@CApplication@Swi@@QAEAAVRSisHelper@2@XZ @ 78 NONAME ; class Swi::RSisHelper & Swi::CApplication::GetSisHelper(void)
+	?GetAffectedApps@CPlan@Swi@@QBEXAAV?$RArray@VTAppUpdateInfo@Swi@@@@@Z @ 79 NONAME ABSENT ; void Swi::CPlan::GetAffectedApps(class RArray<class Swi::TAppUpdateInfo> &) const
+	?ResetAffectedApps@CPlan@Swi@@QAEXXZ @ 80 NONAME ABSENT ; void Swi::CPlan::ResetAffectedApps(void)
+	?SetAffectedApps@CPlan@Swi@@QAEXAAV?$RArray@VTAppUpdateInfo@Swi@@@@@Z @ 81 NONAME ABSENT ; void Swi::CPlan::SetAffectedApps(class RArray<class Swi::TAppUpdateInfo> &)
+
--- a/installationservices/swi/bwins/sislauncherclientU.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/bwins/sislauncherclientU.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -14,4 +14,14 @@
 	?UnregisterSifLauncherMimeTypesL@RSisLauncherSession@Swi@@QAEXABV?$RPointerArray@VHBufC8@@@@@Z @ 13 NONAME ; void Swi::RSisLauncherSession::UnregisterSifLauncherMimeTypesL(class RPointerArray<class HBufC8> const &)
 	?RegisterSifLauncherMimeTypesL@RSisLauncherSession@Swi@@QAEXABV?$RPointerArray@VHBufC8@@@@@Z @ 14 NONAME ; void Swi::RSisLauncherSession::RegisterSifLauncherMimeTypesL(class RPointerArray<class HBufC8> const &)
 	?RunAfterEcomNotificationL@RSisLauncherSession@Swi@@QAEXABV?$RPointerArray@VCSisRegistryFileDescription@Swi@@@@@Z @ 15 NONAME ; void Swi::RSisLauncherSession::RunAfterEcomNotificationL(class RPointerArray<class Swi::CSisRegistryFileDescription> const &)
+	?AsyncParseResourceFileSizeL@RSisLauncherSession@Swi@@QAEXABVRFile@@ABV?$RArray@W4TLanguage@@@@AAVTRequestStatus@@@Z @ 16 NONAME ; void Swi::RSisLauncherSession::AsyncParseResourceFileSizeL(class RFile const &, class RArray<enum TLanguage> const &, class TRequestStatus &)
+	?SyncParseResourceFileL@RSisLauncherSession@Swi@@QAEPAVCApplicationRegistrationData@Usif@@ABVRFile@@ABV?$RArray@W4TLanguage@@@@@Z @ 17 NONAME ; class Usif::CApplicationRegistrationData * Swi::RSisLauncherSession::SyncParseResourceFileL(class RFile const &, class RArray<enum TLanguage> const &)
+	?NotifyNewAppsL@RSisLauncherSession@Swi@@QAEXABV?$RPointerArray@VCApplicationRegistrationData@Usif@@@@@Z @ 18 NONAME ; void Swi::RSisLauncherSession::NotifyNewAppsL(class RPointerArray<class Usif::CApplicationRegistrationData> const &)
+	?AsyncParseResourceFileDataL@RSisLauncherSession@Swi@@QAEPAVCApplicationRegistrationData@Usif@@H@Z @ 19 NONAME ; class Usif::CApplicationRegistrationData * Swi::RSisLauncherSession::AsyncParseResourceFileDataL(int)
+	?Close@RSisLauncherSession@Swi@@QAEXXZ @ 20 NONAME ; void Swi::RSisLauncherSession::Close(void)
+	?NotifyNewAppsL@RSisLauncherSession@Swi@@QAEXABV?$RArray@VTAppUpdateInfo@Swi@@@@@Z @ 21 NONAME ; void Swi::RSisLauncherSession::NotifyNewAppsL(class RArray<class Swi::TAppUpdateInfo> const &)
+	?ExternalizeL@TAppUpdateInfo@Swi@@QBEXAAVRWriteStream@@@Z @ 22 NONAME ; void Swi::TAppUpdateInfo::ExternalizeL(class RWriteStream &) const
+	??0TAppUpdateInfo@Swi@@QAE@VTUid@@W4InstallActions@1@@Z @ 23 NONAME ; Swi::TAppUpdateInfo::TAppUpdateInfo(class TUid, enum Swi::InstallActions)
+	?InternalizeL@TAppUpdateInfo@Swi@@QAEXAAVRReadStream@@@Z @ 24 NONAME ; void Swi::TAppUpdateInfo::InternalizeL(class RReadStream &)
+	??0TAppUpdateInfo@Swi@@QAE@XZ @ 25 NONAME ; Swi::TAppUpdateInfo::TAppUpdateInfo(void)
 
--- a/installationservices/swi/bwins/sisregistryclient_v2U.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/bwins/sisregistryclient_v2U.def	Fri Apr 16 15:05:20 2010 +0300
@@ -192,4 +192,9 @@
 	?GetEquivalentLanguagesL@RSisRegistryHelper@Swi@@QAEXW4TLanguage@@AAV?$RArray@W4TLanguage@@@@@Z @ 191 NONAME ABSENT ; void Swi::RSisRegistryHelper::GetEquivalentLanguagesL(enum TLanguage, class RArray<enum TLanguage> &)
 	?GetMatchingSupportedLanguagesL@RSisRegistryWritableEntry@Swi@@QAEXAAV?$RArray@W4TLanguage@@@@@Z @ 192 NONAME ; void Swi::RSisRegistryWritableEntry::GetMatchingSupportedLanguagesL(class RArray<enum TLanguage> &)
 	?RegistryFilesL@RSisRegistryEntry@Swi@@QAEXAAV?$RPointerArray@VHBufC16@@@@@Z @ 193 NONAME ; void Swi::RSisRegistryEntry::RegistryFilesL(class RPointerArray<class HBufC16> &)
+	?GetComponentIdsForUidL@RSisRegistrySession@Swi@@QAEXAAVTUid@@AAV?$RArray@H@@@Z @ 194 NONAME ; void Swi::RSisRegistrySession::GetComponentIdsForUidL(class TUid &, class RArray<int> &)
+	?UpdateEntryL@RSisRegistryWritableSession@Swi@@QAEXABVCApplication@2@ABVCApplicationRegistrationData@Usif@@ABVCSisRegistryPackage@2@@Z @ 195 NONAME ; void Swi::RSisRegistryWritableSession::UpdateEntryL(class Swi::CApplication const &, class Usif::CApplicationRegistrationData const &, class Swi::CSisRegistryPackage const &)
+	?GetAppUidsForComponentL@RSisRegistrySession@Swi@@QAEXAAHAAV?$RArray@VTUid@@@@@Z @ 196 NONAME ; void Swi::RSisRegistrySession::GetAppUidsForComponentL(int &, class RArray<class TUid> &)
+	?GetComponentIdForPackageL@RSisRegistrySession@Swi@@QBEHABVTDesC16@@0@Z @ 197 NONAME ; int Swi::RSisRegistrySession::GetComponentIdForPackageL(class TDesC16 const &, class TDesC16 const &) const
+	?AddEntryL@RSisRegistryWritableSession@Swi@@QAEXABVCApplicationRegistrationData@Usif@@ABVCSisRegistryPackage@2@@Z @ 198 NONAME ; void Swi::RSisRegistryWritableSession::AddEntryL(class Usif::CApplicationRegistrationData const &, class Swi::CSisRegistryPackage const &)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/bwins/swiutilsu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?GetAllUids@Swi@@YAHAAV?$RArray@VTUid@@@@@Z @ 1 NONAME ; int Swi::GetAllUids(class RArray<class TUid> &)
+
--- a/installationservices/swi/bwins/uissclientU.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/bwins/uissclientU.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -107,4 +107,10 @@
 	?ExternalizeL@CNativeComponentInfo@Swi@@QBEXAAVRWriteStream@@@Z @ 106 NONAME ; void Swi::CNativeComponentInfo::ExternalizeL(class RWriteStream &) const
 	?InternalizeL@CNativeComponentInfo@Swi@@QAEXAAVRReadStream@@@Z @ 107 NONAME ; void Swi::CNativeComponentInfo::InternalizeL(class RReadStream &)
 	?GetComponentInfo@RUissSession@Swi@@QAEXABVTDesC8@@AAVTDes8@@AAVTRequestStatus@@@Z @ 108 NONAME ; void Swi::RUissSession::GetComponentInfo(class TDesC8 const &, class TDes8 &, class TRequestStatus &)
+	?IconFileName@CNativeApplicationInfo@CNativeComponentInfo@Swi@@QBEABVTDesC16@@XZ @ 109 NONAME ; class TDesC16 const & Swi::CNativeComponentInfo::CNativeApplicationInfo::IconFileName(void) const
+	?GroupName@CNativeApplicationInfo@CNativeComponentInfo@Swi@@QBEABVTDesC16@@XZ @ 110 NONAME ; class TDesC16 const & Swi::CNativeComponentInfo::CNativeApplicationInfo::GroupName(void) const
+	?AppUid@CNativeApplicationInfo@CNativeComponentInfo@Swi@@QBEABVTUid@@XZ @ 111 NONAME ; class TUid const & Swi::CNativeComponentInfo::CNativeApplicationInfo::AppUid(void) const
+	?Name@CNativeApplicationInfo@CNativeComponentInfo@Swi@@QBEABVTDesC16@@XZ @ 112 NONAME ; class TDesC16 const & Swi::CNativeComponentInfo::CNativeApplicationInfo::Name(void) const
+	??1CNativeApplicationInfo@CNativeComponentInfo@Swi@@UAE@XZ @ 113 NONAME ; Swi::CNativeComponentInfo::CNativeApplicationInfo::~CNativeApplicationInfo(void)
+	?NewLC@CNativeApplicationInfo@CNativeComponentInfo@Swi@@SAPAV123@ABVTUid@@ABVTDesC16@@11@Z @ 114 NONAME ; class Swi::CNativeComponentInfo::CNativeApplicationInfo * Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(class TUid const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
 
--- a/installationservices/swi/eabi/SecurityManager_v2U.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/eabi/SecurityManager_v2U.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -82,4 +82,6 @@
 	_ZNK3Swi15CSecurityPolicy18MaxNumOfLogEntriesEv @ 81 NONAME
 	_ZN3Swi16CSecurityManager17VerifyControllerLER6TDesC8RKNS_3Sis11CControllerEPNS_26TSignatureValidationResultER13RPointerArrayI25CPKIXValidationResultBaseERS9_I16CX509CertificateEP14TCapabilitySetRiSI_R14TRequestStatusi @ 82 NONAME
 	_ZNK3Swi15CSecurityPolicy23AllowOverwriteOnRestoreEv @ 83 NONAME
+	_ZN3Swi8SecUtils17PublishPackageUidE4TUidRA16_S1_ @ 84 NONAME
+	_ZN3Swi8SecUtils19IsPackageUidPresentE4TUidRA16_KS1_ @ 85 NONAME
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/eabi/apprscparseru.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,12 @@
+EXPORTS
+	_ZN17CAppRegInfoReader4NewLER3RFsRK7TDesC16 @ 1 NONAME
+	_ZN17CAppRegInfoReader5ReadLERK6RArrayI9TLanguageE @ 2 NONAME
+	_ZN17CAppRegInfoReaderD0Ev @ 3 NONAME
+	_ZN17CAppRegInfoReaderD1Ev @ 4 NONAME
+	_ZN17CAppRegInfoReaderD2Ev @ 5 NONAME
+	_ZTI17CAppRegInfoReader @ 6 NONAME
+	_ZTV17CAppRegInfoReader @ 7 NONAME
+	_ZN17CAppRegInfoReader4NewLER3RFsRK5RFile @ 8 NONAME
+	_ZTI15CLocalizableRsc @ 9 NONAME
+	_ZTV15CLocalizableRsc @ 10 NONAME
+
--- a/installationservices/swi/eabi/planU.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/eabi/planU.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -83,4 +83,7 @@
 	_ZNK3Swi12CApplication24IsDeviceMatchingLanguageEi @ 82 NONAME
 	_ZN3Swi12CApplication12SetSisHelperERKNS_10RSisHelperE @ 83 NONAME
 	_ZN3Swi12CApplication12GetSisHelperEv @ 84 NONAME
+	_ZN3Swi5CPlan15SetAffectedAppsER6RArrayINS_14TAppUpdateInfoEE @ 85 NONAME
+	_ZN3Swi5CPlan17ResetAffectedAppsEv @ 86 NONAME
+	_ZNK3Swi5CPlan15GetAffectedAppsER6RArrayINS_14TAppUpdateInfoEE @ 87 NONAME
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/eabi/plan_legacyu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,89 @@
+EXPORTS
+	_ZN3Swi12CApplication10SetInstallERKNS_3Sis11CControllerE @ 1 NONAME
+	_ZN3Swi12CApplication10SetUpgradeERKNS_3Sis11CControllerE @ 2 NONAME
+	_ZN3Swi12CApplication11RemoveFileLERKNS_27CSisRegistryFileDescriptionE @ 3 NONAME
+	_ZN3Swi12CApplication11SetPackageLERKNS_19CSisRegistryPackageE @ 4 NONAME
+	_ZN3Swi12CApplication12AddPropertyLERKNS0_9TPropertyE @ 5 NONAME
+	_ZN3Swi12CApplication13SetUninstallLERKNS_19CSisRegistryPackageE @ 6 NONAME
+	_ZN3Swi12CApplication13SetControllerE4TUid @ 7 NONAME
+	_ZN3Swi12CApplication13SetControllerERKNS_3Sis11CControllerE @ 8 NONAME
+	_ZN3Swi12CApplication15SetAugmentationERKNS_3Sis11CControllerE @ 9 NONAME
+	_ZN3Swi12CApplication17RunFileOnInstallLERKNS_3Sis16CFileDescriptionE5TChar @ 10 NONAME
+	_ZN3Swi12CApplication17SetPartialUpgradeERKNS_3Sis11CControllerE @ 11 NONAME
+	_ZN3Swi12CApplication18SetPreInstalledAppERKNS_3Sis11CControllerE @ 12 NONAME
+	_ZN3Swi12CApplication19RunFileOnUninstallLERKNS_27CSisRegistryFileDescriptionE @ 13 NONAME
+	_ZN3Swi12CApplication20SetPreInstalledPatchERKNS_3Sis11CControllerE @ 14 NONAME
+	_ZN3Swi12CApplication21DisplayFileOnInstallLERKNS_3Sis16CFileDescriptionE5TChar @ 15 NONAME
+	_ZN3Swi12CApplication23AddEmbeddedApplicationLEPS0_ @ 16 NONAME
+	_ZN3Swi12CApplication23DisplayFileOnUninstallLERKNS_27CSisRegistryFileDescriptionE @ 17 NONAME
+	_ZN3Swi12CApplication4NewLEv @ 18 NONAME
+	_ZN3Swi12CApplication5NewLCEv @ 19 NONAME
+	_ZN3Swi12CApplication8AddFileLERKNS_3Sis16CFileDescriptionE5TChar @ 20 NONAME
+	_ZN3Swi12CApplication8SetInROMEv @ 21 NONAME
+	_ZN3Swi15CUserSelections11SetOptionsLERK6RArrayIiE @ 22 NONAME
+	_ZN3Swi5CPlan11SetAppInfoLERKNS_8TAppInfoE @ 23 NONAME
+	_ZN3Swi5CPlan14SetApplicationEPNS_12CApplicationE @ 24 NONAME
+	_ZN3Swi5CPlan25AddInstallFileForProgressEx @ 25 NONAME
+	_ZN3Swi5CPlan26SetApplicationInformationLERK7TDesC16S3_RK8TVersion @ 26 NONAME
+	_ZN3Swi5CPlan27AddUninstallFileForProgressEv @ 27 NONAME
+	_ZN3Swi5CPlan4NewLEv @ 28 NONAME
+	_ZN3Swi5CPlanD0Ev @ 29 NONAME
+	_ZN3Swi5CPlanD1Ev @ 30 NONAME
+	_ZN3Swi5CPlanD2Ev @ 31 NONAME
+	_ZNK3Swi12CApplication10FilesToAddEv @ 32 NONAME
+	_ZNK3Swi12CApplication10PropertiesEv @ 33 NONAME
+	_ZNK3Swi12CApplication11ControllerLEv @ 34 NONAME
+	_ZNK3Swi12CApplication11IsUninstallEv @ 35 NONAME
+	_ZNK3Swi12CApplication13FilesToRemoveEv @ 36 NONAME
+	_ZNK3Swi12CApplication14IsAugmentationEv @ 37 NONAME
+	_ZNK3Swi12CApplication16IsPartialUpgradeEv @ 38 NONAME
+	_ZNK3Swi12CApplication17IsPreInstalledAppEv @ 39 NONAME
+	_ZNK3Swi12CApplication19FilesToRunOnInstallEv @ 40 NONAME
+	_ZNK3Swi12CApplication19IsPreInstalledPatchEv @ 41 NONAME
+	_ZNK3Swi12CApplication20EmbeddedApplicationsEv @ 42 NONAME
+	_ZNK3Swi12CApplication21FilesToRunOnUninstallEv @ 43 NONAME
+	_ZNK3Swi12CApplication23FilesToDisplayOnInstallEv @ 44 NONAME
+	_ZNK3Swi12CApplication25FilesToDisplayOnUninstallEv @ 45 NONAME
+	_ZNK3Swi12CApplication7IsInROMEv @ 46 NONAME
+	_ZNK3Swi12CApplication8PackageLEv @ 47 NONAME
+	_ZNK3Swi12CApplication9IsInstallEv @ 48 NONAME
+	_ZNK3Swi12CApplication9IsUpgradeEv @ 49 NONAME
+	_ZNK3Swi5CPlan12ApplicationLEv @ 50 NONAME
+	_ZNK3Swi5CPlan21FinalProgressBarValueEv @ 51 NONAME
+	_ZNK3Swi5CPlan8AppInfoLEv @ 52 NONAME
+	_ZTIN3Swi12CApplicationE @ 53 NONAME ; #<TI>#
+	_ZTIN3Swi5CPlanE @ 54 NONAME ; #<TI>#
+	_ZTVN3Swi12CApplicationE @ 55 NONAME ; #<VT>#
+	_ZTVN3Swi5CPlanE @ 56 NONAME ; #<VT>#
+	_ZN3Swi12CApplication15AddSisStubFileLERKNS_27CSisRegistryFileDescriptionE @ 57 NONAME
+	_ZNK3Swi12CApplication12CanPropagateEv @ 58 NONAME
+	_ZNK3Swi12CApplication9StubDriveEv @ 59 NONAME
+	_ZN3Swi12CApplication18SetPreInstalledAppEv @ 60 NONAME
+	_ZN3Swi12CApplication20SetPreInstalledPatchEv @ 61 NONAME
+	_ZN3Swi12CApplication11RemoveFileLERK7TDesC16 @ 62 NONAME
+	_ZN3Swi5CPlan23RunFilesBeforeShutdownLERKNS_27CSisRegistryFileDescriptionE @ 63 NONAME
+	_ZNK3Swi5CPlan24FilesToRunBeforeShutdownEv @ 64 NONAME
+	_ZN3Swi12CApplication21SetInstallSuCertBasedEv @ 65 NONAME
+	_ZNK3Swi12CApplication20IsInstallSuCertBasedEv @ 66 NONAME
+	_ZN3Swi12CApplication18SkipFileOnInstallLERKNS_3Sis16CFileDescriptionE5TChar @ 67 NONAME
+	_ZN3Swi12CApplication8AddFileLERKNS_27CSisRegistryFileDescriptionE @ 68 NONAME
+	_ZNK3Swi12CApplication20FilesToSkipOnInstallEv @ 69 NONAME
+	_ZN3Swi12CApplication15SetDrmProtectedEi @ 70 NONAME
+	_ZNK3Swi12CApplication14IsDrmProtectedEv @ 71 NONAME
+	_ZN3Swi5CPlan19ResetAppArcRegFilesEv @ 72 NONAME
+	_ZN3Swi5CPlan20RunFileAfterInstallLERKNS_3Sis16CFileDescriptionE5TChari @ 73 NONAME
+	_ZNK3Swi5CPlan14AppArcRegFilesEv @ 74 NONAME
+	_ZNK3Swi5CPlan15ContainsPluginsEv @ 75 NONAME
+	_ZNK3Swi5CPlan22FilesToRunAfterInstallEv @ 76 NONAME
+	_ZN3Swi5CPlan17AddAppArcRegFileLERK7TDesC16 @ 77 NONAME
+	_ZN3Swi5CPlan18SetContainsPluginsEi @ 78 NONAME
+	_ZN3Swi12CApplication26GetMatchingDeviceLanguagesEv @ 79 NONAME
+	_ZN3Swi12CApplication29CopyDeviceSupportedLanguagesLERK6RArrayIiE @ 80 NONAME
+	_ZN3Swi12CApplication32PopulateMatchingDeviceLanguagesLEi @ 81 NONAME
+	_ZNK3Swi12CApplication24IsDeviceMatchingLanguageEi @ 82 NONAME
+	_ZN3Swi12CApplication12SetSisHelperERKNS_10RSisHelperE @ 83 NONAME
+	_ZN3Swi12CApplication12GetSisHelperEv @ 84 NONAME
+	_ZN3Swi5CPlan15SetAffectedAppsER6RArrayINS_14TAppUpdateInfoEE @ 85 NONAME ABSENT
+	_ZN3Swi5CPlan17ResetAffectedAppsEv @ 86 NONAME ABSENT
+	_ZNK3Swi5CPlan15GetAffectedAppsER6RArrayINS_14TAppUpdateInfoEE @ 87 NONAME ABSENT
+	
--- a/installationservices/swi/eabi/sislauncherclientU.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/eabi/sislauncherclientU.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -13,4 +13,16 @@
 	_ZN3Swi19RSisLauncherSession29RegisterSifLauncherMimeTypesLERK13RPointerArrayI6HBufC8E @ 12 NONAME
 	_ZN3Swi19RSisLauncherSession31UnregisterSifLauncherMimeTypesLERK13RPointerArrayI6HBufC8E @ 13 NONAME
 	_ZN3Swi19RSisLauncherSession25RunAfterEcomNotificationLERK13RPointerArrayINS_27CSisRegistryFileDescriptionEE @ 14 NONAME
+	_ZN3Swi19RSisLauncherSession14NotifyNewAppsLERK13RPointerArrayIN4Usif28CApplicationRegistrationDataEE @ 15 NONAME
+	_ZN3Swi19RSisLauncherSession22SyncParseResourceFileLERK5RFileRK6RArrayI9TLanguageE @ 16 NONAME
+	_ZN3Swi19RSisLauncherSession27AsyncParseResourceFileDataLEi @ 17 NONAME
+	_ZN3Swi19RSisLauncherSession27AsyncParseResourceFileSizeLERK5RFileRK6RArrayI9TLanguageER14TRequestStatus @ 18 NONAME
+	_ZN3Swi19RSisLauncherSession5CloseEv @ 19 NONAME
+	_ZN3Swi14TAppUpdateInfo12InternalizeLER11RReadStream @ 20 NONAME
+	_ZN3Swi14TAppUpdateInfoC1E4TUidNS_14InstallActionsE @ 21 NONAME
+	_ZN3Swi14TAppUpdateInfoC1Ev @ 22 NONAME
+	_ZN3Swi14TAppUpdateInfoC2E4TUidNS_14InstallActionsE @ 23 NONAME
+	_ZN3Swi14TAppUpdateInfoC2Ev @ 24 NONAME
+	_ZN3Swi19RSisLauncherSession14NotifyNewAppsLERK6RArrayINS_14TAppUpdateInfoEE @ 25 NONAME
+	_ZNK3Swi14TAppUpdateInfo12ExternalizeLER12RWriteStream @ 26 NONAME
 
--- a/installationservices/swi/eabi/sisregistryclient_v2U.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/eabi/sisregistryclient_v2U.def	Fri Apr 16 15:05:20 2010 +0300
@@ -154,8 +154,8 @@
 	_ZNK3Swi17RSisRegistryEntry6TrustLEv @ 153 NONAME
 	_ZN3Swi17RSisRegistryEntry12TrustStatusLEv @ 154 NONAME
 	_ZN3Swi18CSisRegistryObject14SetTrustStatusERKNS_15TSisTrustStatusE @ 155 NONAME ABSENT
-	_ZNK3Swi18CSisRegistryObject11TrustStatusEv @ 156 NONAME 
-	_ZNK3Swi18CSisRegistryObject20InstallChainIndiciesEv @ 157 NONAME 
+	_ZNK3Swi18CSisRegistryObject11TrustStatusEv @ 156 NONAME
+	_ZNK3Swi18CSisRegistryObject20InstallChainIndiciesEv @ 157 NONAME
 	_ZN3Swi19RSisRevocationEntry22CheckRevocationStatusLERK6TDesC8 @ 158 NONAME
 	_ZN3Swi19RSisRevocationEntry23CancelRevocationStatusLEv @ 159 NONAME
 	_ZN3Swi19RSisRevocationEntry21CheckRevocationStatusERK6TDesC8R14TRequestStatus @ 160 NONAME
@@ -172,7 +172,7 @@
 	_ZN3Swi17RSisRegistryEntry24RemoveWithLastDependentLEv @ 171 NONAME
 	_ZN3Swi17RSisRegistryEntry27SetRemoveWithLastDependentLE4TUid @ 172 NONAME
 	_ZN3Swi18CSisRegistryObject26SetRemoveWithLastDependentEv @ 173 NONAME ABSENT
-	_ZNK3Swi18CSisRegistryObject23RemoveWithLastDependentEv @ 174 NONAME 
+	_ZNK3Swi18CSisRegistryObject23RemoveWithLastDependentEv @ 174 NONAME
 	_ZN3Swi17RSisRegistryEntry20AugmentationsNumberLEv @ 175 NONAME
 	_ZN3Swi17RSisRegistryEntry10RemovableLEv @ 176 NONAME
 	_ZN3Swi19RSisRegistrySession18RemovablePackagesLER13RPointerArrayINS_19CSisRegistryPackageEE @ 177 NONAME
@@ -207,7 +207,7 @@
 	_ZN3Swi27RSisRegistryWritableSession12UpdateEntryLERKNS_12CApplicationERK6TDesC8RK13RPointerArrayINS_20CSoftwareTypeRegInfoEEx @ 206 NONAME
 	_ZN3Swi27RSisRegistryWritableSession9AddEntryLERKNS_12CApplicationERK6TDesC8RK13RPointerArrayINS_20CSoftwareTypeRegInfoEEx @ 207 NONAME
 	_ZN3Swi19RSisRegistrySession21GetComponentIdForUidLERK4TUid @ 208 NONAME
-	_ZN3Swi19CSisRegistryPackage8SetNameLERK7TDesC16 @ 209 NONAME 
+	_ZN3Swi19CSisRegistryPackage8SetNameLERK7TDesC16 @ 209 NONAME
 	_ZN3Swi18RSisRegistryHelper23GetEquivalentLanguagesLE9TLanguageR6RArrayIS1_E @ 210 NONAME ABSENT
 	_ZN3Swi18RSisRegistryHelper5CloseEv @ 211 NONAME ABSENT
 	_ZN3Swi18RSisRegistryHelper7ConnectEv @ 212 NONAME ABSENT
@@ -215,5 +215,9 @@
 	_ZN3Swi18RSisRegistryHelperC2Ev @ 214 NONAME ABSENT
 	_ZN3Swi25RSisRegistryWritableEntry30GetMatchingSupportedLanguagesLER6RArrayI9TLanguageE @ 215 NONAME
 	_ZN3Swi17RSisRegistryEntry14RegistryFilesLER13RPointerArrayI7HBufC16E @ 216 NONAME
+	_ZN3Swi19RSisRegistrySession22GetComponentIdsForUidLER4TUidR6RArrayIiE @ 217 NONAME
+	_ZN3Swi19RSisRegistrySession23GetAppUidsForComponentLERiR6RArrayI4TUidE @ 218 NONAME
+	_ZN3Swi27RSisRegistryWritableSession12UpdateEntryLERKNS_12CApplicationERKN4Usif28CApplicationRegistrationDataERKNS_19CSisRegistryPackageE @ 219 NONAME
+	_ZN3Swi27RSisRegistryWritableSession9AddEntryLERKN4Usif28CApplicationRegistrationDataERKNS_19CSisRegistryPackageE @ 220 NONAME
+	_ZNK3Swi19RSisRegistrySession25GetComponentIdForPackageLERK7TDesC16S3_ @ 221 NONAME
 
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/eabi/swiutilsu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_ZN3Swi10GetAllUidsER6RArrayI4TUidE @ 1 NONAME
+
--- a/installationservices/swi/eabi/uissclientU.DEF	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/eabi/uissclientU.DEF	Fri Apr 16 15:05:20 2010 +0300
@@ -162,4 +162,14 @@
 	_ZTIN3Swi20CNativeComponentInfoE @ 161 NONAME
 	_ZTVN3Swi20CNativeComponentInfoE @ 162 NONAME
 	_ZN3Swi12RUissSession16GetComponentInfoERK6TDesC8R5TDes8R14TRequestStatus @ 163 NONAME
+	_ZN3Swi20CNativeComponentInfo22CNativeApplicationInfo5NewLCERK4TUidRK7TDesC16S7_S7_ @ 164 NONAME
+	_ZN3Swi20CNativeComponentInfo22CNativeApplicationInfoD0Ev @ 165 NONAME
+	_ZN3Swi20CNativeComponentInfo22CNativeApplicationInfoD1Ev @ 166 NONAME
+	_ZN3Swi20CNativeComponentInfo22CNativeApplicationInfoD2Ev @ 167 NONAME
+	_ZNK3Swi20CNativeComponentInfo22CNativeApplicationInfo12IconFileNameEv @ 168 NONAME
+	_ZNK3Swi20CNativeComponentInfo22CNativeApplicationInfo4NameEv @ 169 NONAME
+	_ZNK3Swi20CNativeComponentInfo22CNativeApplicationInfo6AppUidEv @ 170 NONAME
+	_ZNK3Swi20CNativeComponentInfo22CNativeApplicationInfo9GroupNameEv @ 171 NONAME
+	_ZTIN3Swi20CNativeComponentInfo22CNativeApplicationInfoE @ 172 NONAME
+	_ZTVN3Swi20CNativeComponentInfo22CNativeApplicationInfoE @ 173 NONAME
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/group/apprscparser.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file
+ apprscparser
+*/
+
+target      apprscparser.dll
+CAPABILITY 	All -Tcb
+targettype  DLL
+UID			0x1000008D 0x2002E943
+VENDORID 	0x70000001
+
+USERINCLUDE	../source/apprscparser
+USERINCLUDE	../inc
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN 
+
+SOURCEPATH	../source/apprscparser
+
+SOURCE		apprscparser.cpp
+
+LIBRARY euser.lib
+LIBRARY efsrv.lib
+LIBRARY estor.lib
+LIBRARY bafl.lib
+LIBRARY scrclient.lib
+
+SMPSAFE
\ No newline at end of file
--- a/installationservices/swi/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -57,6 +57,8 @@
 ../inc/swi/sistruststatus.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(swi/sistruststatus.h)
 ../inc/swi/sisregistrylog.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(swi/sisregistrylog.h)
 ../inc/swi/installtypes.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(swi/installtypes.h)
+../source/swiutils/swiutils.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(swi/swiutils.h)
+../inc/swi/ipcutil.h 	  SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(swi/ipcutil.h)
 
 // ROMKIT include
 ../inc/swi.iby /epoc32/rom/include/swi.iby
@@ -90,6 +92,7 @@
 devinfosupportclient.mmp
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+apprscparser.mmp
 swtypereginfo.mmp
 #else
 integrityservices.mmp
@@ -124,10 +127,10 @@
 sishelper_tshell.mmp
 sislauncherserver_tshell.mmp
 #endif
+swiutils.mmp
 #endif
 #endif
 
-
 PRJ_TESTMMPFILES
 
 makefile ../test/tdevcerts/maketestsis.fil
@@ -210,7 +213,7 @@
 ../test/tsisfile/data/signedsis/swicertstore.dat /epoc32/winscw/c/tswi/certstore/tsis_swicertstore.dat
 ../test/tsisfile/data/signedsis/swicertstore_mandatory.dat /epoc32/winscw/c/tswi/certstore/swicertstore_mandatory.dat
 ../test/tsisfile/data/signedsis/swicertstore_sucert.dat /epoc32/winscw/c/tswi/certstore/swicertstore_sucert.dat
-
+../test/trevocation/swicertstore.dat /epoc32/winscw/c/tswi/trevocation/swicertstore.dat
 
 ../test/tsishelper/scripts/script /epoc32/winscw/c/tswi/tsishelper/scripts/tsishelper.script
 ../test/tsishelper/scripts/ini /epoc32/winscw/c/tswi/tsishelper/scripts/tsishelper.ini
@@ -514,6 +517,10 @@
 ../test/tuiscriptadaptors/scripts/tcleanupinfrastructure_armv5.ini /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/tcleanupinfrastructure_armv5.ini
 ../test/tuiscriptadaptors/scripts/tcleanupinfrastructure_armv5.script /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/tcleanupinfrastructure_armv5.script
 ../test/tsisfile/data/files/uninstall_cdrive.log /epoc32/winscw/c/tswi/tuiscriptadaptors/data/uninstall_cdrive.log
+../test/tuiscriptadaptors/scripts/tswiappregintegration.script /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/tswiappregintegration.script
+../test/tuiscriptadaptors/scripts/tswiappregintegration_stub.script /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/tswiappregintegration_stub.script
+../test/tuiscriptadaptors/scripts/tswiappregintegration.ini /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/tswiappregintegration.ini
+../test/tuiscriptadaptors/scripts/swiappregintegration_base01_stub.sis /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/swiappregintegration_base01_stub.sis 
 #else
 ../test/tuiscriptadaptors/scripts/tcleanupinfrastructure_legacy.ini /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/tcleanupinfrastructure_legacy.ini
 ../test/tuiscriptadaptors/scripts/tcleanupinfrastructure_legacy.script /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/tcleanupinfrastructure.script
@@ -890,6 +897,8 @@
 ../test/tuiscriptadaptors/scripts/testfotaupdate.ini		/epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/testfotaupdate.ini
 ../test/tuiscriptadaptors/scripts/testfotaupdate1.script	/epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/testfotaupdate1.script
 ../test/tuiscriptadaptors/scripts/testfotaupdate2.script	/epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/testfotaupdate2.script
+../test/tuiscriptadaptors/scripts/fotaupdatestubapp1.sis		/epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/fotaupdatestubapp1.sis
+../test/tuiscriptadaptors/scripts/fotaupdatestubapp2.sis /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/fotaupdatestubapp2.sis
 
 // path substitution
 ../test/tpathsubst/scripts/tpathsubst.script /epoc32/winscw/c/tswi/tpathsubst/scripts/tpathsubst.script
@@ -929,19 +938,43 @@
 ../test/trevocation/scripts/tRevocation.ini	/epoc32/winscw/c/tswi/trevocation/scripts/trevocation.ini
 ../test/trevocation/scripts/tRevocation.script	/epoc32/winscw/c/tswi/trevocation/scripts/trevocation.script
 ../test/trevocation/scripts/tRevocation_unsigned.script	/epoc32/winscw/c/tswi/trevocation/scripts/trevocation_unsigned.script
-../test/trevocation/sisInteg/winscw/ocsp_01.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_01.sis
-../test/trevocation/sisInteg/winscw/ocsp_02.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_02.sis
-../test/trevocation/sisInteg/winscw/ocsp_03.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_03.sis
-../test/trevocation/sisInteg/winscw/ocsp_04.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_04.sis
-../test/trevocation/sisInteg/winscw/ocsp_05.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_05.sis
-../test/trevocation/sisInteg/winscw/ocsprevocation.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsprevocation.sis
-../test/trevocation/sisInteg/winscw/ocsprevocation-sub1.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsprevocation-sub1.sis
-../test/trevocation/sisInteg/armv5/ocsp_01.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_01.sis
-../test/trevocation/sisInteg/armv5/ocsp_02.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_02.sis
-../test/trevocation/sisInteg/armv5/ocsp_03.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_03.sis
-../test/trevocation/sisInteg/armv5/ocsp_04.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_04.sis
-../test/trevocation/sisInteg/armv5/ocsprevocation.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsprevocation.sis
-../test/trevocation/sisInteg/armv5/ocsprevocation-sub1.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsprevocation-sub1.sis
+../test/trevocation/scripts/trevocationocsp_emulator.script	/epoc32/winscw/c/tswi/trevocation/scripts/trevocationocsp_emulator.script
+../test/trevocation/scripts/trevocationocsp_emulator_pre.bat /epoc32/winscw/c/tswi/trevocation/scripts/trevocationocsp_emulator_pre.bat
+../test/trevocation/scripts/trevocationocsp_emulator_post.bat /epoc32/winscw/c/tswi/trevocation/scripts/trevocationocsp_emulator_post.bat
+../test/trevocation/sisinteg/winscw/ocsp_01.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_01.sis
+../test/trevocation/sisinteg/winscw/ocsp_02.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_02.sis
+../test/trevocation/sisinteg/winscw/ocsp_03.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_03.sis
+../test/trevocation/sisinteg/winscw/ocsp_04.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_04.sis
+../test/trevocation/sisinteg/winscw/ocsp_05.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsp_05.sis
+../test/trevocation/sisinteg/winscw/certifiedsignedval.sis /epoc32/winscw/c/tswi/trevocation/data/certifiedsignedval.sis
+../test/trevocation/sisinteg/winscw/certifiedsignedverisignval.sis /epoc32/winscw/c/tswi/trevocation/data/certifiedsignedverisignval.sis
+../test/trevocation/sisinteg/winscw/expresssignedval.sis /epoc32/winscw/c/tswi/trevocation/data/expresssignedval.sis
+../test/trevocation/sisinteg/winscw/allsignedval.sis /epoc32/winscw/c/tswi/trevocation/data/allsignedval.sis
+../test/trevocation/sisinteg/winscw/selfsignedval.sis /epoc32/winscw/c/tswi/trevocation/data/selfsignedval.sis
+../test/trevocation/sisinteg/winscw/certifiedsignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/certifiedsignedrev.sis
+../test/trevocation/sisinteg/winscw/certifiedsignedverisignrev.sis /epoc32/winscw/c/tswi/trevocation/data/certifiedsignedverisignrev.sis
+../test/trevocation/sisinteg/winscw/expresssignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/expresssignedrev.sis
+../test/trevocation/sisinteg/winscw/allsignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/allsignedrev.sis
+../test/trevocation/sisinteg/winscw/selfsignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/selfsignedrev.sis
+../test/trevocation/sisinteg/winscw/ocsprevocation.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsprevocation.sis
+../test/trevocation/sisinteg/winscw/ocsprevocation-sub1.sis	/epoc32/winscw/c/tswi/trevocation/data/ocsprevocation-sub1.sis
+../test/trevocation/sisinteg/armv5/ocsp_01.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_01.sis
+../test/trevocation/sisinteg/armv5/ocsp_02.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_02.sis
+../test/trevocation/sisinteg/armv5/ocsp_03.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_03.sis
+../test/trevocation/sisinteg/armv5/ocsp_04.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsp_04.sis
+../test/trevocation/sisinteg/armv5/certifiedsignedval.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/certifiedsignedval.sis
+../test/trevocation/sisinteg/armv5/certifiedsignedverisignval.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/certifiedsignedverisignval.sis
+../test/trevocation/sisinteg/armv5/expresssignedval.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/expresssignedval.sis
+../test/trevocation/sisinteg/armv5/allsignedval.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/allsignedval.sis
+../test/trevocation/sisinteg/armv5/selfsignedval.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/selfsignedval.sis
+../test/trevocation/sisinteg/armv5/certifiedsignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/certifiedsignedrev.sis
+../test/trevocation/sisinteg/armv5/certifiedsignedverisignrev.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/certifiedsignedverisignrev.sis
+../test/trevocation/sisinteg/armv5/expresssignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/expresssignedrev.sis
+../test/trevocation/sisinteg/armv5/allsignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/allsignedrev.sis
+../test/trevocation/sisinteg/armv5/selfsignedrev.sis /epoc32/winscw/c/tswi/trevocation/data/armv5/selfsignedrev.sis
+
+../test/trevocation/sisinteg/armv5/ocsprevocation.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsprevocation.sis
+../test/trevocation/sisinteg/armv5/ocsprevocation-sub1.sis	/epoc32/winscw/c/tswi/trevocation/data/armv5/ocsprevocation-sub1.sis
 
 // legacy SIS file
 ../test/tsisfile/data/files/legacy.sis /epoc32/winscw/c/tswi/tsis/data/legacy.sis
@@ -992,6 +1025,8 @@
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 ../test/tsisregistrytest/Scripts/batchfiles/tsisregistrytest_post.bat /epoc32/winscw/c/tswi/tsisregistrytest/scripts/batchfiles/tsisregistrytest_post.bat
 ../test/tsisregistrytest/Scripts/batchfiles/testlogging_pre.bat /epoc32/winscw/c/tswi/tsisregistrytest/scripts/batchfiles/testlogging_pre.bat
+../test/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_pre.bat /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_pre.bat
+../test/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_post.bat /epoc32/winscw/c/tswi/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_post.bat
 #else
 ../test/tsisregistrytest_legacy/Scripts/batchfiles/tsisregistrytest_post.bat /epoc32/winscw/c/tswi/tsisregistrytest/scripts/batchfiles/tsisregistrytest_post.bat
 ../test/tsisregistrytest_legacy/Scripts/batchfiles/testlogging_pre.bat /epoc32/winscw/c/tswi/tsisregistrytest/scripts/batchfiles/testlogging_pre.bat
--- a/installationservices/swi/group/installserver.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/group/installserver.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -90,6 +90,7 @@
 SOURCEPATH	../source/swis/server
 SOURCE registrywrapper.cpp
 SOURCE installswtypehelper.cpp
+SOURCE appregextractor.cpp
 #endif
 
 // The following is also included in sishelper; to avoid creating a new 
@@ -131,8 +132,10 @@
 LIBRARY sectcbutil.lib
 LIBRARY swiobserverclient.lib
 LIBRARY swiobservedinfo.lib
-
-
+LIBRARY secsettingsclient.lib
+LIBRARY x509.lib
+LIBRARY pkixcertbase.lib
+ 
 #ifdef WINS
 library			emulator.lib
 #endif
@@ -141,3 +144,4 @@
 WIN32_LIBRARY		kernel32.lib
 end
 SMPSAFE
+
--- a/installationservices/swi/group/plan.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/group/plan.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -50,6 +50,12 @@
 SOURCEPATH	../source/swis/server
 SOURCE securityinfo.cpp
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+DEFFILE		plan.DEF
+#else
+DEFFILE		plan_legacy.def
+#endif
+
 LIBRARY euser.lib
 LIBRARY estor.lib
 LIBRARY uissclient.lib // Needed for TAppInfo
--- a/installationservices/swi/group/security_swi.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/group/security_swi.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_swi
 source	\sf\mw\appinstall\installationservices\swi\bwins
 source \sf\mw\appinstall\installationservices\swi\docs
--- a/installationservices/swi/group/sislauncherclient.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/group/sislauncherclient.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -54,5 +54,7 @@
 LIBRARY		efsrv.lib
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 LIBRARY		swtypereginfo.lib
+library 	scrclient.lib
+library		ipcstream.lib
 #endif
 SMPSAFE
--- a/installationservices/swi/group/sislauncherserver.mmh	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/group/sislauncherserver.mmh	Fri Apr 16 15:05:20 2010 +0300
@@ -35,6 +35,7 @@
 userinclude		../source/sisregistry/common
 userinclude 	../inc/swi
 userinclude 	../inc
+userinclude 	../source/apprscparser
 
 sourcepath	../source/sislauncher/server
 
@@ -42,10 +43,10 @@
 source		sislaunchersession.cpp
 source		sislauncherstartup.cpp
 source		threadmonitor.cpp
-source      queueprocessor.cpp
+source		queueprocessor.cpp
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-SOURCE swtypereginfoparser.cpp
+SOURCE		swtypereginfoparser.cpp
 #endif
 
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
@@ -55,9 +56,14 @@
 library		estor.lib
 library		ecom.lib
 library		securitymanager.lib
+
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 LIBRARY		xmlframework.lib
 LIBRARY		bafl.lib
 LIBRARY		swtypereginfo.lib
+library		apprscparser.lib
+library		ipcstream.lib
+library		scrclient.lib
+library 	sislauncherclient.lib
 #endif
 
--- a/installationservices/swi/group/sisregistryclient.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/group/sisregistryclient.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -91,6 +91,8 @@
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 LIBRARY		swtypereginfo.lib
+LIBRARY		scrclient.lib
+library		ipcstream.lib
 #else
 LIBRARY         scsclient.lib
 LIBRARY		integrityservices.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/group/swiutils.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* swiutils.mmp
+*
+*/
+
+
+/**
+ @file
+ swiutils
+*/
+
+target      swiutils.dll
+CAPABILITY 	All -Tcb
+targettype  DLL
+UID			0x1000008D 0x2002D4F3
+VENDORID 	0x70000001
+
+USERINCLUDE ../inc
+USERINCLUDE ../inc/swi
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN 
+
+SOURCEPATH	../source/swiutils
+SOURCE		swiutils.cpp
+
+LIBRARY euser.lib
+SMPSAFE
\ No newline at end of file
--- a/installationservices/swi/inc/scrhelperutil.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/scrhelperutil.h	Fri Apr 16 15:05:20 2010 +0300
@@ -132,6 +132,9 @@
 	HBufC8* GetLogInfoLC(const Usif::RSoftwareComponentRegistry& aScrSession, TInt aMaxLogEntries);
 	
 	void WriteToScrL(Usif::RSoftwareComponentRegistry& aScrSession, Usif::TComponentId& aCompId, CSisRegistryObject& aObject, Usif::TScrComponentOperationType aOpType);
+	void AddApplicationEntryL(Usif::RSoftwareComponentRegistry& aScrSession, Usif::TComponentId& aCompId, const Usif::CApplicationRegistrationData& aApplicationRegistrationData);
+	void DeleteApplicationEntriesL(Usif::RSoftwareComponentRegistry& aScrSession, Usif::TComponentId& aCompId);
+	void DeleteApplicationEntryL(Usif::RSoftwareComponentRegistry& aScrSession, const TUid& aAppUId);
 	
 	} // End of name space ScrHelperUtil
 	
--- a/installationservices/swi/inc/secutils.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/secutils.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -23,9 +23,13 @@
  @internalTechnology
 */
 
+#ifndef __SECUTILS_H__
+#define __SECUTILS_H__
+
 #include <e32std.h>
 #include <f32file.h>
 #include <e32uid.h>
+#include "swi/swiutils.h"
 
 namespace Swi
 {
@@ -83,6 +87,20 @@
 	 *              caller.
 	 */	
 	IMPORT_C static HBufC* HexHashL(const TDesC& aName);
+	   
+    /**
+     * Appends a Uid to the buffer and publishes the same.
+     * @param aBuf The buffer containing the list of Uids that is published.
+     * @param aUid The UID of the package which has been processed.
+     */
+    IMPORT_C static TInt PublishPackageUid(TUid aUid, TUid (&aUidList)[KMaxUidCount]);
+    
+    /**
+     * Checks if the given Uid is present in the buffer that contains the list of Uids published.
+     * @param aBuf The buffer containing the list of Uids that is published.
+     * @param aUid The UID of the package which to be verified.
+     */
+    IMPORT_C static TBool IsPackageUidPresent(TUid aUid, const TUid (&aUidList)[KMaxUidCount]);
 	};
 
 inline TBool SecUtils::IsExe(const TEntry& aEntry)
@@ -95,3 +113,5 @@
 	return (aEntry[0].iUid == KDynamicLibraryUidValue) ? ETrue : EFalse;
 	}
 } // namespace Swi
+
+#endif
--- a/installationservices/swi/inc/sislauncherclient.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/sislauncherclient.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -29,117 +29,190 @@
 #include <e32base.h>
 #include <f32file.h>
 #include "sislauncherdefs.h"
-
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK  
+#include <usif/scr/appregentries.h>
+#endif
 const TInt KDefaultShutdownTimeout = 10000000;
 
 namespace Swi
 {
 class CSisRegistryFileDescription;
 class CSoftwareTypeRegInfo;
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK 
+class TAppUpdateInfo;
+#endif
 
 class RSisLauncherSession : public RSessionBase
-	{
+    {
 public:
-	/**
-	 * Connects to the SIS launcher server.
-	 */
-	IMPORT_C TInt Connect();
-	
-	/**
-	 * Launches an executable.
-	 *
-	 * @param aFileName The file name of the executable.
-	 * @param aWait     If true, then this call waits for the executable to terminate.
-	 */
-	IMPORT_C void RunExecutableL(const TDesC& aFileName, TBool aWait);
-	
-	/**
-	 * Opens a document.
-	 * @param aFileName The file name of the document to open.
-	 * @param aWait     If true, then this call waits for the document to close.
-	 */
-	IMPORT_C void StartDocumentL(const TDesC& aFileName, TBool aWait);
-	
-	/**
-	 * Opens a document using the mime-type to determine the helper application.
-	 * @param aFileName The file name of the document to open.
-	 * @param aMimeType The mime type of the document.
-	 * @param aWait     If true, then this call waits for the document to close.
-	 */
-	IMPORT_C void StartByMimeL(const TDesC& aFileName, const TDesC8& aMimeType, TBool aWait);
-	
+    /**
+     * Connects to the SIS launcher server.
+     */
+    IMPORT_C TInt Connect();
+    
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+    /**
+     * Closes to the SIS launcher session.
+     */
+    IMPORT_C void Close();
+#endif
+    
+    /**
+     * Launches an executable.
+     *
+     * @param aFileName The file name of the executable.
+     * @param aWait     If true, then this call waits for the executable to terminate.
+     */
+    IMPORT_C void RunExecutableL(const TDesC& aFileName, TBool aWait);
+    
+    /**
+     * Opens a document.
+     * @param aFileName The file name of the document to open.
+     * @param aWait     If true, then this call waits for the document to close.
+     */
+    IMPORT_C void StartDocumentL(const TDesC& aFileName, TBool aWait);
+    
+    /**
+     * Opens a document using the mime-type to determine the helper application.
+     * @param aFileName The file name of the document to open.
+     * @param aMimeType The mime type of the document.
+     * @param aWait     If true, then this call waits for the document to close.
+     */
+    IMPORT_C void StartByMimeL(const TDesC& aFileName, const TDesC8& aMimeType, TBool aWait);
+    
 
-	/**
-	 * Opens a document.
-	 * @param aFile The file handle of the document to open.
-	 * @param aWait     If true, then this call waits for the document to close.
-	 */
-	IMPORT_C void StartDocumentL(RFile& aFile, TBool aWait);
-	
-	/**
-	 * Opens a document using the mime-type to determine the helper application.
-	 * @param aFile The file handle of the document to open.
-	 * @param aMimeType The mime type of the document.
-	 * @param aWait     If true, then this call waits for the document to close.
-	 */
-	IMPORT_C void StartByMimeL(RFile& aFile, const TDesC8& aMimeType, TBool aWait);
-	
-	IMPORT_C void ShutdownAllL();
-	
-	/**
- 	 * Checks if the application is running. This function will leave with error KErrInUse if an 
- 	 * application is busy. Else it will leave with error KErrNone
- 	 *
- 	 * @param aUid The UID of the application to check.
-	 */
-	
-	IMPORT_C void CheckApplicationInUseL(RArray<TAppInUse>& aUidList);
+    /**
+     * Opens a document.
+     * @param aFile The file handle of the document to open.
+     * @param aWait     If true, then this call waits for the document to close.
+     */
+    IMPORT_C void StartDocumentL(RFile& aFile, TBool aWait);
+    
+    /**
+     * Opens a document using the mime-type to determine the helper application.
+     * @param aFile The file handle of the document to open.
+     * @param aMimeType The mime type of the document.
+     * @param aWait     If true, then this call waits for the document to close.
+     */
+    IMPORT_C void StartByMimeL(RFile& aFile, const TDesC8& aMimeType, TBool aWait);
+    
+    IMPORT_C void ShutdownAllL();
+    
+    /**
+     * Checks if the application is running. This function will leave with error KErrInUse if an 
+     * application is busy. Else it will leave with error KErrNone
+     *
+     * @param aUid The UID of the application to check.
+     */
+    
+    IMPORT_C void CheckApplicationInUseL(RArray<TAppInUse>& aUidList);
 
-	/**
- 	 * Shuts down an application. If the aUid parameter is null then all non system/hidden
- 	 * applications are closed. This function will leave with error KErrInUse if an 
- 	 * application is busy.
- 	 *
- 	 * @param aUid The UID of the application to close.
- 	 * @param aTimeout Timeout value in microseconds used when shutting down individual exe.
-	 */
-	IMPORT_C void ShutdownL(const RArray<TUid>& aUidList, TInt aTimeout);
+    /**
+     * Shuts down an application. If the aUid parameter is null then all non system/hidden
+     * applications are closed. This function will leave with error KErrInUse if an 
+     * application is busy.
+     *
+     * @param aUid The UID of the application to close.
+     * @param aTimeout Timeout value in microseconds used when shutting down individual exe.
+     */
+    IMPORT_C void ShutdownL(const RArray<TUid>& aUidList, TInt aTimeout);
 
-	/**
-	 * Notifies APPARC of new registration files. Causes APPARC to rescan its
-	 * import/apps directory, so avoid calling unnecessarily. This call
-	 * supports DEF084847 by telling APPARC which apps to treat as registered
-	 * even though installation is not quite complete.
-	 *
-	 * @param aFiles The array of filenames that have appeared during this installation.
-	 */
-	IMPORT_C void NotifyNewAppsL(const RPointerArray<TDesC>& aFiles);
+    /**
+     * Notifies APPARC of new registration files. Causes APPARC to rescan its
+     * import/apps directory, so avoid calling unnecessarily. This call
+     * supports DEF084847 by telling APPARC which apps to treat as registered
+     * even though installation is not quite complete.
+     *
+     * @param aFiles The array of filenames that have appeared during this installation.
+     */
+    IMPORT_C void NotifyNewAppsL(const RPointerArray<TDesC>& aFiles);
 
-	/**
-	 * Waits for ECOM to notify of changes before attempting to launch the files.
-	 * Files are opened client side before sending them to the server to avoid capability issues. 
-	 *  
-	 * As SWI may shutdown before ECOM will process delivered plug-ins 
-	 * the launcher will not terminate the usual 2secs after the last client. Instead a 
-	 * longer running timeout is used for two reasons.
-	 * a) to allow ECOM a 'reasonable' amount of time to do its work - we don't want to 
-	 *    kill the launcher while ECOM is still busy.
-	 * b) to shutdown correctly where SWI has incorrectly identified a plug-in resource file -
-	 *    we don't want to hang around forever waiting for an event that will never come.  
-	 * */
-	IMPORT_C void RunAfterEcomNotificationL(const RPointerArray<CSisRegistryFileDescription>& aFileList);
+    /**
+     * Waits for ECOM to notify of changes before attempting to launch the files.
+     * Files are opened client side before sending them to the server to avoid capability issues. 
+     *  
+     * As SWI may shutdown before ECOM will process delivered plug-ins 
+     * the launcher will not terminate the usual 2secs after the last client. Instead a 
+     * longer running timeout is used for two reasons.
+     * a) to allow ECOM a 'reasonable' amount of time to do its work - we don't want to 
+     *    kill the launcher while ECOM is still busy.
+     * b) to shutdown correctly where SWI has incorrectly identified a plug-in resource file -
+     *    we don't want to hang around forever waiting for an event that will never come.  
+     * */
+    IMPORT_C void RunAfterEcomNotificationL(const RPointerArray<CSisRegistryFileDescription>& aFileList);
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-	IMPORT_C void ParseSwTypeRegFileL(RFile& aFile, RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray);
+    IMPORT_C void ParseSwTypeRegFileL(RFile& aFile, RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray);
 
-	IMPORT_C void RegisterSifLauncherMimeTypesL(const RPointerArray<HBufC8>& aMimeTypes);
+    IMPORT_C void RegisterSifLauncherMimeTypesL(const RPointerArray<HBufC8>& aMimeTypes);
 
-	IMPORT_C void UnregisterSifLauncherMimeTypesL(const RPointerArray<HBufC8>& aMimeTypes);
-
+    IMPORT_C void UnregisterSifLauncherMimeTypesL(const RPointerArray<HBufC8>& aMimeTypes);
+            
+    /**
+    * Populate CApplicationRegistrationData from the specified resource file, for the given languages and pass the data size back to the caller in TRequestStatus
+    *
+    * @param An already opened file handle.
+    * @param aAppLanguages List of the languages
+    * @return Return size of buffer needed in TRequestStatus
+    */
+    IMPORT_C void AsyncParseResourceFileSizeL(const RFile& aRegistrationFile, const RArray<TLanguage>& aAppLanguages, TRequestStatus& aStatus);
+    
+	/**
+    * Return populate CApplicationRegistrationData 
+    *
+    * @param aDataSize Size of buffer needed for CApplicationRegistrationData.
+    * @return Pointer to a CApplicationRegistrationData (caller owns it)
+    */
+    IMPORT_C Usif::CApplicationRegistrationData*  AsyncParseResourceFileDataL(TInt aDataSize);
+    
+	/**
+    * @param aRegistrationFileName registration file name to be parsed
+    * @return Pointer to a CApplicationRegistrationData (caller owns it)
+    */    
+    IMPORT_C Usif::CApplicationRegistrationData* SyncParseResourceFileL(const RFile& aRegistrationFile, const RArray<TLanguage>& aAppLanguages); 
+       
+	/**
+     * Notifies APPARC of new applications. This call  
+     * informs APPARC which apps to treat as registered
+     * even though installation is not quite complete.
+     *
+     * @param aFiles The array of application information to be treated as registered before this current installation completes.
+     */
+    IMPORT_C void NotifyNewAppsL(const RPointerArray<Usif::CApplicationRegistrationData>& aAppRegData);
+    
+    /**
+     * Notifies APPARC of applications which are removed/upgraded during installation       
+     * @param aAppUpdateInfo , array of app uids along with the action(remove/upgrade)
+     */
+    IMPORT_C void NotifyNewAppsL(const RArray<TAppUpdateInfo>& aAppUpdateInfo);
+    
 private:
-	void RegisterSifLauncherMimeTypesImplL(const RPointerArray<HBufC8>& aMimeTypes, TBool aRegister);
+    void RegisterSifLauncherMimeTypesImplL(const RPointerArray<HBufC8>& aMimeTypes, TBool aRegister);
+    HBufC8* iBuffForLanguages;        
 #endif
     };
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK 	
+enum InstallActions
+       {
+       EAppInstalled = 0,
+       EAppUninstalled
+       };
+
+class TAppUpdateInfo
+    {
+public:    
+    IMPORT_C void InternalizeL(RReadStream& aReadStream);
+    IMPORT_C void ExternalizeL(RWriteStream& aWriteStream) const; 
+    IMPORT_C TAppUpdateInfo(TUid aAppUid, InstallActions aAction);
+    IMPORT_C TAppUpdateInfo();    
+public:
+    TUid iAppUid;
+    InstallActions iAction;
+    };
+#endif
+
 } //namespace
 
 #endif
+
--- a/installationservices/swi/inc/sisregistrywritablesession.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/sisregistrywritablesession.h	Fri Apr 16 15:05:20 2010 +0300
@@ -30,6 +30,7 @@
 #include "sisregistrysession.h"
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include <usif/usifcommon.h>
+#include <usif/scr/appregentries.h>
 #endif
 namespace Swi
 {
@@ -203,8 +204,11 @@
 	 */
 	IMPORT_C void UpdateEntryL(const CApplication& aApplication, const TDesC8& aController, const RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, TInt64 aTransactionID);
 
+	IMPORT_C void AddEntryL(const Usif::CApplicationRegistrationData& aApparcRegFileData, const CSisRegistryPackage& aSisRegistryPackage);
+	IMPORT_C void UpdateEntryL(const CApplication& aApplication, const Usif::CApplicationRegistrationData& aApparcRegFileData, const CSisRegistryPackage& aSisRegistryPackage);
 private:
 	void SetComponentStateL(TComponentId aComponentId, TScomoState aState);
+	TInt UserSelectedLanguageIndexL(const CApplication& aApplication) const;
 #endif
 	void AddEntryImplL(TInt aMessage, const CApplication& aApplication, const TDesC8& aController, TInt64 aTransactionID, TIpcArgs& aIpcArgs);
 	void UpdateEntryImplL(TInt aMessage, const CApplication& aApplication, const TDesC8& aController, TInt64 aTransactionID, TIpcArgs& aIpcArgs);
--- a/installationservices/swi/inc/swi.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/swi.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -36,6 +36,7 @@
 file=ABI_DIR\BUILD_DIR\sislauncherserver.exe		sys\bin\sislauncherserver.exe
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+file=ABI_DIR\BUILD_DIR\apprscparser.dll			sys\bin\apprscparser.dll
 file=ABI_DIR\BUILD_DIR\swtypereginfo.dll		sys\bin\swtypereginfo.dll
 #endif
 
@@ -54,6 +55,7 @@
 file=ABI_DIR\BUILD_DIR\cafdataprovider.dll		sys\bin\cafdataprovider.dll
 file=ABI_DIR\BUILD_DIR\pkgremover.dll			sys\bin\pkgremover.dll
 file=ABI_DIR\BUILD_DIR\swiobserver.exe			sys\bin\swiobserver.exe
+file=ABI_DIR\BUILD_DIR\swiutils.dll			sys\bin\swiutils.dll
 
 #include "swiplugin.iby"
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/inc/swi/ipcutil.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Library to add s32strm support for IPC (ie. stream via multiple IPC read/writes instead of
+* copying to a buffer and streaming to/from there.
+*
+*/
+
+
+/**
+ @file
+ @internalTechnology
+ @released
+*/
+
+#ifndef _IPCUTIL_H_
+#define _IPCUTIL_H_
+
+#include <scs/ipcstream.h>
+#include <scs/streamingarray.h>
+
+
+template <class T>
+TInt GetObjectSizeL(const T* aObject)
+    {
+    TInt size(0);
+   	if(aObject)
+        {
+        RNullWriteStream nullstream;
+        CleanupClosePushL(nullstream);
+        nullstream << *aObject;
+        nullstream.CommitL();
+        size = nullstream.BytesWritten();
+        CleanupStack::PopAndDestroy(&nullstream);
+        return size;
+        }
+   	return -1;
+    }
+
+template <class T>
+void WriteObjectDataL(const RMessage2& aMessage, TInt aParam, const T* aObject)
+    {
+    if(!aObject)
+        {
+        User::Leave(KErrAbort);
+        }
+    RIpcWriteStream ipcstream;
+    ipcstream.Open(aMessage, aParam);
+    CleanupClosePushL(ipcstream);
+    ipcstream << *aObject;
+    CleanupStack::PopAndDestroy(&ipcstream); // Data is committed in Close method
+    }
+
+#endif /* _IPCUTIL_H_ */
--- a/installationservices/swi/inc/swi/nativecomponentinfo.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/swi/nativecomponentinfo.h	Fri Apr 16 15:05:20 2010 +0300
@@ -38,6 +38,28 @@
 	class CNativeComponentInfo : public CBase
 		{
 	public:
+	    
+	    class CNativeApplicationInfo : public CBase
+	         {
+	     public:
+	         IMPORT_C static CNativeApplicationInfo* NewLC(const TUid& aAppUid, const TDesC& aName, const TDesC& aGroupName, const TDesC& aIconFileName);
+	         static CNativeApplicationInfo* NewL(RReadStream& aStream);
+	         void ExternalizeL(RWriteStream& aStream) const;
+	                             
+	         IMPORT_C const TUid& AppUid() const;
+	         IMPORT_C const TDesC& Name() const;
+	         IMPORT_C const TDesC& GroupName() const;
+	         IMPORT_C const TDesC& IconFileName() const;            	         
+	         IMPORT_C virtual ~CNativeApplicationInfo();	            
+	     private:                  
+	         CNativeApplicationInfo();
+	                 
+	         TUid iAppUid; // Application UID
+	         HBufC* iName; // Name of the application
+	         HBufC* iGroupName; // Group folder name where the application will be present
+	         HBufC* iIconFileName; // Full path of the icon file
+	         };
+	    
 		/**
 			Creates a new instance of the CNativeComponentInfo class.
 			@leave System wide error code
@@ -80,9 +102,17 @@
 		Usif::TAuthenticity iAuthenticity;				///< The authenticity of the component
 		TCapabilitySet iUserGrantableCaps;				///< User grantable capabilities required be the component
 		TInt iMaxInstalledSize;							///< The maximum size of the component after installation
-		TBool iHasExe;									///<Indicates Whether the component has an exe or not						
+		TBool iHasExe;									///<Indicates Whether the component has an exe or not
+		TBool iIsDriveSelectionRequired;                ///< Indicates Whether drive selection is required or not.
+		RCPointerArray<CNativeApplicationInfo> iApplications; ///< The array of application info of the component being queried
 		RCPointerArray<CNativeComponentInfo> iChildren;	///< The children component info, incase of embedded packages.	
 	
+		enum
+		    {
+		    // An arbitrary limit for the length of a single descriptor, for example aComponentName, aVersion or aVendor.
+		    KMaxDescriptorLength = 256,
+		    };
+		
 		};	
 	} // nameSpace Swi
 #endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
--- a/installationservices/swi/inc/swi/siscontroller.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/swi/siscontroller.h	Fri Apr 16 15:05:20 2010 +0300
@@ -33,6 +33,7 @@
 #include "sissignaturecertificatechain.h"
 #include "sispackagetrust.h"
 #include <hash.h>
+#include "nativecomponentinfo.h"
 
 namespace Swi
 {
@@ -41,7 +42,7 @@
 class CCertChainConstraints;
 
 namespace Sis
- {
+{
 
 class CInfo;
 class CPrerequisites;
@@ -320,7 +321,27 @@
     */
 	inline void SetHasExecutable(TBool aHasExe);
 	
-	#endif
+	/** Returns a flag 
+	@return iIsDriveSelectionRequired TBool flag
+	*/
+	inline TBool CController::DriveSelectionRequired() const;
+	
+	/** Sets the status of flag 
+	@param aIsDriveSelectionRequired TBool
+    */
+    inline void CController::SetDriveSelectionRequired(TBool aIsDriveSelectionRequired);
+	
+	/** Returns a pointer array of CNativeApplicationInfo 
+	@return RPointerArray iApplicationInfo
+	*/
+    inline RCPointerArray<CNativeComponentInfo::CNativeApplicationInfo>& CController::GetApplicationInfo();
+	
+    /** Adds the application Info to the array of CNativeApplicationInfo 
+	@param aApplicationInfo The info for a native application
+	*/
+    inline void CController::AddApplicationInfoL(const CNativeComponentInfo::CNativeApplicationInfo* aApplicationInfo);
+    
+    #endif
 	
 private:
 
@@ -372,6 +393,8 @@
 	
 	TBool iHasExe;						   ///< Indicates Whether the component has an exe or not
 	
+	TBool iIsDriveSelectionRequired;       ///< Indicates Whether drive selection is required or not.
+		
 	mutable TSisTrustStatus* iTrustStatus; ///< The install trust status
 
     mutable RArray<TInt> iCertChainIndices; ///< Contains the indexes of the chains
@@ -379,6 +402,7 @@
 	mutable TInt iRemoveWithLastDependent;  ///< Whether uninstall with last dependent
 	
 	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	RCPointerArray<CNativeComponentInfo::CNativeApplicationInfo> iApplicationInfo;  ///< Pointer Array of application info objects CNativeApplicationInfo.
 	TCapabilitySet iUserGrantableCapabilities;
 	#endif
 	
@@ -481,9 +505,30 @@
 	{
 	iHasExe = aHasExe;
 	}
+
+inline TBool CController::DriveSelectionRequired() const
+    {
+    return iIsDriveSelectionRequired;
+    }
+
+inline void CController::SetDriveSelectionRequired(TBool aIsDriveSelectionRequired)
+    {
+    iIsDriveSelectionRequired = aIsDriveSelectionRequired;
+    }
+
+inline RCPointerArray<CNativeComponentInfo::CNativeApplicationInfo>& CController::GetApplicationInfo()
+    {
+    return iApplicationInfo;
+    }
+
+inline void CController::AddApplicationInfoL(const CNativeComponentInfo::CNativeApplicationInfo* aApplicationInfo)
+    {
+    iApplicationInfo.AppendL(aApplicationInfo);
+    }
+
 #endif
 
- } // namespace Sis
+} // namespace Sis
 
 } // namespace Swi
 
--- a/installationservices/swi/inc/swi/sisregistrysession.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/swi/sisregistrysession.h	Fri Apr 16 15:05:20 2010 +0300
@@ -193,6 +193,28 @@
 	 * Returns the SCR component id for the base component (i.e. not an SP package/augmentation) with the given UID. 
 	 */
 	IMPORT_C Usif::TComponentId GetComponentIdForUidL(const TUid& aUid);	
+	
+	/**
+     * Returns the SCR component id for the component with the given packagename and vendor name
+     * @param aPackageName package name of the existing component 
+     * @param aVendorName vendor name of the existing component 
+     */
+	IMPORT_C Usif::TComponentId GetComponentIdForPackageL(const TDesC& aPackageName, const TDesC& aVendorName) const;
+	
+	 /**
+     * Gets the array of application uids associated with a given component Id
+     * @param aCompId component Id of the component whose associated applications need to be fetched
+     * @param aAppUids array of application uids associated with the component
+     */
+	IMPORT_C void GetAppUidsForComponentL(Usif::TComponentId& aCompId, RArray<TUid>& aAppUids);
+	
+	/**
+     * Gets the array of Component Ids associated with a given package.
+     * @param aPackageUid package uid of the component
+     * @param aComponentIds array of component id's associated with the package uid
+     */
+	IMPORT_C void GetComponentIdsForUidL(TUid& aPackageUid, RArray<Usif::TComponentId>& aComponentIds);
+		
 #endif
 
 protected:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/inc/swicenrep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Defines Install Central Repository Constants
+*
+*/
+
+
+/**
+ @file
+ @released
+ @internalTechnology
+*/
+
+namespace Swi
+{
+
+
+static const TUid KUidInstallationRepository  = {0x2002CFF6}; //Install Central Repository UID
+
+//This key indicates whether OCSP checks to be enabled for Express Signed certificates.
+static const TUint32 KCheckOCSPForExpressedSignedPkgKey = 0x00000001;
+
+//This key indicates whether OCSP checks to be enabled for Self Signed certificates.
+static const TUint32 KCheckOCSPForSelfSignedPkgKey = 0x00000002;
+
+//This key indicates whether OCSP checks to be enabled for Certified Signed certificates.
+static const TUint32 KCheckOCSPForCertifiedSignedPkgKey = 0x00000003;
+
+//This key indicates whether OCSP checks to be enabled for  CertifiedWithVeriSign Signed certificates.
+static const TUint32 KCheckOCSPForCertifiedWithVeriSignPkgKey = 0x00000004;
+
+//Install Central Repository Key to allow installation of Self Signed SIS files.
+static const TUint32 KAllowSelfSignedInstallKey  = 0x00000005; 
+} // namespace Swi
--- a/installationservices/swi/inc/switextshell.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/switextshell.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -78,6 +78,7 @@
 file=ABI_DIR\BUILD_DIR\sislauncherserver_tshell.exe		sys\bin\sislauncherserver.exe
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+file=ABI_DIR\BUILD_DIR\apprscparser.dll			sys\bin\apprscparser.dll
 file=ABI_DIR\BUILD_DIR\swtypereginfo.dll		sys\bin\swtypereginfo.dll
 #endif
 
@@ -94,9 +95,7 @@
 file=ABI_DIR\BUILD_DIR\backuprestore.dll			sys\bin\backuprestore.dll
 file=ABI_DIR\BUILD_DIR\cafdataprovider.dll			sys\bin\cafdataprovider.dll
 file=ABI_DIR\BUILD_DIR\pkgremover.dll				sys\bin\pkgremover.dll
-
-// OMX IL component common(Temp Fix to Build navi text shell images)
-file=ABI_DIR\BUILD_DIR\omxilcomponentcommon.dll    System\Libs\omxilcomponentcommon.dll
+file=ABI_DIR\BUILD_DIR\swiutils.dll				sys\bin\swiutils.dll
 
 // Core SWI - 9.5
 REM Including swiplugin.iby instead explicitly mentioning the files to avoid duplicate includes 
--- a/installationservices/swi/inc/tswi.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/tswi.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -211,6 +211,10 @@
 data = \epoc32\winscw\c\tswi\tsisregistrytest\scripts\integritychecktest.ini \tswi\tsisregistrytest\scripts\integritychecktest.ini
 data = \epoc32\winscw\c\tswi\tsisregistrytest\scripts\integritychecktest.script \tswi\tsisregistrytest\scripts\integritychecktest.script
 
+//SWI AppReg integration test script
+data = \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\tswiappregintegration.script \tswi\tuiscriptadaptors\scripts\tswiappregintegration.script
+data = \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini \tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini
+
 file=ABI_DIR\BUILD_DIR\sisregistryaccessserver.exe 		sys\bin\sisregistryaccessserver.exe
 #else
 //tsisregistrytest
@@ -676,6 +680,16 @@
 data = \epoc32\winscw\c\tswi\trevocation\data\armv5\ocsp_02.sis \tswi\trevocation\data\ocsp_02.sis 
 data = \epoc32\winscw\c\tswi\trevocation\data\armv5\ocsp_03.sis \tswi\trevocation\data\ocsp_03.sis
 data = \epoc32\winscw\c\tswi\trevocation\data\armv5\ocsp_04.sis \tswi\trevocation\data\ocsp_04.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\certifiedsignedval.sis \tswi\trevocation\data\certifiedsignedval.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\certifiedsignedVeriSignval.sis \tswi\trevocation\data\certifiedsignedVeriSignval.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\expresssignedval.sis \tswi\trevocation\data\expresssignedval.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\allsignedval.sis \tswi\trevocation\data\allsignedval.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\selfsignedval.sis \tswi\trevocation\data\selfsignedval.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\certifiedsignedrev.sis \tswi\trevocation\data\certifiedsignedrev.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\certifiedsignedVeriSignrev.sis \tswi\trevocation\data\certifiedsignedVeriSignrev.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\expresssignedrev.sis \tswi\trevocation\data\expresssignedrev.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\allsignedrev.sis \tswi\trevocation\data\allsignedrev.sis
+data = \epoc32\winscw\c\tswi\trevocation\data\armv5\selfsignedrev.sis \tswi\trevocation\data\selfsignedrev.sis
 data = \epoc32\winscw\c\tswi\trevocation\data\armv5\ocsprevocation.sis \tswi\trevocation\data\ocsprevocation.sis
 data = \epoc32\winscw\c\tswi\trevocation\data\armv5\ocsprevocation-sub1.sis \tswi\trevocation\data\ocsprevocation-sub1.sis
 #endif
--- a/installationservices/swi/inc/tswitextshell.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/inc/tswitextshell.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -250,6 +250,10 @@
 data = ZDRIVE\tswi\tsis\data\armv5\eclipsingromexepu.sis 			tswi\tsis\data\eclipsingromexepu.sis
 data = ZDRIVE\tswi\tsis\data\armv5\eclipsingromexepu_root5.sis 			tswi\tsis\data\eclipsingromexepu_root5.sis
 
+//temporary fix to include cenrep file for timezone server
+data = \epoc32\data\z\private\10202be9\1020383e.txt					private\10202be9\1020383e.txt
+
+
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 // Used for registry management
 file=ABI_DIR\BUILD_DIR\sisregistryaccessserver.exe 		sys\bin\sisregistryaccessserver.exe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/apprscparser/apprscparser.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,835 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* apprscreader.cpp 
+*
+*/
+
+#include "apprscparser.h"
+#include "log.h"
+#include <bautils.h>
+#include <barsc2.h>
+#include <barsread2.h>
+#include <e32uid.h>
+#include "cleanuputils.h"
+
+const TUint KResourceOffsetMask = 0xFFFFF000;
+const TUid KOpenServiceUid = { 0x10208DCA };
+//const TInt KMaxOpaqueDataLength = 0x1000; TODO: Need to enforce this
+
+_LIT(KAppBinaryPathAndExtension, "\\sys\\bin\\.exe");
+_LIT(KAppResourceFileExtension,".rsc");
+_LIT(KThreeDigitSuffix,"%03d");
+_LIT(KTwoDigitSuffix,"%02d");
+_LIT(KApparcFilePath, "*10003a3f*");
+
+const TInt KAppRegistrationInfoResourceId = 1;
+// The 2nd UID that defines a resource file as being an application registration resource file.
+const TUid KUidAppRegistrationFile = {0x101F8021};
+const TInt EPanicNullPointer = 1;
+const TInt KAppUidValue16 = 0x100039CE;
+const TUid KUidApp={KAppUidValue16};
+
+CLocalizableRsc::~CLocalizableRsc()
+    {
+    delete iRscFile;
+    }
+
+CLocalizableRsc* CLocalizableRsc::NewL()
+    {
+    CLocalizableRsc *self = CLocalizableRsc::NewLC();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CLocalizableRsc* CLocalizableRsc::NewLC()
+    {
+    CLocalizableRsc *self = new(ELeave) CLocalizableRsc();
+    CleanupStack::PushL(self);
+    return self;
+    }
+
+//
+// CAppRegInfoReader
+//
+
+EXPORT_C CAppRegInfoReader* CAppRegInfoReader::NewL(RFs& aFs, const TDesC& aRegistrationFileName)
+	{
+	CAppRegInfoReader* self = new(ELeave) CAppRegInfoReader(aFs, aRegistrationFileName);
+	return self;
+	}
+
+EXPORT_C CAppRegInfoReader* CAppRegInfoReader::NewL(RFs& aFs, const RFile& aRegistrationFile)
+    {
+    CAppRegInfoReader* self = new(ELeave) CAppRegInfoReader(aFs, aRegistrationFile);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+    return self;
+    }
+
+CAppRegInfoReader::CAppRegInfoReader(RFs& aFs, const TDesC& aRegistrationFileName) :
+	iFs(aFs),
+	iAppUid(TUid::Null()),	
+	iRegistrationFileName(&aRegistrationFileName)
+	{	
+	}
+
+CAppRegInfoReader::CAppRegInfoReader(RFs& aFs, const RFile& aRegistrationFile) :
+    iFs(aFs),
+    iAppUid(TUid::Null()),
+    iRegFileHandle(&aRegistrationFile)
+    {
+    iUseRegFileHandle = ETrue;	
+	}
+
+void CAppRegInfoReader::ConstructL()
+	{
+	TFileName fileName;
+	User::LeaveIfError(iRegFileHandle->FullName(fileName));	
+	iRegistrationFileName = fileName.AllocL();	
+	}
+
+EXPORT_C CAppRegInfoReader::~CAppRegInfoReader()
+	{
+	delete iAppBinaryFullName;		
+	iLocalizableRscArray.ResetAndDestroy();
+	
+	if (iUseRegFileHandle)
+	    delete iRegistrationFileName; // We had created the filename from the handle
+	}
+
+EXPORT_C Usif::CApplicationRegistrationData* CAppRegInfoReader::ReadL(const RArray<TLanguage>& aAppLanguages)
+    {
+	DEBUG_PRINTF(_L("Reading the application rsc file"));
+	TEntry entry;
+	if (!iUseRegFileHandle)
+	    {
+        User::LeaveIfError(iFs.Entry(*iRegistrationFileName, entry));        
+	    }
+	else
+	    {
+	    // Reading the TUidType information fron the reg rsc file header
+	    TBuf8<sizeof(TCheckedUid)> uidBuf;
+	    TInt err = iRegFileHandle->Read(0, uidBuf, sizeof(TCheckedUid));
+	    if (err != KErrNone || uidBuf.Size() != sizeof(TCheckedUid))
+	        {
+	        DEBUG_PRINTF(_L("The file is not a valid registration resource file"));
+	        User::Leave(KErrCorrupt);
+	        }
+	    TCheckedUid uid(uidBuf);
+	    entry.iType=uid.UidType();
+	    }
+	
+	if (!TypeUidIsForRegistrationFile(entry.iType))
+        {
+        DEBUG_PRINTF(_L("The resource file doesn't have any application registration information"));
+        User::Leave(KErrCorrupt); // We are only interested in application reg resource files
+        }
+	
+	TUint fileOffset = 0;
+	TInt fileLength = 0;
+	TUid firstUid(KExecutableImageUid);
+	TUid middleUid(KUidApp);
+	
+	// Read the AppUid from the rsc file
+	iAppUid = entry.iType[2];
+	if (iAppUid == TUid::Null())
+	    {
+	    DEBUG_PRINTF2(_L("Application UID in the registration resource file %S is NULL"), iRegistrationFileName);
+	    User::Leave(KErrCorrupt); // Mandatory information missing
+	    }
+	
+	// Set the TUidType for the app binary
+	iAppBinaryUidType = TUidType(firstUid, middleUid, iAppUid);
+	// Check to see if we are only interested in any localized info
+	iReadOnlyOneLocalizedRscInfo = aAppLanguages.Count()?EFalse:ETrue;
+	
+	DEBUG_PRINTF2(_L("Opening rsc file %S"), iRegistrationFileName); //TODO
+	CResourceFile* registrationFile = NULL;
+	if (iUseRegFileHandle)
+	    {
+	    fileLength = 0;        
+        User::LeaveIfError(iRegFileHandle->Size(fileLength));
+
+        if (fileLength > 0)
+            {
+            // Read the reg rsc file to a buffer
+            HBufC8* fileBuffer = HBufC8::NewLC(fileLength);
+            TPtr8 fileBufferPtr(fileBuffer->Des());
+            iRegFileHandle->Read(0, fileBufferPtr);
+            registrationFile = CResourceFile::NewL(*fileBuffer);
+            CleanupStack::PopAndDestroy(fileBuffer);
+            }
+	    }
+	else
+	    {
+	    registrationFile = CResourceFile::NewL(iFs, *iRegistrationFileName, fileOffset, fileLength);
+	    }
+	CleanupStack::PushL(registrationFile);
+	
+	RResourceReader	resourceReader;
+	resourceReader.OpenLC(registrationFile, KAppRegistrationInfoResourceId);	
+	DEBUG_PRINTF(_L("rsc file opened")); //TODO
+	
+	TRAPD(err, ReadMandatoryInfoL(resourceReader));
+	if (err)
+		{
+		DEBUG_PRINTF(_L("Error in ReadMandatoryInfoL"));
+		CleanupStack::PopAndDestroy(2, registrationFile); // resourceReader
+		User::Leave(err); // Might have read something, but failed to setup enough info to make it worthwhile trying to read any more
+		}
+	
+	TUint localizableResourceId = 1; // Only initialising this here to keep the compiler happy
+	TRAP(err, ReadNonLocalizableInfoL(resourceReader, localizableResourceId, aAppLanguages));
+
+	if (!err)
+	    {
+        // Open the localizable resource file for identified languages
+        for (TInt i=0; i < iLocalizableRscArray.Count(); ++i)
+            {
+            iLocalizableRscArray[i]->iRscFile = CResourceFile::NewL(iFs, iLocalizableRscArray[i]->iFileName, 0, 0);
+            CResourceFile* currLocalizableFile = iLocalizableRscArray[i]->iRscFile;
+	        if (currLocalizableFile && (localizableResourceId & KResourceOffsetMask))
+	            currLocalizableFile->ConfirmSignatureL();	        
+	        }	    
+		TRAP(err, ReadNonLocalizableOptionalInfoL(resourceReader, registrationFile));
+		}
+		
+	if (!err)
+	    {
+	    // Read the localized resource information the identified languages
+	    for (TInt i=0; i < iLocalizableRscArray.Count(); ++i)
+	        {
+	        CResourceFile* currLocalizableFile = iLocalizableRscArray[i]->iRscFile;
+	        TFileName fileName = iLocalizableRscArray[i]->iFileName;
+	        DEBUG_PRINTF2(_L("Reading Localizable Info from : %S"), &fileName);
+	        // The following call can leave if the localized resource file is ill formed.
+	        // We'll try to parse other loclized files (if possible) in such a case.
+	        TRAPD(errLocalized, ReadLocalizableInfoL(*currLocalizableFile, localizableResourceId, iLocalizableRscArray[i]->iLanguage));
+	        if (errLocalized)
+                DEBUG_PRINTF3(_L("Error while reading file (%S) : %d"), &fileName, errLocalized);
+	        }
+	    }
+	
+	const TBool readSuccessful = (err == KErrNone);
+	DEBUG_PRINTF2(_L("Application rsc file parsed. Status : %d"), readSuccessful);
+	CleanupStack::PopAndDestroy(2, registrationFile); // resourceReader	
+	
+	Usif::CApplicationRegistrationData* appRegInfo = NULL;
+	if (readSuccessful)
+	    {	    
+	    RPointerArray<Usif::CPropertyEntry> appPropertiesArray;	    	    
+		appRegInfo = Usif::CApplicationRegistrationData::NewL(iOwnedFileArray, iServiceArray, iLocalizableAppInfoArray, 
+                                        appPropertiesArray, iOpaqueDataArray, iAppUid, *iAppBinaryFullName, iAppCharacteristics, iDefaultScreenNumber);
+		
+		DEBUG_PRINTF2(_L("Count Languages : %d"), aAppLanguages.Count());
+		DEBUG_PRINTF2(_L("Count of Loc files parsed : %d"), iLocalizableRscArray.Count());
+		DEBUG_PRINTF2(_L("Count of Loc data passed to SWI : %d"), iLocalizableAppInfoArray.Count());				
+	   }
+	else
+	    {
+        // Cleanup the member arrays
+        iOwnedFileArray.ResetAndDestroy(); 
+        iServiceArray.ResetAndDestroy();
+        iLocalizableAppInfoArray.ResetAndDestroy();
+        iOpaqueDataArray.ResetAndDestroy();
+	    }
+	
+	return appRegInfo;
+	}
+
+// This method reads the minimum information required to register an app.
+// If this fails, we say the read has been unsuccessful.
+void CAppRegInfoReader::ReadMandatoryInfoL(RResourceReader& aResourceReader)
+	{
+	DEBUG_PRINTF(_L("Reading the mandatory application info"));
+	aResourceReader.ReadUint32L(); // skip over LONG reserved_long
+	aResourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+	// Read LTEXT app_file
+	const TPtrC appFile(aResourceReader.ReadTPtrCL());
+	// This object gets used for 2 purposes: first to check that a TParsePtrC can be created 
+	// over "appFile" without it panicking, and second to construct iAppBinaryFullName
+	TParse parse;
+	// Do this before creating a TParsePtrC, since TParsePtrC's constructor panics if it fails 
+	// (which would provide an easy way for malware to kill the Apparc server)
+	User::LeaveIfError(parse.SetNoWild(appFile, NULL, NULL)); 
+	const TParsePtrC appFileParser(appFile);
+
+	// Read LONG attributes
+	iAppCharacteristics.iAttributes = aResourceReader.ReadUint32L();
+
+	if (!appFileParser.NamePresent())
+	    {
+	    DEBUG_PRINTF2(_L("Application Name in the registration resource file %S is not present"),iRegistrationFileName);
+		User::Leave(KErrCorrupt);
+	    }
+
+	const TPtrC appNameWithoutExtension(appFileParser.Name());
+	const TPtrC registrationFileDrive(TParsePtrC(*iRegistrationFileName).Drive());
+	
+	if (iAppCharacteristics.iAttributes & ENonNative)
+		{
+        User::Leave(KErrNotSupported); // Non native apps need not have an applicaiton reg rsc file
+		}
+	else if (iAppCharacteristics.iAttributes & EBuiltAsDll)
+		{
+		User::Leave(KErrNotSupported); // Legacy dll-style app
+		}
+	else
+		{
+		// Exe-style app
+		User::LeaveIfError(parse.SetNoWild(registrationFileDrive, &KAppBinaryPathAndExtension, &appNameWithoutExtension));
+		}
+
+	iAppBinaryFullName = parse.FullName().AllocL();
+	DEBUG_PRINTF2(_L("App Binary FullName : %S"),iAppBinaryFullName); //TODO
+	DEBUG_PRINTF2(_L("AppUid : 0x%X"), iAppUid.iUid); //TODO
+	DEBUG_PRINTF2(_L("Attributes : %d"), iAppCharacteristics.iAttributes); //TODO
+	}
+
+HBufC* CAppRegInfoReader::CreateFullIconFileNameL(const TDesC& aIconFileName) const
+	{
+	HBufC* filename = NULL;
+	if (aIconFileName.Length() == 0)
+		return NULL;
+	
+	//aIconFileName may contain a valid string in some format (for eg. URI format) other than path to a regular file on disk
+	//and that can be a mbm or non-mbm file. Such a filename will be reported as invalid filename by iFs.IsValidName() method. 
+	//aIconFileName will be returned since it is a valid string. 	
+	if(!iFs.IsValidName(aIconFileName))
+		{
+		filename = aIconFileName.AllocL();
+		return filename;
+		}
+	
+	TParsePtrC parsePtr(aIconFileName);
+	if (parsePtr.IsWild() || !parsePtr.PathPresent() || !parsePtr.NamePresent())
+		return NULL;
+
+	// Check for fully qualified icon filename
+	if (parsePtr.DrivePresent() && BaflUtils::FileExists(iFs, aIconFileName))
+		filename = aIconFileName.AllocL();
+	else
+		{
+		// Check for icon file on same drive as localizable resource file
+		TParse parse;
+		TPtrC localizableResourceFileDrive = TParsePtrC(iTempLocalizableRscFileName).Drive();
+		TInt ret = parse.SetNoWild(localizableResourceFileDrive, &aIconFileName, NULL);
+		if (ret == KErrNone && BaflUtils::FileExists(iFs, parse.FullName()))
+			filename = parse.FullName().AllocL();
+		else
+			{
+			TPtrC registrationFileDrive = TParsePtrC(*iRegistrationFileName).Drive();
+			if (TInt(TDriveUnit(registrationFileDrive)) != TInt(TDriveUnit(localizableResourceFileDrive)))
+				{
+				// Check for icon file on same drive as registration file
+				ret = parse.SetNoWild(registrationFileDrive, &aIconFileName, NULL);
+				if (ret == KErrNone && BaflUtils::FileExists(iFs, parse.FullName()))
+					filename = parse.FullName().AllocL();
+				}
+			}
+		}
+	
+	return filename;
+	}
+
+void CAppRegInfoReader::ReadLocalizableInfoL(const CResourceFile& aResourceFile, TUint aResourceId, TLanguage aLanguage)
+	{
+	HBufC* caption = NULL;
+    HBufC* shortCaption = NULL;   
+    TInt numOfAppIcons = 0;
+    HBufC* iconFileName = NULL;
+	    
+	RResourceReader resourceReader;
+	resourceReader.OpenLC(&aResourceFile, aResourceId);
+
+	resourceReader.ReadUint32L(); // skip over LONG reserved_long
+	resourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+		
+	// Read LTEXT short_caption
+	shortCaption = resourceReader.ReadHBufCL();
+	
+	if (shortCaption)
+        {
+        DEBUG_PRINTF2(_L("ShortCaption : %S"), shortCaption); //TODO
+        CleanupStack::PushL(shortCaption);
+        }
+    else
+        {
+        DEBUG_PRINTF(_L("ShortCaption is NULL")); //TODO
+        }
+	
+	resourceReader.ReadUint32L(); // skip over LONG reserved_long
+	resourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+	// Read LTEXT caption	
+	caption = resourceReader.ReadHBufCL();
+	
+	if (caption)
+            {
+            DEBUG_PRINTF2(_L("Caption : %S"), caption); //TODO
+            CleanupStack::PushL(caption);
+            }
+        else
+            {
+            DEBUG_PRINTF(_L("Caption is NULL")); //TODO
+            }
+
+	// Read WORD number_of_icons
+	numOfAppIcons = resourceReader.ReadInt16L();
+	DEBUG_PRINTF2(_L("NumOfIcons : %d"), numOfAppIcons); //TODO
+	
+	// Read LTEXT icon_file
+	HBufC* iconFile = resourceReader.ReadHBufCL();
+	if (iconFile)
+	    {
+        if (iReadOnlyOneLocalizedRscInfo)
+            iconFileName = iconFile; // We do not need to check if the icon file is present
+        else
+            {
+            CleanupStack::PushL(iconFile);
+            iconFileName = CreateFullIconFileNameL(*iconFile);
+            CleanupStack::PopAndDestroy(iconFile);
+            }
+	    }
+
+	if (iconFileName)
+	    {
+	    DEBUG_PRINTF2(_L("IconFileName : %S"), iconFileName); //TODO
+	    CleanupStack::PushL(iconFileName);
+	    }
+	else
+	    {
+	    DEBUG_PRINTF(_L("IconFileName is NULL")); //TODO
+	    }
+
+	// Create CCaptionAndIconInfo for the locale
+	Usif::CCaptionAndIconInfo* captionAndIconInfo = Usif::CCaptionAndIconInfo::NewLC(caption?*caption:_L(""), iconFileName?*iconFileName:_L(""), numOfAppIcons);			
+	
+	// Read LEN WORD STRUCT view_list[]
+	const TInt numOfViews = resourceReader.ReadInt16L();
+	
+	RPointerArray<Usif::CAppViewData> viewDataList;
+	CleanupResetAndDestroyPushL(viewDataList);
+	for(TInt view = 0; view < numOfViews; ++view)
+		{
+		DEBUG_PRINTF2(_L(" *** View Details for index %d ***"), view); //TODO
+		resourceReader.ReadUint32L(); // skip over LONG reserved_long
+		resourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+		// Read LONG uid
+		const TUid viewUid = {resourceReader.ReadInt32L()};
+		DEBUG_PRINTF2(_L("ViewUid : 0x%X"), viewUid); //TODO
+		// Read LONG screen_mode
+		const TInt screenMode = {resourceReader.ReadInt32L()};
+		DEBUG_PRINTF2(_L("ScreenMode : %d"), screenMode); //TODO
+		
+		resourceReader.ReadUint32L(); // skip over LONG reserved_long
+		resourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+		// Read LTEXT caption
+		HBufC* viewCaption = resourceReader.ReadHBufCL();
+		if (viewCaption)
+            {
+            DEBUG_PRINTF2(_L("ViewCaption : %S"), viewCaption); //TODO
+            CleanupStack::PushL(viewCaption);
+            }
+        else
+            {
+            DEBUG_PRINTF(_L("ViewCaption is NULL")); //TODO
+            }
+		
+		// Read WORD number_of_icons
+		const TInt numOfViewIcons = resourceReader.ReadInt16L();
+		DEBUG_PRINTF2(_L("NumOfViewIcons : %d"), numOfViewIcons); //TODO
+		
+		HBufC* fullViewIconFileName = NULL;
+		// Read LTEXT icon_file
+		HBufC* viewIconFile = resourceReader.ReadHBufCL();  
+		
+        if (viewIconFile)
+		    {
+		    CleanupStack::PushL(viewIconFile);
+            fullViewIconFileName = CreateFullIconFileNameL(*viewIconFile); 
+            CleanupStack::PopAndDestroy(viewIconFile);
+            if (fullViewIconFileName)
+                {               
+                CleanupStack::PushL(fullViewIconFileName);
+                DEBUG_PRINTF2(_L("ViewIconFileName : %S"), fullViewIconFileName); //TODO
+                }
+            else
+                {
+                DEBUG_PRINTF(_L("ViewIconFileName is NULL")); //TODO
+                }            
+		    }
+				
+		// Create CCaptionAndIconInfo for the view
+		Usif::CCaptionAndIconInfo* viewCaptionAndIcon = Usif::CCaptionAndIconInfo::NewLC(viewCaption?*viewCaption:_L(""), fullViewIconFileName?*fullViewIconFileName:_L(""), numOfViewIcons);
+		// Create the view
+		Usif::CAppViewData* viewData = Usif::CAppViewData::NewLC(viewUid, screenMode, viewCaptionAndIcon);
+		
+		viewDataList.AppendL(viewData);
+		
+		CleanupStack::Pop(2, viewCaptionAndIcon); // viewData
+		if (fullViewIconFileName)
+		    CleanupStack::PopAndDestroy(fullViewIconFileName);
+		if (viewCaption)
+		    CleanupStack::PopAndDestroy(viewCaption);
+		}
+
+	// Read LTEXT group_name
+	TAppGroupName groupName;
+	TRAPD(ret, (groupName = resourceReader.ReadTPtrCL()));
+	if (ret != KErrNone)
+		{
+		 if (ret != KErrEof)
+	         User::Leave(ret);
+		}
+	
+	DEBUG_PRINTF2(_L("GroupName : %S"), &groupName); //TODO	
+	Usif::CLocalizableAppInfo* localizableAppInfo = Usif::CLocalizableAppInfo::NewLC(shortCaption?*shortCaption:_L(""), aLanguage, groupName, captionAndIconInfo, viewDataList);
+	iLocalizableAppInfoArray.AppendL(localizableAppInfo);
+	
+	CleanupStack::Pop(3, captionAndIconInfo); // localizableAppInfo, viewDataList
+	if (iconFileName)
+	    CleanupStack::PopAndDestroy(iconFileName);
+	if (caption)
+	    CleanupStack::PopAndDestroy(caption);
+	if (shortCaption)
+	    CleanupStack::PopAndDestroy(shortCaption);
+	CleanupStack::PopAndDestroy(&resourceReader);
+	}
+
+void CAppRegInfoReader::ReadOpaqueDataL(TUint aResourceId, const CResourceFile* aRegistrationFile, RPointerArray<Usif::COpaqueData>& aOpaqueDataArray)
+    {
+    if (aResourceId == 0)
+        return;
+    else
+        {
+        if (aResourceId & KResourceOffsetMask)
+            {
+            for (TInt i=0; i < iLocalizableRscArray.Count(); ++i)
+                {
+                CResourceFile* currLocalizableFile = iLocalizableRscArray[i]->iRscFile;                
+                currLocalizableFile->ConfirmSignatureL();
+                HBufC8* data = NULL;
+                TRAPD(err, data = currLocalizableFile->AllocReadL(aResourceId));                
+                if(err == KErrNone)
+                    {
+                    CleanupStack::PushL(data);
+                    Usif::COpaqueData* opaqueData = Usif::COpaqueData::NewL(*data, iLocalizableRscArray[i]->iLanguage);
+                    aOpaqueDataArray.AppendL(opaqueData);
+                    CleanupStack::PopAndDestroy(data);
+                    }
+                }            
+            }
+        else
+            {
+            // Expecting opaque data to be in the registration file
+            __ASSERT_ALWAYS(aRegistrationFile, Panic(EPanicNullPointer));
+            HBufC8* data = aRegistrationFile->AllocReadLC(aResourceId);
+            Usif::COpaqueData* opaqueData = Usif::COpaqueData::NewL(*data, TLanguage(0));
+            aOpaqueDataArray.AppendL(opaqueData);
+            CleanupStack::PopAndDestroy(data);
+            }
+        }
+    }
+
+void CAppRegInfoReader::ReadNonLocalizableOptionalInfoL(RResourceReader& aResourceReader, const CResourceFile* aRegistrationFile)
+	{
+	DEBUG_PRINTF(_L("Reading the application non localized optional info"));
+	// Read LEN WORD STRUCT service_list[]
+	TInt serviceCount = 0;
+	// Service information was not present in the first release of the registration file
+	// APP_REGISTRATION_INFO resource struct.
+	// This method must not leave if the registration file doesn't contain service information, so the
+	// following call to ReadInt16L is trapped to ensure this method doesn't leave just because
+	// there is no more information in the resource to read (KErrEof)
+	TRAPD(err, serviceCount = aResourceReader.ReadInt16L());
+	if (err)
+		{
+		if (err == KErrEof)
+			return; // End of resource reached
+		
+		User::Leave(err);
+		}
+	DEBUG_PRINTF2(_L("Service count is : %d"), serviceCount); //TODO
+	
+	while (serviceCount--)
+		{
+		const TUid serviceUid = {aResourceReader.ReadUint32L()};
+		
+		if ((serviceUid == KOpenServiceUid) && (iLegacyDataTypesPresent))
+			{
+            __ASSERT_DEBUG( iServiceArray.Count(), Panic(EPanicNullPointer) );
+			// Deleting the legacy datatypes
+            Usif::CServiceInfo* firstElement = iServiceArray[0];
+            iServiceArray.Remove(0);
+            delete firstElement;
+            iLegacyDataTypesPresent = EFalse;
+			}
+		
+		RPointerArray<Usif::CDataType> serviceDataTypes;
+		CleanupResetAndDestroyPushL(serviceDataTypes);
+		ReadMimeTypesSupportedL(aResourceReader, serviceDataTypes);
+		
+		const TUint resourceId = aResourceReader.ReadUint32L();
+		RPointerArray<Usif::COpaqueData> serviceOpaqueDataArray;
+		CleanupResetAndDestroyPushL(serviceOpaqueDataArray);
+		ReadOpaqueDataL(resourceId, aRegistrationFile, serviceOpaqueDataArray);
+						
+		Usif::CServiceInfo* serviceInfo = Usif::CServiceInfo::NewLC(serviceUid, serviceOpaqueDataArray, serviceDataTypes);
+		iServiceArray.AppendL(serviceInfo);
+		DEBUG_PRINTF3(_L("ServiceUid (index %d) is : 0x%X "), iServiceArray.Count()-1, serviceUid.iUid); //TODO
+		
+		CleanupStack::Pop(3, &serviceDataTypes); // serviceInfo, serviceOpaqueDataArray
+		}
+	
+	// Read LLINK opaque_data
+	const TUint resourceId = aResourceReader.ReadUint32L();
+	ReadOpaqueDataL(resourceId, aRegistrationFile, iOpaqueDataArray);
+	}
+
+void CAppRegInfoReader::ReadNonLocalizableInfoL(RResourceReader& aResourceReader, TUint& aLocalizableResourceId, const RArray<TLanguage>& aAppLanguages)
+	{
+	DEBUG_PRINTF(_L("Reading the application non localized info"));
+	
+	// Read LTEXT localizable_resource_file
+	TPtrC localizableResourceFileName(aResourceReader.ReadTPtrCL());
+	if (localizableResourceFileName.Length() > 0 && iFs.IsValidName(localizableResourceFileName))
+		{
+		// Determine the language specific name of the localizable resource file
+		TParse parse;
+		TParsePtrC parsePtr(*iRegistrationFileName);
+		User::LeaveIfError(parse.SetNoWild(parsePtr.Drive(), &KAppResourceFileExtension, &localizableResourceFileName));
+		TFileName localizableRscFileName(parse.FullName());
+		DEBUG_PRINTF2(_L("Localizable filename from rsc is : %S"), &localizableRscFileName); 
+		iTempLocalizableRscFileName = localizableRscFileName; // Store the rsc filename as read (before bafl makes any changes)
+		
+		// Check if we need to read more than one localized resource file
+		if (!aAppLanguages.Count())
+		    {
+            TLanguage applicationLanguage;		    
+            BaflUtils::NearestLanguageFileV2(iFs, localizableRscFileName, applicationLanguage);
+		
+            // We are able to find a match
+            if (BaflUtils::FileExists(iFs, iTempLocalizableRscFileName))
+                {
+                // We read here only for one locale, similar to AppArc's behaviour when parsing the resource file
+                CLocalizableRsc* localizedRsc = CLocalizableRsc::NewL();
+                localizedRsc->iFileName = localizableRscFileName;
+                if (ELangNone == applicationLanguage)
+                    localizedRsc->iLanguage = TLanguage(0);
+                else
+                    localizedRsc->iLanguage = applicationLanguage;
+                iLocalizableRscArray.Append(localizedRsc);
+                }
+            else 
+                {
+                // The resource files are located in non-standard location (like in the case of GetComponentInfo).
+                // We need to find the temporary paths for localized resource files in this case.
+                // The reg file will be in some location like <path>\regfilename_reg.rsc and localized rsc file name
+                // would point to \resource\apps\localregfilename.rsc or \resource\apps\localregfilename.r01 etc.
+                // Changing the localized rsc file name to <path>\localregfilename.rsc
+                TFileName nonStdLocalizedRscFileName = parsePtr.DriveAndPath(); // Drive and path from Registration FileName
+                nonStdLocalizedRscFileName.Append(TParsePtrC(localizableRscFileName).NameAndExt()); // Name and extension of localized rsc file
+                iTempLocalizableRscFileName = nonStdLocalizedRscFileName; // For FindLocalizableResourceFilesL
+                
+                if (KErrNotFound == iTempLocalizableRscFileName.Match(KApparcFilePath))
+                    {
+                    applicationLanguage = User::Language();                
+                    FindLocalizableResourceFilesL(applicationLanguage); 
+                
+                    // If there is no match, check for default localizable rsc file
+                    if (!iLocalizableRscArray.Count())
+                        CheckForDefaultResourceFileL();
+                    }
+                }            
+		    }
+		else
+		    {
+            for (TInt i=0; i < aAppLanguages.Count(); ++i)
+                FindLocalizableResourceFilesL(aAppLanguages[i]);
+            
+            CheckForDefaultResourceFileL();
+		    }
+		}
+        
+	// Read LONG localizable_resource_id
+	aLocalizableResourceId = aResourceReader.ReadUint32L();
+	DEBUG_PRINTF3(_L("LocalizableResourceId : %d : 0x%X "), aLocalizableResourceId, aLocalizableResourceId); //TODO
+	
+	DEBUG_PRINTF(_L("Reading app characteristics")); //TODO
+	iAppCharacteristics.iAppIsHidden = aResourceReader.ReadInt8L();
+	iAppCharacteristics.iEmbeddability = (Usif::TApplicationCharacteristics::TAppEmbeddability)aResourceReader.ReadInt8L();
+	iAppCharacteristics.iSupportsNewFile = aResourceReader.ReadInt8L();
+	iAppCharacteristics.iLaunchInBackground = aResourceReader.ReadInt8L();
+	iAppCharacteristics.iGroupName = aResourceReader.ReadTPtrCL();
+	iDefaultScreenNumber = aResourceReader.ReadUint8L();
+ 	
+	DEBUG_PRINTF2(_L("iAppIsHidden : %d"), iAppCharacteristics.iAppIsHidden); //TODO
+	DEBUG_PRINTF2(_L("iEmbeddability : %d"), iAppCharacteristics.iEmbeddability); //TODO
+	DEBUG_PRINTF2(_L("iSupportsNewFile : %d"), iAppCharacteristics.iSupportsNewFile); //TODO
+	DEBUG_PRINTF2(_L("iLaunchInBackground : %d"), iAppCharacteristics.iLaunchInBackground); //TODO
+	DEBUG_PRINTF2(_L("iGroupName : %S"), &(iAppCharacteristics.iGroupName)); //TODO
+	DEBUG_PRINTF2(_L("iDefaultScreenNumber : %d"), iDefaultScreenNumber); //TODO
+	
+	// Read the datatypes
+	RPointerArray<Usif::CDataType> dataTypes;
+	CleanupResetAndDestroyPushL(dataTypes);
+	RPointerArray<Usif::COpaqueData> opaqueDataArray;
+	CleanupResetAndDestroyPushL(opaqueDataArray);
+	ReadMimeTypesSupportedL(aResourceReader, dataTypes);
+	
+	// DataTypes are deleted if 
+	//  A. There are no legacy datatypes
+	//  B. Control panel plugin apps are not allowed to register MIME types.If they happen to have any, 
+	//     these datatypes should be ignored.
+	if ((iAppCharacteristics.iAttributes & EControlPanelItem) || (dataTypes.Count() == 0))
+	    {
+	    CleanupStack::Pop(2, &dataTypes); // opaqueDataArray
+	    dataTypes.ResetAndDestroy();
+	    opaqueDataArray.ResetAndDestroy();	    
+	    }
+	else
+		{
+		DEBUG_PRINTF(_L("Reading Open Service Datatypes")); //TODO
+		
+		Usif::CServiceInfo* serviceInfo = Usif::CServiceInfo::NewLC(KOpenServiceUid, opaqueDataArray, dataTypes);
+		iServiceArray.AppendL(serviceInfo);
+		DEBUG_PRINTF2(_L("ServiceUid (index %d) is : OpenServiceUid "), iServiceArray.Count()-1); //TODO
+		
+		CleanupStack::Pop(3, &dataTypes); // serviceInfo, opaqueDataArray
+		iLegacyDataTypesPresent = ETrue;
+		}
+
+	// Read LEN WORD STRUCT file_ownership_list[]
+	const TInt fileOwnershipArraySize = aResourceReader.ReadInt16L();
+	DEBUG_PRINTF2(_L("Owned File Array Size is : %d"), fileOwnershipArraySize); //TODO
+
+	DEBUG_PRINTF(_L("Reading Owned File Array")); //TODO
+	for (TInt i=0; i < fileOwnershipArraySize; i++)
+		{
+		TPtrC fileNamePtr = aResourceReader.ReadTPtrCL();
+		iOwnedFileArray.AppendL(fileNamePtr.AllocL());
+		DEBUG_PRINTF3(_L("File (index %d) is : %S "), i, &fileNamePtr); //TODO
+		}
+	}
+	
+void CAppRegInfoReader::ReadMimeTypesSupportedL(RResourceReader& aResourceReader, RPointerArray<Usif::CDataType>& aDataTypes)
+    {
+    DEBUG_PRINTF(_L("Reading MimeTypes supported")); //TODO
+    // Read LEN WORD STRUCT datatype_list[]
+    const TInt dataTypeArraySize = aResourceReader.ReadInt16L();
+    DEBUG_PRINTF2(_L("DataType Array Size is : %d"), dataTypeArraySize); //TODO
+    if (dataTypeArraySize <= 0)
+        return;
+    
+    for (TInt i=0; i < dataTypeArraySize; i++)
+        {
+        TInt32 priority = aResourceReader.ReadInt32L();
+                   
+        TPtrC8 typePtr = aResourceReader.ReadTPtrC8L();
+        TBuf16<KMaximumDataTypeLength> buf;
+        buf.Copy(typePtr); 
+        DEBUG_PRINTF3(_L("Service Info Priority (index %d) is : %d "), i, priority); //TODO
+        DEBUG_PRINTF3(_L("Service Info Type (index %d) is : %S "), i, &buf); //TODO
+        
+        Usif::CDataType* dataType = Usif::CDataType::NewLC(priority, buf);        
+        aDataTypes.AppendL(dataType);
+        CleanupStack::Pop(dataType);
+        }
+    }
+
+void CAppRegInfoReader::CheckForDefaultResourceFileL()
+    {
+    if (BaflUtils::FileExists(iFs, iTempLocalizableRscFileName))   
+        {      
+        DEBUG_PRINTF2(_L("Default localized resource file is present : %S"), &iTempLocalizableRscFileName);
+        CLocalizableRsc* localizedRsc = CLocalizableRsc::NewL();
+        localizedRsc->iFileName = iTempLocalizableRscFileName;
+        localizedRsc->iLanguage = TLanguage(0); //Non-localized details
+        iLocalizableRscArray.Append(localizedRsc);
+        }
+    }
+
+// Find the correct localized resource file based on the given language
+void CAppRegInfoReader::FindLocalizableResourceFilesL(const TLanguage& aApplicationLanguage)
+    {
+    DEBUG_PRINTF2(_L("Finding localizable resource files for language : %d"), aApplicationLanguage);
+        
+    TLanguagePath langEquivalents;
+    RArray<TLanguage> appLanguages;
+    BaflUtils::GetEquivalentLanguageList(aApplicationLanguage, langEquivalents);
+    TInt i = 0;
+    while (langEquivalents[i] != ELangNone)
+        {
+        appLanguages.Append(langEquivalents[i]);
+        ++i;
+        }
+    
+    TInt newLength = iTempLocalizableRscFileName.Length() - 2;
+    TFileName localizedRscFileNamePrefix(iTempLocalizableRscFileName.Left(newLength));
+    DEBUG_PRINTF2(_L("FileName after trimming last digits : %S"), &localizedRscFileNamePrefix); //TODO
+            
+    for (TInt i=0; i < appLanguages.Count(); ++i)
+        {                
+        TFileName localizedRscFileName(localizedRscFileNamePrefix);
+        if (appLanguages[i] > 99)
+            localizedRscFileName.AppendFormat(KThreeDigitSuffix, appLanguages[i]);
+        else
+            localizedRscFileName.AppendFormat(KTwoDigitSuffix, appLanguages[i]);
+        
+        // Check if the file exist
+        if (BaflUtils::FileExists(iFs, localizedRscFileName))
+            {
+            // Check if language already exists
+            TInt rscCount = iLocalizableRscArray.Count();
+            TBool isExists = EFalse;
+            for(TInt j = 0; j < rscCount; j++)
+                {
+                if(appLanguages[i] == iLocalizableRscArray[j]->iLanguage)
+                    {
+                    isExists = ETrue;
+                    break;
+                    }
+                }
+            
+            if(!isExists)
+                {
+                CLocalizableRsc* localizedRsc = CLocalizableRsc::NewL();
+                localizedRsc->iFileName = localizedRscFileName;
+                localizedRsc->iLanguage = appLanguages[i];
+                iLocalizableRscArray.Append(localizedRsc);
+                DEBUG_PRINTF2(_L("Localized rsc file is : %S"), &localizedRscFileName);
+                }            
+            break;
+            }
+        } 
+    
+    appLanguages.Close();
+    }
+
+TBool CAppRegInfoReader::TypeUidIsForRegistrationFile(const TUidType& aUidType)
+    {
+    return (aUidType[1].iUid==KUidAppRegistrationFile.iUid);
+    }
+
+void CAppRegInfoReader::Panic(TInt aPanic)
+    {
+    _LIT(KSWIAppRegInfoReaderPanic,"SWIAppRegInfoReaderPanic");
+    User::Panic(KSWIAppRegInfoReaderPanic, aPanic);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/apprscparser/apprscparser.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,120 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* apprscreader.h 
+*
+*/
+
+#ifndef __APPRSCPARSER_H__
+#define __APPRSCPARSER_H__
+
+#include <usif/scr/appregentries.h>
+
+class RFs;
+class CResourceFile;
+class RResourceReader;
+
+/**
+ * @file
+ * Application resource file parser for SWI
+ *
+ * @internalTechnology
+ * @prototype
+*/
+
+const TInt KMaxAppGroupName=0x10;
+const TInt KMaximumDataTypeLength=256;
+typedef TBuf<KMaxAppGroupName> TAppGroupName;
+
+/** Defines an application's attributes as a set of bit flags. */
+enum TCapabilityAttribute
+    {    
+    EBuiltAsDll         = 0x00000001,
+    EControlPanelItem   = 0x00000002,
+    ENonNative          = 0x00000004
+    };
+
+class CLocalizableRsc : public CBase
+    {
+public:
+    static CLocalizableRsc* NewL();
+    static CLocalizableRsc* NewLC();
+    ~CLocalizableRsc();
+    
+private:
+    CLocalizableRsc() {}
+    
+public:
+    TFileName iFileName;
+    CResourceFile* iRscFile;
+    TLanguage iLanguage;
+    };
+
+/**
+ This class reads application information from a combination of registration file,
+ optional localizable resource file and optional icon file.
+*/
+class CAppRegInfoReader : public CBase
+	{
+public:
+    IMPORT_C static CAppRegInfoReader* NewL(RFs& aFs, const TDesC& aRegistrationFileName);
+    IMPORT_C static CAppRegInfoReader* NewL(RFs& aFs, const RFile& aRegistrationFile);
+    IMPORT_C Usif::CApplicationRegistrationData* ReadL(const RArray<TLanguage>& aAppLanguages);    
+    IMPORT_C ~CAppRegInfoReader();
+
+private:
+    CAppRegInfoReader(RFs& aFs, const TDesC& aRegistrationFileName);
+    CAppRegInfoReader(RFs& aFs, const RFile& aRegistrationFile);
+	void ConstructL();
+	void ReadMandatoryInfoL(RResourceReader& aResourceReader);
+	void ReadNonLocalizableInfoL(RResourceReader& aResourceReader, TUint& aLocalizableResourceId, const RArray<TLanguage>& aAppLanguages);
+	void ReadNonLocalizableOptionalInfoL(RResourceReader& aResourceReader, const CResourceFile* aRegistrationFile);
+	void ReadMimeTypesSupportedL(RResourceReader& aResourceReader, RPointerArray<Usif::CDataType>& aDataTypes);
+	void ReadLocalizableInfoL(const CResourceFile& aResourceFile, TUint aResourceId, TLanguage aLanguage);
+	void ReadOpaqueDataL(TUint aResourceId, const CResourceFile* aRegistrationFile, RPointerArray<Usif::COpaqueData>& aOpaqueDataArray);
+	HBufC* CreateFullIconFileNameL(const TDesC& aIconFileName) const;
+	void FindLocalizableResourceFilesL(const TLanguage& aApplicationLanguage);
+	void CheckForDefaultResourceFileL();
+	TBool TypeUidIsForRegistrationFile(const TUidType& aUidType);    
+     
+    static void Panic(TInt aPanic);
+	
+public:
+	//From ReadMandatoryInfoL
+	HBufC* iAppBinaryFullName;
+	//From ReadNonLocalizableInfoL
+	Usif::TApplicationCharacteristics iAppCharacteristics;
+    TUint iDefaultScreenNumber;
+    RPointerArray<HBufC> iOwnedFileArray;
+    //From ReadNonLocalizableOptionalInfoL
+    RPointerArray<Usif::CServiceInfo> iServiceArray; 
+    RPointerArray<Usif::COpaqueData> iOpaqueDataArray;
+    //From ReadLocalizableInfoL
+    RPointerArray<Usif::CLocalizableAppInfo> iLocalizableAppInfoArray;    
+            	
+private:
+    RFs& iFs;
+    TUid iAppUid;   
+    TUidType iAppBinaryUidType;
+    TFileName iTempLocalizableRscFileName; // Localizsed resource file name from rsc
+    TBool iLegacyDataTypesPresent;
+    RPointerArray<CLocalizableRsc> iLocalizableRscArray;    
+            
+	const TDesC* iRegistrationFileName;
+	const RFile* iRegFileHandle;
+	TBool iReadOnlyOneLocalizedRscInfo;
+    TBool iUseRegFileHandle;
+	};
+
+#endif	// __APPRSCPARSER_H__
--- a/installationservices/swi/source/certstoretobin/AppGen.pm	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/certstoretobin/AppGen.pm	Fri Apr 16 15:05:20 2010 +0300
@@ -281,17 +281,27 @@
     
     chdir "$output_dir" or$util->error("chdir $output_dir failed");
     
- 	if ($BuildSystemVersion == "2") 
- 	{
- 		my $platformConfig = "$platform"."_"."$variant";
- 		$util->invoke("sbs -c $platformConfig");
- 	}
- 	else
- 	{
- 		$util->invoke("bldmake bldfiles");
- 		$util->invoke("abld build $platform $variant");
- 		$util->invoke("abld -check build $platform $variant");
- 	}
+    my $RVCTVersion = $ENV{'ARMV5VER'};
+    if((index($RVCTVersion, "RVCT4.0") != -1) && ($platform eq "armv5"))
+    {
+        my $platformConfig = "arm."."v5."."$variant".".rvct4_0";
+        $util->info($platformConfig);
+        $util->invoke("sbs -b bld.inf -c $platformConfig");
+    }
+    else
+    {	
+        if ($BuildSystemVersion == "2") 
+        {
+            my $platformConfig = "$platform"."_"."$variant";
+            $util->invoke("sbs -c $platformConfig");
+        }
+        else
+        {
+            $util->invoke("bldmake bldfiles");
+            $util->invoke("abld build $platform $variant");
+            $util->invoke("abld -check build $platform $variant");
+        }
+    }
  	
    
     chdir "$whence" or $util->error("chdir $whence failed");
--- a/installationservices/swi/source/certstoretobin/Swicertstoretobin.pl	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/certstoretobin/Swicertstoretobin.pl	Fri Apr 16 15:05:20 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of the License "Eclipse Public License v1.0"
+# under the terms of "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/installationservices/swi/source/certstoretobin/Util.pm	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/certstoretobin/Util.pm	Fri Apr 16 15:05:20 2010 +0300
@@ -251,6 +251,8 @@
     my $self = shift;
     die "self not defined\n" if (not defined($self));
 
+	my $sbsflag = index("@_", "sbs");
+	
     $self->info("Invoking: @_\n");
 
     # Redirect stderr into stdout.
@@ -266,9 +268,7 @@
 
     my @warnstrings = ();
 
-    my $BuildSystemVersion = $ENV{'SBS_VERSION'};
- 
- 	if ($BuildSystemVersion == 2) 
+  	if($sbsflag != -1)
  	{
  		foreach (@out)
  		{
--- a/installationservices/swi/source/plan/plan.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/plan/plan.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -38,6 +38,9 @@
 	iFilesToRunBeforeShutdown.ResetAndDestroy();
 	iFilesToRunAfterInstall.ResetAndDestroy();
 	iAppArcRegFiles.ResetAndDestroy();
+#ifdef  SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	iAffectedApps.Close();
+#endif
 	}
 
 EXPORT_C CPlan* CPlan::NewL()
@@ -152,5 +155,28 @@
 	{
 	iAppArcRegFiles.ResetAndDestroy();
 	}
-	
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK 
+EXPORT_C void CPlan::SetAffectedApps(RArray<TAppUpdateInfo>& aAppInfo)
+    {
+    TInt count = aAppInfo.Count();
+    for(TInt i = 0 ; i< count ; i++)
+        {
+        iAffectedApps.Append(aAppInfo[i]);
+        }
+    }
+    
+EXPORT_C void CPlan::GetAffectedApps(RArray<TAppUpdateInfo>& aAppInfo) const
+    {
+    TInt count = iAffectedApps.Count();
+    for(TInt i = 0 ; i< count ; i++)
+        {
+        aAppInfo.Append(iAffectedApps[i]);
+        }
+    }
+
+EXPORT_C void CPlan::ResetAffectedApps()
+    {
+    iAffectedApps.Reset();    
+    }
+#endif
--- a/installationservices/swi/source/plan/plan.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/plan/plan.h	Fri Apr 16 15:05:20 2010 +0300
@@ -26,6 +26,7 @@
 #define __PLAN_H__
 
 #include <e32base.h>
+#include "sislauncherclient.h"
 
 namespace Swi
 {
@@ -146,7 +147,12 @@
 	 * Resets the list of app arc registration files that have yet to be processed
 	 * */
 	IMPORT_C void ResetAppArcRegFiles();
-		
+	
+    #ifdef  SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK 
+	IMPORT_C void  SetAffectedApps(RArray<TAppUpdateInfo>& aAppInfo);	
+	IMPORT_C void  GetAffectedApps(RArray<TAppUpdateInfo>& aAppInfo) const;
+	IMPORT_C void  ResetAffectedApps();
+    #endif	
 private:
 	CPlan();
 	/// Information about the application being installed or uninstalled, used by the UI
@@ -169,7 +175,11 @@
 	/// is true if the plan contains ECOM plug-ins
 	TBool iContainsPlugins;
 	/// the list of AppArc registration files that haven't been processed
-	RPointerArray<TDesC> iAppArcRegFiles;
+	RPointerArray<TDesC> iAppArcRegFiles;	
+    #ifdef  SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK 
+	/// the list of apps affected by insatllation/upgrade, used to notify apparc
+	RArray<TAppUpdateInfo> iAffectedApps;
+    #endif
 	};
 
 // inline functions
--- a/installationservices/swi/source/securitymanager/secutils.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/securitymanager/secutils.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -18,6 +18,9 @@
 
 #include "secutils.h"
 #include <hash.h> 
+#include <e32property.h>
+#include <sacls.h>
+#include "log.h"
 
 namespace Swi
 {
@@ -65,5 +68,39 @@
 	CleanupStack::PopAndDestroy(digester);
 	return hashBuf;
 	}
-	
+
+EXPORT_C TInt SecUtils::PublishPackageUid(TUid aUid, TUid (&aUidList)[KMaxUidCount])
+    {
+    TInt i=0;
+    TInt count = aUidList[0].iUid;
+    
+    if (count>=KMaxUidCount-1)
+        return KErrOverflow;
+    
+    aUidList[++count] = aUid;    
+    aUidList[0].iUid++;
+    
+    TInt *tempUidList = (TInt*)aUidList;
+    TBuf<KMaxUidCount*sizeof(TUid)+1> buffer;
+    TInt *bufPtr = (TInt*)buffer.Ptr();
+    buffer.SetLength((count+1)*sizeof(TUid));
+    do        
+        {
+        *bufPtr = *tempUidList;
+        }while(++i<=count && bufPtr++ && tempUidList++);
+
+    return(RProperty::Set(KUidSystemCategory, KSWIUidsCurrentlyBeingProcessed, buffer));
+    }
+
+EXPORT_C TBool SecUtils::IsPackageUidPresent(TUid aUid, const TUid (&aUidList)[KMaxUidCount])
+    {
+    TInt count = aUidList[0].iUid;
+    for(TInt i=1;i<=count;i++)
+        {
+        if(aUidList[i]==aUid)
+            return ETrue;
+        }
+    return EFalse;
+    }
+
 } // namespace Swi
--- a/installationservices/swi/source/sisfile/siscontroller.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisfile/siscontroller.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -115,10 +115,12 @@
 	delete iPrerequisites;
 	delete iDataIndex;
 	delete iTrustStatus;
-	delete iCertChainConstraints;
-    
-    iCertChainIndices.Close();
-    iSignatureCertificateChains.ResetAndDestroy(); 
+	delete iCertChainConstraints;	
+	iCertChainIndices.Close();
+    iSignatureCertificateChains.ResetAndDestroy();
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	iApplicationInfo.ResetAndDestroy();
+	#endif
 	}
 
 void CController::ConstructL(MSisDataProvider& aDataProvider, TInt64& aBytesRead, TReadTypeBehaviour aTypeReadBehaviour)
--- a/installationservices/swi/source/sishelper/uissclienthandler.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sishelper/uissclienthandler.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -627,6 +627,22 @@
 	CleanupStack::PopAndDestroy(&stream);
     }
 
+ void CUissClientHandler::MapToApplicationInfoL(RCPointerArray<Swi::CNativeComponentInfo::CNativeApplicationInfo>& aNativeApplicationsInfo, RPointerArray<Usif::CComponentInfo::CApplicationInfo>& aApplicationsInfo)
+    {        
+        TInt count = aNativeApplicationsInfo.Count();
+        for (TInt i = 0; i < count; ++i)
+            {
+            Usif::CComponentInfo::CApplicationInfo* app ;
+            app =  Usif::CComponentInfo::CApplicationInfo::NewLC(aNativeApplicationsInfo[i]->AppUid(), aNativeApplicationsInfo[i]->Name(), aNativeApplicationsInfo[i]->GroupName(), aNativeApplicationsInfo[i]->IconFileName());                       
+            DEBUG_PRINTF2(_L("App Uid 0x%08x"),app->AppUid());
+            DEBUG_PRINTF2(_L("File Name %S"),&app->Name());
+            DEBUG_PRINTF2(_L("Group Name %S"),&app->GroupName());
+            DEBUG_PRINTF2(_L("Icon File Name %S"),&app->IconFileName());            
+            aApplicationsInfo.AppendL(app);
+            CleanupStack::Pop(app);
+            }        
+    }
+
 Usif::CComponentInfo::CNode* CUissClientHandler::MapToComponentInfoL(CNativeComponentInfo& aNativeComponentInfo)
 	{
 	// Create the array to store the children nodes.
@@ -643,8 +659,11 @@
 		CleanupStack::PushL(node);
 		children.AppendL(node);
 		CleanupStack::Pop(node);
-		}
-		
+		}		
+	
+	RPointerArray<Usif::CComponentInfo::CApplicationInfo> applicationInfo;	
+	CleanupResetAndDestroyPushL(applicationInfo);
+	MapToApplicationInfoL(aNativeComponentInfo.iApplications, applicationInfo);	
 	// Create the CNode object using the appropriate parameters.
 	// children for leaf nodes (bottom most nodes in the embedded tree) will be null.
 	Usif::CComponentInfo::CNode* node = Usif::CComponentInfo::CNode::NewLC(
@@ -660,8 +679,12 @@
 										aNativeComponentInfo.iUserGrantableCaps,
 										aNativeComponentInfo.iMaxInstalledSize,
 										aNativeComponentInfo.iHasExe,
+										aNativeComponentInfo.iIsDriveSelectionRequired,
+										&applicationInfo,
 										&children);
-	CleanupStack::Pop(node);
+	CleanupStack::Pop(node);	
+	CleanupStack::Pop(&applicationInfo);
+	applicationInfo.Close();
 	CleanupStack::Pop(&children);
 	children.Close();
 	return (node);
--- a/installationservices/swi/source/sishelper/uissclienthandler.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sishelper/uissclienthandler.h	Fri Apr 16 15:05:20 2010 +0300
@@ -28,10 +28,7 @@
 #include "swi/msisuihandlers.h"
 #include "swi/launcher.h"
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-namespace Usif
-	{
-	class CComponentInfo;
-	}
+#include <usif/sif/sifcommon.h>
 #include "swi/nativecomponentinfo.h"
 #endif
 
@@ -186,7 +183,7 @@
 	void AllocCompInfoBufL(TInt aBufSize);
 	void ConstructCompInfoFromBufferL();
 	Usif::CComponentInfo::CNode* MapToComponentInfoL(CNativeComponentInfo& aNativeComponentInfo);
-	
+	void MapToApplicationInfoL(RCPointerArray<Swi::CNativeComponentInfo::CNativeApplicationInfo>& aNativeApplicationsInfo, RPointerArray<Usif::CComponentInfo::CApplicationInfo>& aApplicationsInfo);
 	HBufC8* iCompInfoBuffer;		//< Component Information storage buffer
 	TPtr8   iCompInfoBufPtr;
 	
--- a/installationservices/swi/source/sislauncher/client/sislauncherclient.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sislauncher/client/sislauncherclient.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -29,326 +29,506 @@
 #include "sislauncherclientserver.h"
 #include "sisregistryfiledescription.h"
 #include "secutils.h"
-
 #include "arrayutils.h"  // from source/sisregistry/common/ 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include "swtypereginfo.h"
+#include "ipcutil.h"
 #endif
 
 using namespace Swi;
 
 static TInt StartSisLauncherServer()
-	{
-	const TUidType serverUid(KNullUid, KNullUid, KServerUid3);
-	RProcess server;
-	TInt err = server.Create(KSisLauncherServerImg, KNullDesC, serverUid);
-	if (err != KErrNone)
-		{
-		return err;
-		}
-	TRequestStatus stat;
-	server.Rendezvous(stat);
-	if (stat != KRequestPending)
-		{
-		server.Kill(0);		// abort startup
-		}
-	else
-		{
-		server.Resume();	// logon OK - start the server
-		}
-	User::WaitForRequest(stat);		// wait for start or death
-	// we can't use the 'exit reason' if the server panicked as this
-	// is the panic 'reason' and may be '0' which cannot be distinguished
-	// from KErrNone
-	err = (server.ExitType() == EExitPanic) ? KErrGeneral : stat.Int();
-	server.Close();
-	return err;
-	}
+    {
+    const TUidType serverUid(KNullUid, KNullUid, KServerUid3);
+    RProcess server;
+    TInt err = server.Create(KSisLauncherServerImg, KNullDesC, serverUid);
+    if (err != KErrNone)
+        {
+        return err;
+        }
+    TRequestStatus stat;
+    server.Rendezvous(stat);
+    if (stat != KRequestPending)
+        {
+        server.Kill(0);     // abort startup
+        }
+    else
+        {
+        server.Resume();    // logon OK - start the server
+        }
+    User::WaitForRequest(stat);     // wait for start or death
+    // we can't use the 'exit reason' if the server panicked as this
+    // is the panic 'reason' and may be '0' which cannot be distinguished
+    // from KErrNone
+    err = (server.ExitType() == EExitPanic) ? KErrGeneral : stat.Int();
+    server.Close();
+    return err;
+    }
 
 EXPORT_C TInt RSisLauncherSession::Connect()
 //
 // Connect to the server, attempting to start it if necessary
 //
-	{
-	TInt retry=2;
-	for (;;)
-		{
-		TInt err = CreateSession(KSisLauncherServerName, TVersion(0, 0, 0), 1);
-		if (err != KErrNotFound && err != KErrServerTerminated)
-			{
-			return err;
-			}
-		if (--retry==0)
-			{
-			return err;
-			}
-		err = StartSisLauncherServer();
-		if (err != KErrNone && err != KErrAlreadyExists)
-			{
-			return err;
-			}
-		}
-	}
+    {
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+    iBuffForLanguages = NULL;
+	#endif
+    
+    TInt retry=2;
+    for (;;)
+        {
+        TInt err = CreateSession(KSisLauncherServerName, TVersion(0, 0, 0), 1);
+        if (err != KErrNotFound && err != KErrServerTerminated)
+            {
+            return err;
+            }
+        if (--retry==0)
+            {
+            return err;
+            }
+        err = StartSisLauncherServer();
+        if (err != KErrNone && err != KErrAlreadyExists)
+            {
+            return err;
+            }
+        }    
+    }
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+EXPORT_C void RSisLauncherSession::Close()
+    {	
+    if (iBuffForLanguages)
+        {
+        delete iBuffForLanguages;
+        iBuffForLanguages = NULL;
+        }
+	    
+    RSessionBase::Close();
+    }
+#endif
 
 EXPORT_C void RSisLauncherSession::RunExecutableL(const TDesC& aFileName, TBool aWait)
-	{
-	TPckgC<TBool> wait(aWait);
-	User::LeaveIfError(SendReceive(ERunExecutable, TIpcArgs(&aFileName, &wait)));
-	}
+    {
+    TPckgC<TBool> wait(aWait);
+    User::LeaveIfError(SendReceive(ERunExecutable, TIpcArgs(&aFileName, &wait)));
+    }
 
 EXPORT_C void RSisLauncherSession::StartDocumentL(RFile& aFile, TBool aWait)
-	{
-	TPckgC<TBool> wait(aWait);
-	TIpcArgs ipcArgs;
-	aFile.TransferToServer(ipcArgs, 0, 1);
-	ipcArgs.Set(2, &wait);
-	User::LeaveIfError(SendReceive(EStartDocumentByHandle, ipcArgs));
-	}
+    {
+    TPckgC<TBool> wait(aWait);
+    TIpcArgs ipcArgs;
+    aFile.TransferToServer(ipcArgs, 0, 1);
+    ipcArgs.Set(2, &wait);
+    User::LeaveIfError(SendReceive(EStartDocumentByHandle, ipcArgs));
+    }
 
 EXPORT_C void RSisLauncherSession::StartByMimeL(RFile& aFile, const TDesC8& aMimeType, TBool aWait)
-	{
-	TPckgC<TBool> wait(aWait);
-	TIpcArgs ipcArgs;
-	aFile.TransferToServer(ipcArgs, 0, 1);
-	ipcArgs.Set(2, &aMimeType);
-	ipcArgs.Set(3, &wait);
-	
-	User::LeaveIfError(SendReceive(EStartByMimeByHandle, ipcArgs));
-	}
+    {
+    TPckgC<TBool> wait(aWait);
+    TIpcArgs ipcArgs;
+    aFile.TransferToServer(ipcArgs, 0, 1);
+    ipcArgs.Set(2, &aMimeType);
+    ipcArgs.Set(3, &wait);
+    
+    User::LeaveIfError(SendReceive(EStartByMimeByHandle, ipcArgs));
+    }
 
 EXPORT_C void RSisLauncherSession::StartDocumentL(const TDesC& aFileName, TBool aWait)
-	{
-	TPckgC<TBool> wait(aWait);
-	User::LeaveIfError(SendReceive(EStartDocument, TIpcArgs(&aFileName, &wait)));
-	}
+    {
+    TPckgC<TBool> wait(aWait);
+    User::LeaveIfError(SendReceive(EStartDocument, TIpcArgs(&aFileName, &wait)));
+    }
 
 EXPORT_C void RSisLauncherSession::StartByMimeL(const TDesC& aFileName, const TDesC8& aMimeType, TBool aWait)
-	{
-	TPckgC<TBool> wait(aWait);
-	User::LeaveIfError(SendReceive(EStartByMime, TIpcArgs(&aFileName, &aMimeType, &wait)));
-	}
+    {
+    TPckgC<TBool> wait(aWait);
+    User::LeaveIfError(SendReceive(EStartByMime, TIpcArgs(&aFileName, &aMimeType, &wait)));
+    }
 
 EXPORT_C void RSisLauncherSession::ShutdownAllL()
-	{
-	User::LeaveIfError(SendReceive(EShutdownAll));
-	}
+    {
+    User::LeaveIfError(SendReceive(EShutdownAll));
+    }
 
 EXPORT_C void RSisLauncherSession::CheckApplicationInUseL(RArray<TAppInUse>& aUidList)
-	{
-	TInt uidCount=aUidList.Count();
-	if (uidCount)
-		{
-		HBufC8* appInUseBuf=HBufC8::NewLC(uidCount * sizeof(TAppInUse));
-		TPtr8 appInUsePtr=appInUseBuf->Des();
-		TUint8* dataPtr(NULL);
-		TInt i;
-		for (i = 0 ; i < uidCount ; ++i)
-			{
-			dataPtr=reinterpret_cast<TUint8*>(&aUidList[i]);
-			appInUsePtr.Append(dataPtr, sizeof(TAppInUse));			
-			}	
-		User::LeaveIfError((SendReceive(ECheckApplicationInUse, TIpcArgs(&appInUsePtr))));
+    {
+    TInt uidCount=aUidList.Count();
+    if (uidCount)
+        {
+        HBufC8* appInUseBuf=HBufC8::NewLC(uidCount * sizeof(TAppInUse));
+        TPtr8 appInUsePtr=appInUseBuf->Des();
+        TUint8* dataPtr(NULL);
+        TInt i;
+        for (i = 0 ; i < uidCount ; ++i)
+            {
+            dataPtr=reinterpret_cast<TUint8*>(&aUidList[i]);
+            appInUsePtr.Append(dataPtr, sizeof(TAppInUse));         
+            }   
+        User::LeaveIfError((SendReceive(ECheckApplicationInUse, TIpcArgs(&appInUsePtr))));
 
-		//Copy the result back to the RArray
-		dataPtr=const_cast<TUint8*>(appInUsePtr.Ptr());
-		TAppInUse* appInUseDataPtr=reinterpret_cast<TAppInUse*>(dataPtr);
-		for (i = 0; i < uidCount; ++i)
-			{
-			aUidList[i]=appInUseDataPtr[i];	
-			}				
-			
-		CleanupStack::PopAndDestroy(appInUseBuf);				
-		}
-	}
-	
+        //Copy the result back to the RArray
+        dataPtr=const_cast<TUint8*>(appInUsePtr.Ptr());
+        TAppInUse* appInUseDataPtr=reinterpret_cast<TAppInUse*>(dataPtr);
+        for (i = 0; i < uidCount; ++i)
+            {
+            aUidList[i]=appInUseDataPtr[i]; 
+            }               
+            
+        CleanupStack::PopAndDestroy(appInUseBuf);               
+        }
+    }
+    
 EXPORT_C void RSisLauncherSession::ShutdownL(const RArray<TUid>& aUidList, TInt aTimeout)
-	{
-	TInt uidCount=aUidList.Count();
-	if (uidCount)	
-		{
-		HBufC8* tUidBuf=HBufC8::NewLC(uidCount * sizeof(TUid));
-		TPtr8 tUidBufPtr=tUidBuf->Des();
-		const TUint8* dataPtr(NULL);
-		
-		for (TInt i=0;i<uidCount;i++)
-			{
-			dataPtr=reinterpret_cast<const TUint8*>(&aUidList[i]);
-			tUidBufPtr.Append(dataPtr, sizeof(TUid));
-			}	
-		User::LeaveIfError((SendReceive(EShutdown, TIpcArgs(&tUidBufPtr, aTimeout))));		
-		CleanupStack::PopAndDestroy(tUidBuf);							
-		}
-	}
+    {
+    TInt uidCount=aUidList.Count();
+    if (uidCount)   
+        {
+        HBufC8* tUidBuf=HBufC8::NewLC(uidCount * sizeof(TUid));
+        TPtr8 tUidBufPtr=tUidBuf->Des();
+        const TUint8* dataPtr(NULL);
+        
+        for (TInt i=0;i<uidCount;i++)
+            {
+            dataPtr=reinterpret_cast<const TUint8*>(&aUidList[i]);
+            tUidBufPtr.Append(dataPtr, sizeof(TUid));
+            }   
+        User::LeaveIfError((SendReceive(EShutdown, TIpcArgs(&tUidBufPtr, aTimeout))));      
+        CleanupStack::PopAndDestroy(tUidBuf);                           
+        }
+    }
 
 EXPORT_C void RSisLauncherSession::NotifyNewAppsL(const RPointerArray<TDesC>& aFiles)
-	{
-	if (aFiles.Count() > 0)
-		{
-		CBufFlat* tmpBuf = CBufFlat::NewL(255);
-		CleanupStack::PushL(tmpBuf);
-			
-		RBufWriteStream stream(*tmpBuf);
-		CleanupClosePushL(stream);
+    {
+    if (aFiles.Count() > 0)
+        {
+        CBufFlat* tmpBuf = CBufFlat::NewL(255);
+        CleanupStack::PushL(tmpBuf);
+            
+        RBufWriteStream stream(*tmpBuf);
+        CleanupClosePushL(stream);
 
-		ExternalizePointerArrayL(aFiles, stream);
+        ExternalizePointerArrayL(aFiles, stream);
 
-		// Create an HBufC8 from the stream buf's length, and copy 
-		// the stream buffer into this descriptor
-		HBufC8* buffer = HBufC8::NewLC(tmpBuf->Size());
-		TPtr8 ptr(buffer->Des());
-		tmpBuf->Read(0, ptr, tmpBuf->Size());
-	
-		User::LeaveIfError(SendReceive(ENotifyNewApps, TIpcArgs(&ptr)));
-		CleanupStack::PopAndDestroy(3, tmpBuf);
-		}
-	}
+        // Create an HBufC8 from the stream buf's length, and copy 
+        // the stream buffer into this descriptor
+        HBufC8* buffer = HBufC8::NewLC(tmpBuf->Size());
+        TPtr8 ptr(buffer->Des());
+        tmpBuf->Read(0, ptr, tmpBuf->Size());
+    
+        User::LeaveIfError(SendReceive(ENotifyNewApps, TIpcArgs(&ptr)));
+        CleanupStack::PopAndDestroy(3, tmpBuf);
+        }
+    }
 
 EXPORT_C void RSisLauncherSession::RunAfterEcomNotificationL(const RPointerArray<CSisRegistryFileDescription>& aFileList)
-	{
-	TInt count = aFileList.Count();
-	if (count <= 0)
-		{
-		return; 
-		}
+    {
+    TInt count = aFileList.Count();
+    if (count <= 0)
+        {
+        return; 
+        }
 
-	RFs fs;
-	User::LeaveIfError(fs.Connect());
-	CleanupClosePushL(fs);
-	User::LeaveIfError(fs.ShareProtected());
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    User::LeaveIfError(fs.ShareProtected());
 
-	for (TInt i = 0; i < count; ++i)
-		{
-		CSisRegistryFileDescription* fileDes = aFileList[i];
+    for (TInt i = 0; i < count; ++i)
+        {
+        CSisRegistryFileDescription* fileDes = aFileList[i];
 
-		// open the file entry
-		TEntry entry;
-		if (fs.Entry(fileDes->Target(), entry) != KErrNone)
-			{
-			// just ignore, there's nothing we can do and we should try to process the
-			// remaining files.
-			continue;
-			}
-		
-		TIpcArgs ipcArgs;
-		TBool waitEnd = 0 != (fileDes->OperationOptions() & Sis::EInstFileRunOptionWaitEnd);
-		TPckgC<TBool> wait(waitEnd);
-		ipcArgs.Set(2, &wait);
+        // open the file entry
+        TEntry entry;
+        if (fs.Entry(fileDes->Target(), entry) != KErrNone)
+            {
+            // just ignore, there's nothing we can do and we should try to process the
+            // remaining files.
+            continue;
+            }
+        
+        TIpcArgs ipcArgs;
+        TBool waitEnd = 0 != (fileDes->OperationOptions() & Sis::EInstFileRunOptionWaitEnd);
+        TPckgC<TBool> wait(waitEnd);
+        ipcArgs.Set(2, &wait);
 
-		TInt err = KErrNone;
+        TInt err = KErrNone;
 
-		if (entry.IsTypeValid() && SecUtils::IsExe(entry))
-			{
-			ipcArgs.Set(0,&fileDes->Target());
-			err = SendReceive(EQueueRunExecutable, ipcArgs);
-			}
-		else 
-			{
-			RFile file;
-			CleanupClosePushL(file);
-			err = file.Open(fs, fileDes->Target(), EFileShareExclusive|EFileWrite);
+        if (entry.IsTypeValid() && SecUtils::IsExe(entry))
+            {
+            ipcArgs.Set(0,&fileDes->Target());
+            err = SendReceive(EQueueRunExecutable, ipcArgs);
+            }
+        else 
+            {
+            RFile file;
+            CleanupClosePushL(file);
+            err = file.Open(fs, fileDes->Target(), EFileShareExclusive|EFileWrite);
 
-			HBufC8* mimeType = 0;
+            HBufC8* mimeType = 0;
 
-			if (err == KErrNone)
-				{
-				if (fileDes->OperationOptions() & Sis::EInstFileRunOptionByMimeType)
-					{
-					mimeType = HBufC8::NewLC(fileDes->MimeType().Length());
-					TPtr8 ptr = mimeType->Des();
-					ptr.Copy(fileDes->MimeType());
-					}
+            if (err == KErrNone)
+                {
+                if (fileDes->OperationOptions() & Sis::EInstFileRunOptionByMimeType)
+                    {
+                    mimeType = HBufC8::NewLC(fileDes->MimeType().Length());
+                    TPtr8 ptr = mimeType->Des();
+                    ptr.Copy(fileDes->MimeType());
+                    }
 
-				if (file.TransferToServer(ipcArgs, 0, 1) != KErrNone)
-					{
-					// best effort is to continue with remaining exes
-					}	
-				else if (mimeType != 0)
-					{
-					TPtrC8 x = mimeType->Des();
-					ipcArgs.Set(3, &x);
-					err = SendReceive(EQueueStartByMimeByHandle, ipcArgs);
-					}
-				else
-					{
-					err = SendReceive(EQueueStartDocumentByHandle, ipcArgs);
-					}
-				if (mimeType != 0)
-					{
-					CleanupStack::PopAndDestroy(mimeType);
-					}
-				}
-			CleanupStack::PopAndDestroy(&file); 
-			}
-		// best effort is to continue with other exes in the event of an error
-		// so do nothing here.
-		}
-	CleanupStack::PopAndDestroy(&fs);
-	User::LeaveIfError(SendReceive(EExecuteQueue));
-	
-	}
+                if (file.TransferToServer(ipcArgs, 0, 1) != KErrNone)
+                    {
+                    // best effort is to continue with remaining exes
+                    }   
+                else if (mimeType != 0)
+                    {
+                    TPtrC8 x = mimeType->Des();
+                    ipcArgs.Set(3, &x);
+                    err = SendReceive(EQueueStartByMimeByHandle, ipcArgs);
+                    }
+                else
+                    {
+                    err = SendReceive(EQueueStartDocumentByHandle, ipcArgs);
+                    }
+                if (mimeType != 0)
+                    {
+                    CleanupStack::PopAndDestroy(mimeType);
+                    }
+                }
+            CleanupStack::PopAndDestroy(&file); 
+            }
+        // best effort is to continue with other exes in the event of an error
+        // so do nothing here.
+        }
+    CleanupStack::PopAndDestroy(&fs);
+    User::LeaveIfError(SendReceive(EExecuteQueue));
+    
+    }
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 EXPORT_C void RSisLauncherSession::ParseSwTypeRegFileL(RFile& aFile, RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray)
-	{
-	// Pack the file handle
-	TIpcArgs ipcArgs;
-	aFile.TransferToServer(ipcArgs, 0, 1);
+    {
+    // Pack the file handle
+    TIpcArgs ipcArgs;
+    aFile.TransferToServer(ipcArgs, 0, 1);
 
-	// Allocate a buffer for the parsed registration info
-	TInt bufLen = 0;
-	User::LeaveIfError(aFile.Size(bufLen));
-	HBufC8* buf = HBufC8::NewLC(bufLen); // using the size of the file here is overhead but provides very simple code
-	
-	// Packe the buffer
-	TPtr8 bufPtr(buf->Des());
-	ipcArgs.Set(2, &bufPtr);
-	
-	// Send request to the server
-	User::LeaveIfError(SendReceive(EParseSwTypeRegFile, ipcArgs));
+    // Allocate a buffer for the parsed registration info
+    TInt bufLen = 0;
+    User::LeaveIfError(aFile.Size(bufLen));
+    HBufC8* buf = HBufC8::NewLC(bufLen); // using the size of the file here is overhead but provides very simple code
+    
+    // Packe the buffer
+    TPtr8 bufPtr(buf->Des());
+    ipcArgs.Set(2, &bufPtr);
+    
+    // Send request to the server
+    User::LeaveIfError(SendReceive(EParseSwTypeRegFile, ipcArgs));
 
-	// Unpack the parsed registration info
-	RDesReadStream rs(*buf);
-	CleanupClosePushL(rs);
-	SoftwareTypeRegInfoUtils::UnserializeArrayL(rs, aSwTypeRegInfoArray);
+    // Unpack the parsed registration info
+    RDesReadStream rs(*buf);
+    CleanupClosePushL(rs);
+    SoftwareTypeRegInfoUtils::UnserializeArrayL(rs, aSwTypeRegInfoArray);
 
-	CleanupStack::PopAndDestroy(2, buf); // rs
-	}
+    CleanupStack::PopAndDestroy(2, buf); // rs
+    }
 
 EXPORT_C void RSisLauncherSession::RegisterSifLauncherMimeTypesL(const RPointerArray<HBufC8>& aMimeTypes)
-	{
-	RegisterSifLauncherMimeTypesImplL(aMimeTypes, ETrue);
-	}
+    {
+    RegisterSifLauncherMimeTypesImplL(aMimeTypes, ETrue);
+    }
 
 EXPORT_C void RSisLauncherSession::UnregisterSifLauncherMimeTypesL(const RPointerArray<HBufC8>& aMimeTypes)
-	{
-	RegisterSifLauncherMimeTypesImplL(aMimeTypes, EFalse);
-	}
+    {
+    RegisterSifLauncherMimeTypesImplL(aMimeTypes, EFalse);
+    }
 
 void RSisLauncherSession::RegisterSifLauncherMimeTypesImplL(const RPointerArray<HBufC8>& aMimeTypes, TBool aRegister)
-	{
-	// Calculate the size of aMimeTypes in a buffer
-	TInt bufLen = sizeof(TInt);
-	for (TInt i=0; i<aMimeTypes.Count(); ++i)
+    {
+    // Calculate the size of aMimeTypes in a buffer
+    TInt bufLen = sizeof(TInt);
+    for (TInt i=0; i<aMimeTypes.Count(); ++i)
+        {
+        bufLen += sizeof(TInt) + aMimeTypes[i]->Size();
+        }
+    
+    // Externalize MIME types
+    HBufC8* buf = HBufC8::NewLC(bufLen);
+    TPtr8 bufPtr(buf->Des());
+
+    RDesWriteStream ws(bufPtr);
+    CleanupClosePushL(ws);
+    
+    ExternalizePointerArrayL(aMimeTypes, ws);
+
+    ws.CommitL();
+    CleanupStack::PopAndDestroy(&ws);
+
+    // Send MIME types to the server
+    TIpcArgs ipcArgs(&bufPtr);
+    User::LeaveIfError(SendReceive(aRegister?ERegisterSifLauncherMimeTypes:EUnregisterSifLauncherMimeTypes, ipcArgs));
+
+    CleanupStack::PopAndDestroy(buf);
+    }
+    
+EXPORT_C void  RSisLauncherSession::AsyncParseResourceFileSizeL(const RFile& aRegistrationFile, const RArray<TLanguage>& aAppLanguages, TRequestStatus& aStatus)
+    {
+    TInt langCount = aAppLanguages.Count();
+    const TInt maxBufSize= sizeof(TInt) + langCount*sizeof(TLanguage);   // Size(Number of entries) + (Number of entries)*(Size of Language Id)
+   
+    // Allocate buffer for the array
+    if (iBuffForLanguages)
+        {
+        delete iBuffForLanguages;
+        iBuffForLanguages = NULL;
+        }
+    iBuffForLanguages = HBufC8::NewMaxL(maxBufSize);
+    TPtr8 ptrBufForLanguages = iBuffForLanguages->Des();
+
+    RDesWriteStream ins(ptrBufForLanguages);
+    CleanupClosePushL(ins);
+    ins.WriteInt32L(langCount);
+    for (TInt i = 0; i < langCount; ++i)
+        {
+        ins.WriteInt32L((TInt)(aAppLanguages[i]));
+        }
+       
+    ins.CommitL();
+    CleanupStack::PopAndDestroy(&ins);
+    
+    TIpcArgs args;
+    aRegistrationFile.TransferToServer(args, 0, 1);
+    args.Set(2,&ptrBufForLanguages);
+    SendReceive(EAsyncParseResourceFileSize, args, aStatus);    
+    }
+    
+EXPORT_C Usif::CApplicationRegistrationData*  RSisLauncherSession::AsyncParseResourceFileDataL(TInt aDataSize)
+    {
+    HBufC8* appRegData=HBufC8::NewMaxLC(aDataSize);
+    TPtr8 appRegDataDes = appRegData->Des();
+    TInt err=SendReceive(EAsyncParseResourceFileData, TIpcArgs(&appRegDataDes ));        
+    User::LeaveIfError(err);
+    
+    Usif::CApplicationRegistrationData* applicationData= Usif::CApplicationRegistrationData::NewLC();
+    // Got the buffer, internalise the arrays
+    RDesReadStream readStream(*appRegData);
+    CleanupClosePushL(readStream);
+    applicationData->InternalizeL(readStream);
+    CleanupStack::PopAndDestroy(&readStream); 
+    CleanupStack::Pop(applicationData);
+    CleanupStack::PopAndDestroy(appRegData);
+	if (iBuffForLanguages)
 		{
-		bufLen += sizeof(TInt) + aMimeTypes[i]->Size();
+		delete iBuffForLanguages;
+		iBuffForLanguages = NULL;
 		}
-	
-	// Externalize MIME types
-	HBufC8* buf = HBufC8::NewLC(bufLen);
-	TPtr8 bufPtr(buf->Des());
+	return applicationData;
+    }
+
+EXPORT_C Usif::CApplicationRegistrationData* RSisLauncherSession::SyncParseResourceFileL(const RFile& aRegistrationFile, const RArray<TLanguage>& aAppLanguages)
+    {
+	// Get the size of data
+    TRequestStatus status;
+    AsyncParseResourceFileSizeL (aRegistrationFile , aAppLanguages , status );
+    User::WaitForRequest(status);
+    TInt size = status.Int(); 
+    if (size < KErrNone)
+        {
+        User::LeaveIfError(status.Int());
+        return NULL;
+        }
 
-	RDesWriteStream ws(bufPtr);
-	CleanupClosePushL(ws);
-	
-	ExternalizePointerArrayL(aMimeTypes, ws);
+	// Return the app reg data
+    Usif::CApplicationRegistrationData* appRegData = AsyncParseResourceFileDataL(size);
+    return appRegData;
+    }
+
+
+EXPORT_C void RSisLauncherSession::NotifyNewAppsL(const RPointerArray<Usif::CApplicationRegistrationData>& aAppRegData)
+    {
+    if (aAppRegData.Count() > 0)
+        {
+        TInt bufLen = sizeof(TInt);
+        const TInt appCount = aAppRegData.Count();
+        for (TInt i=0; i<appCount; ++i)
+            {
+			bufLen += GetObjectSizeL(aAppRegData[i]);
+            }
+
+        HBufC8* buffer = HBufC8::NewLC(bufLen);
+        TPtr8 bufPtr(buffer->Des());
 
-	ws.CommitL();
-	CleanupStack::PopAndDestroy(&ws);
+        RDesWriteStream ws(bufPtr);
+        CleanupClosePushL(ws);
+
+        ws.WriteInt32L(appCount);
+        for (TInt i=0; i<appCount; ++i)
+            {
+            const Usif::CApplicationRegistrationData& info = *aAppRegData[i];
+            ws << info;
+            }
+        ws.CommitL();
+        CleanupStack::PopAndDestroy(&ws);
+        
+        TIpcArgs ipcArgs(&bufPtr);
+        User::LeaveIfError(SendReceive(ENotifyNewAppsData, ipcArgs));
+
+        CleanupStack::PopAndDestroy(buffer);
+        }
+    }
+
 
-	// Send MIME types to the server
-	TIpcArgs ipcArgs(&bufPtr);
-	User::LeaveIfError(SendReceive(aRegister?ERegisterSifLauncherMimeTypes:EUnregisterSifLauncherMimeTypes, ipcArgs));
+EXPORT_C void RSisLauncherSession::NotifyNewAppsL(const RArray<TAppUpdateInfo>& aAppUpdateInfo)
+    {
+    if (aAppUpdateInfo.Count() > 0)
+        {
+        TInt bufLen = sizeof(TInt);
+        const TInt appCount = aAppUpdateInfo.Count();
+        for (TInt i=0; i<appCount; ++i)
+            {
+            bufLen += GetObjectSizeL(&aAppUpdateInfo[i]);
+            }
+
+        HBufC8* buffer = HBufC8::NewLC(bufLen);
+        TPtr8 bufPtr(buffer->Des());
+
+        RDesWriteStream ws(bufPtr);
+        CleanupClosePushL(ws);
 
-	CleanupStack::PopAndDestroy(buf);
-	}
+        ws.WriteInt32L(appCount);
+        for (TInt i=0; i<appCount; ++i)
+            {
+            const TAppUpdateInfo& info = aAppUpdateInfo[i];
+            ws << info;
+            }
+        ws.CommitL();
+        CleanupStack::PopAndDestroy(&ws);
+        
+        TIpcArgs ipcArgs(&bufPtr);
+        User::LeaveIfError(SendReceive(ENotifyApparcForApps, ipcArgs));
+
+        CleanupStack::PopAndDestroy(buffer);
+        }
+    }
+
+EXPORT_C TAppUpdateInfo::TAppUpdateInfo()
+    {    
+    }
+
+EXPORT_C TAppUpdateInfo::TAppUpdateInfo(TUid aAppUid, InstallActions aAction)
+    {
+    iAppUid = aAppUid;
+    iAction = aAction;
+    }
+
+EXPORT_C void TAppUpdateInfo::InternalizeL(RReadStream& aReadStream)
+    {
+    iAppUid = TUid::Uid(aReadStream.ReadUint32L());
+    iAction = (Swi::InstallActions)aReadStream.ReadUint32L();
+    }
+
+EXPORT_C void TAppUpdateInfo::ExternalizeL(RWriteStream& aWriteStream) const
+    {
+    aWriteStream.WriteUint32L(iAppUid.iUid);
+    aWriteStream.WriteInt32L(iAction);
+    }
+
 #endif
--- a/installationservices/swi/source/sislauncher/common/sislauncherclientserver.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sislauncher/common/sislauncherclientserver.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -50,5 +50,12 @@
 	EParseSwTypeRegFile,
 	ERegisterSifLauncherMimeTypes,
 	EUnregisterSifLauncherMimeTypes,
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+    EAsyncParseResourceFileSize,     //Parse registration resource file, Async Function
+    EAsyncParseResourceFileData,	 //Return parsed resource data
+    ENotifyNewAppsData,              //Notify Apparc about application data
+    ENotifyApparcForApps,          //Notify Apparc about updated applications
+    #endif
 	ESeparatorEndAll	
+   
 	};
--- a/installationservices/swi/source/sislauncher/server/sislauncherserver.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sislauncher/server/sislauncherserver.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -161,6 +161,7 @@
 	// Range of utility services for Post manufacture management of Layered Execution Environemnts
 	EParseSwTypeRegFile,
 	EUnregisterSifLauncherMimeTypes,
+	EAsyncParseResourceFileSize,
 #endif
 	ESeparatorEndAll,
 	};
@@ -171,16 +172,16 @@
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	1, // Utility services used by InstallServer
 	2, // Utility services used by SisRegistryServer
-#endif
+	CPolicyServer::EAlwaysPass,
+#endif	
 	CPolicyServer::ENotSupported,
 	};
-
 const CPolicyServer::TPolicyElement CSisLauncherServer::iPolicyElements[] = 
 	{
 	{_INIT_SECURITY_POLICY_C1(ECapabilityTCB), CPolicyServer::EFailClient},
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	{_INIT_SECURITY_POLICY_S0(KInstallServerUid), CPolicyServer::EFailClient},
-	{_INIT_SECURITY_POLICY_S0(KSisRegistryServerUid), CPolicyServer::EFailClient},
+	{_INIT_SECURITY_POLICY_S0(KSisRegistryServerUid), CPolicyServer::EFailClient},	
 #endif
 	};
 
@@ -266,8 +267,6 @@
 		HandleShutdownL(threadId, ETrue);
 	}
 
-
-
 void CSisLauncherServer::ForceShutdownL(TUid aUid)
 	{
 	TBool needToScanFullList;
@@ -553,6 +552,22 @@
 
 	CleanupStack::PopAndDestroy();
 	}
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+void CSisLauncherServer::NotifyNewAppsL(const RPointerArray<Usif::CApplicationRegistrationData>& aApplicationRegistrationData)
+	{
+	RApaLsSession apaSession;
+	User::LeaveIfError(apaSession.Connect());
+	CleanupClosePushL(apaSession);
+
+	// UI frameworks advise ignoring the return code
+	// Uncomment below line when apparc has implemented the following
+	// apaSession.ForceRegistration(aApplicationRegistrationData);
+	TInt appCount = aApplicationRegistrationData.Count(); //TODO: A fix for compiler warning, to be removed
+
+	CleanupStack::PopAndDestroy();
+	}
+#endif
 #endif
 
 	
--- a/installationservices/swi/source/sislauncher/server/sislauncherserver.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sislauncher/server/sislauncherserver.h	Fri Apr 16 15:05:20 2010 +0300
@@ -27,7 +27,9 @@
 #include <f32file.h>
 #include <e32property.h>
 #include <e32uid.h>
-
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include <usif/scr/appregentries.h>
+#endif
 #ifndef _CSISLAUNCHERSERVER_H_
 #define _CSISLAUNCHERSERVER_H_
 
@@ -91,6 +93,9 @@
 	void ShutdownL();
 	void ShutdownL(TUid aUid, TInt aTimeout); 
 	void NotifyNewAppsL(const RPointerArray<TDesC>& aFiles);
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	void NotifyNewAppsL(const RPointerArray<Usif::CApplicationRegistrationData>& aApplicationRegistrationData);
+	#endif
 #endif		
 	void HandleShutdownL(TThreadId aThread, TBool aKillOnTimeout = EFalse);
 	void ForceShutdownL(TUid aUid);
@@ -100,7 +105,6 @@
 	CSisLauncherServer();
 	void ConstructL();
 	CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
-	
 	void LongServerShutdown();
 	void ShortServerShutdown();
 	void CancelShutdown();
@@ -108,7 +112,7 @@
 	// Server Policies
 	// separate the policies into handled and not handled
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-	static const TUint iRangeCount=4;
+	static const TUint iRangeCount=5;
 #else
 	static const TUint iRangeCount=2;
 #endif
--- a/installationservices/swi/source/sislauncher/server/sislaunchersession.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sislauncher/server/sislaunchersession.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -43,6 +43,12 @@
 #include "arrayutils.h"  // from source/sisregistry/common/ 
 #include "log.h"
 #include "queueprocessor.h"
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include "apprscparser.h"
+#include "ipcutil.h"
+#include <usif/scr/appregentries.h>
+#include "sislauncherclient.h" 
+#endif
 
 namespace Swi 
 {
@@ -75,6 +81,9 @@
 
 CSisLauncherSession::~CSisLauncherSession()
 	{
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	delete iCurrentAppRegData;
+	#endif
 	Server().DropSession();
 	}
 void CSisLauncherSession::DoRunExecutableL(const RMessage2& aMessage) 
@@ -330,6 +339,7 @@
 			RDesReadStream stream(*buf);
 			RPointerArray<TDesC> files;
 			InternalizePointerArrayL(files, stream);
+			
 			if (Server().BootUpMode() == KTextShell) 
 				{
 				// emulator tests running in textshell or in textshell ROM (#def SWI_TEXTSHELL_ROM)
@@ -340,12 +350,12 @@
 				// emulatore running with GUI
 				#ifndef SWI_TEXTSHELL_ROM
 				Server().NotifyNewAppsL(files);
-				#endif
+				#endif // SWI_TEXTSHELL_ROM
 				}
+			
 			files.ResetAndDestroy();
-
 			CleanupStack::PopAndDestroy(buf);
-
+			
 			aMessage.Complete(KErrNone);
 			break;
 			}
@@ -373,6 +383,62 @@
 			#endif
 			aMessage.Complete(KErrNone);
 			break;
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	    case EAsyncParseResourceFileSize:
+            {
+            TRAPD(err,err = AsyncParseResourceFileSizeL(aMessage));            
+            aMessage.Complete(err);            
+            break;
+            }
+        case EAsyncParseResourceFileData:
+            {
+            TRAPD(err,AsyncParseResourceFileDataL(aMessage));
+            aMessage.Complete(err);
+            break;
+            }
+ 		case ENotifyNewAppsData:
+			{
+			RIpcReadStream readStream;
+			readStream.Open(aMessage, 0);
+			CleanupClosePushL(readStream);
+
+			RPointerArray<Usif::CApplicationRegistrationData> appRegInfo;
+			CleanupClosePushL(appRegInfo);
+
+			const TInt numElems = readStream.ReadInt32L();
+			for (TInt i=0; i<numElems; ++i)
+				{
+				Usif::CApplicationRegistrationData* info = Usif::CApplicationRegistrationData::NewL(readStream);
+				CleanupStack::PushL(info);
+				appRegInfo.AppendL(info);
+				CleanupStack::Pop(info);
+				}
+
+			if (Server().BootUpMode() == KTextShell) 
+				{
+				// emulator tests running in textshell or in textshell ROM (#def SWI_TEXTSHELL_ROM)
+				DEBUG_PRINTF(_L8("Sis Launcher Server - textshell - skipping notification of new applications."));
+				}
+			else
+				{
+				// emulatore running with GUI
+				#ifndef SWI_TEXTSHELL_ROM
+				Server().NotifyNewAppsL(appRegInfo);
+			#endif // SWI_TEXTSHELL_ROM
+				}
+			appRegInfo.ResetAndDestroy();
+			CleanupStack::PopAndDestroy(2);
+			aMessage.Complete(KErrNone);
+			break;
+			}
+ 		case ENotifyApparcForApps:
+ 		    {
+            #ifndef SWI_TEXTSHELL_ROM
+ 		    NotifyApparcForApps(aMessage); 	
+            #endif
+ 		    break;
+ 		    }
+#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	    case EQueueRunExecutable:
 	    	//fall through
 	    case EQueueStartDocumentByHandle:
@@ -428,9 +494,80 @@
 	}
 
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	 
+TInt CSisLauncherSession::AsyncParseResourceFileSizeL(const RMessage2& aMessage)
+    {
+    // We only support one call at once currently
+    if (iInAsyncParseResourceFile)
+        {
+        return KErrInUse;
+        }
+    else
+        {
+        iInAsyncParseResourceFile=ETrue;
+        delete iCurrentAppRegData;
+        iCurrentAppRegData=NULL;
 
+        RFs fs;
+        RFile file;
+        User::LeaveIfError(fs.Connect());
+		CleanupClosePushL(fs);
+        file.AdoptFromClient(aMessage, 0, 1);   
+		CleanupClosePushL(file);
+        //Read languages need to pass
+        TInt bufSize=0;
+        bufSize = aMessage.GetDesMaxLength(2);
+        HBufC8* bufToHoldLanguages = HBufC8::NewLC(bufSize);
+        TPtr8 bufPtrDscToHoldLanguages = bufToHoldLanguages->Des();
+        aMessage.ReadL(2, bufPtrDscToHoldLanguages, 0);
+      
+        RDesReadStream inStream(bufPtrDscToHoldLanguages);
+        CleanupClosePushL(inStream);
+        TInt32 languageCount = inStream.ReadInt32L();
+
+		RArray<TLanguage> appLanguages;
+        CleanupClosePushL(appLanguages);
 
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+        for (TInt i=0; i<languageCount; i++)
+           appLanguages.AppendL((TLanguage)inStream.ReadInt32L());
+                           
+        CAppRegInfoReader *appRegInfoReader = CAppRegInfoReader::NewL(fs,file);
+        CleanupStack::PushL(appRegInfoReader);
+        
+        TRAPD(err,iCurrentAppRegData = appRegInfoReader->ReadL(appLanguages));
+      	if (KErrNone != err)
+			{
+			iInAsyncParseResourceFile=EFalse;
+            User::Leave(err);
+			}
+		
+		iInAsyncParseResourceFile=EFalse;	
+        TInt objectSize=0;
+        objectSize= GetObjectSizeL(iCurrentAppRegData);
+        if (objectSize > 0)
+            {
+            //Everything went fine so return the buffer size.            
+            CleanupStack::PopAndDestroy(6,&fs);  
+            return objectSize;			
+            }
+        else
+            User::Leave(KErrUnknown);
+        }
+    return KErrNone;
+    }
+   
+void CSisLauncherSession::AsyncParseResourceFileDataL(const RMessage2& aMessage)
+    {
+    if (iCurrentAppRegData)
+        {
+        WriteObjectDataL(aMessage, 0, iCurrentAppRegData); 
+        delete iCurrentAppRegData;
+        iCurrentAppRegData=NULL;
+        }
+    else
+        User::Leave(KErrArgument);
+    }
+
 void CSisLauncherSession::ParseSwTypeRegFileL(const RMessage2& aMessage)
 	{
 	// Unpack the file handle
@@ -463,6 +600,46 @@
 	}
 
 #ifndef SWI_TEXTSHELL_ROM
+void CSisLauncherSession::NotifyApparcForApps(const RMessage2& aMessage)
+    {
+    /*RIpcReadStream readStream;
+    readStream.Open(aMessage, 0);
+    CleanupClosePushL(readStream);    
+    RArray<TApaAppUpdateInfo> apparcAppInfoArray;
+    CleanupClosePushL(apparcAppInfoArray);        
+    RApaLsSession apaSession;
+    User::LeaveIfError(apaSession.Connect());
+    CleanupClosePushL(apaSession);
+    TApaAppAction appaction;
+    const TInt numElems = readStream.ReadInt32L();
+    //Convert the local structure into the structure required by apparc
+    for (TInt i=0; i<numElems; ++i)
+        {
+        TAppUpdateInfo appInfo;
+        appInfo.InternalizeL(readStream);   
+        if(appInfo.iAction == EAppInstalled)
+            {
+            appaction = EApparcAppInstalled;
+            }
+        else if(appInfo.iAction == EAppUninstalled)
+            {
+            appaction = EApparcAppUninstalled;
+            }
+        TApaAppUpdateInfo apparcAppUpdateInfo(appInfo.iAppUid, appaction);
+        apparcAppInfoArray.Append(apparcAppUpdateInfo);                    
+        DEBUG_PRINTF2(_L("AppUid is 0x%x"), appInfo.iAppUid);
+        DEBUG_PRINTF2(_L("Action is %d"), appInfo.iAction);         
+        }    
+    
+    if(numElems)
+        {
+        apaSession.UpdateAppListL(apparcAppInfoArray);
+        }
+        
+    CleanupStack::PopAndDestroy(3, &readStream);
+    */aMessage.Complete(KErrNone);       
+    }
+
 void CSisLauncherSession::RegisterSifLauncherMimeTypesL(const RMessage2& aMessage)
 	{
 	RegisterSifLauncherMimeTypesImplL(aMessage, ETrue);
--- a/installationservices/swi/source/sislauncher/server/sislaunchersession.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sislauncher/server/sislaunchersession.h	Fri Apr 16 15:05:20 2010 +0300
@@ -25,7 +25,10 @@
 
 #include <e32base.h>
 #include "sislauncherserver.h"
-
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK  
+#include <usif/scr/appregentries.h>
+#include "nativecomponentinfo.h"
+#endif
 namespace Swi
 {
 class CSisRegistryFileDescription;
@@ -50,6 +53,8 @@
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	void ParseSwTypeRegFileL(const RMessage2& aMessage);
+    TInt AsyncParseResourceFileSizeL(const RMessage2& aMessage);
+    void AsyncParseResourceFileDataL(const RMessage2& aMessage);    
 #endif
 
 #ifndef SWI_TEXTSHELL_ROM
@@ -57,6 +62,7 @@
 	void RegisterSifLauncherMimeTypesL(const RMessage2& aMessage);
 	void UnregisterSifLauncherMimeTypesL(const RMessage2& aMessage);
 	void RegisterSifLauncherMimeTypesImplL(const RMessage2& aMessage, TBool aRegister);
+	void NotifyApparcForApps(const RMessage2& aMessage);
 #endif
 #endif
 	void DoRunExecutableL(const RMessage2& aMessage);
@@ -69,6 +75,10 @@
 private:
 	RMessagePtr2 iReceiveMsg;
 	TInt iReceiveLen;
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK 
+    Usif::CApplicationRegistrationData* iCurrentAppRegData;
+    TBool iInAsyncParseResourceFile;
+#endif
 
 	};
 
--- a/installationservices/swi/source/sisregistry/client/sisregistrysession.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/client/sisregistrysession.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -449,11 +449,39 @@
 EXPORT_C Usif::TComponentId RSisRegistrySession::GetComponentIdForUidL(const TUid& aUid)
 	{
 	Usif::TComponentId componentId(0);
-	TPckg<Usif::TComponentId> componentIdPckg(componentId);
-	
+	TPckg<Usif::TComponentId> componentIdPckg(componentId);	
 	User::LeaveIfError(SendReceive(EComponentIdForUid, TIpcArgs(aUid.iUid, &componentIdPckg)));
 	return componentId;		
 	}
 
+EXPORT_C Usif::TComponentId RSisRegistrySession::GetComponentIdForPackageL(const TDesC& aPackageName, const TDesC& aVendorName) const
+    {           
+    Usif::TComponentId componentId(0);
+    TPckg<Usif::TComponentId> componentIdPckg(componentId);
+    User::LeaveIfError(SendReceive(EComponentIdForPackage, TIpcArgs(&aPackageName, &aVendorName, &componentIdPckg)));    
+    return componentId;     
+    }
+
+EXPORT_C void RSisRegistrySession::GetAppUidsForComponentL(Usif::TComponentId& aCompId, RArray<TUid>& aAppUids)
+    {
+    TPckgC<Usif::TComponentId> compId(aCompId);    
+    HBufC8* buffer = SendReceiveBufferLC(EAppUidsForComponent, static_cast<TPtrC8>(compId));        
+    RDesReadStream stream(*buffer);
+    CleanupClosePushL(stream);    
+    InternalizeArrayL(aAppUids, stream);
+    CleanupStack::PopAndDestroy(2, buffer);           
+    }
+
+EXPORT_C void RSisRegistrySession::GetComponentIdsForUidL(TUid& aPackageUid, RArray<Usif::TComponentId>& aComponentIds)
+    {
+    TPckgC<TUid> pkgUid(aPackageUid);    
+    HBufC8* buffer = SendReceiveBufferLC(EComponentIdsForPackageUid, static_cast<TPtrC8>(pkgUid));        
+    RDesReadStream stream(*buffer);
+    CleanupClosePushL(stream);    
+    InternalizeArrayL(aComponentIds, stream);
+    CleanupStack::PopAndDestroy(2, buffer);           
+    }
+
+
 #endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
--- a/installationservices/swi/source/sisregistry/client/sisregistrywritablesession.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/client/sisregistrywritablesession.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -33,8 +33,11 @@
 #include "sisuid.h"
 #include "cleanuputils.h"
 #include "arrayutils.h"
+#include "installtypes.h"
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include "swtypereginfo.h"
+#include "ipcutil.h"
+#include "sisregistrypackage.h"
 #endif
 
 using namespace Swi;
@@ -116,6 +119,31 @@
 
 	CleanupStack::PopAndDestroy(&serializedArray);
 	}
+
+EXPORT_C void RSisRegistryWritableSession::AddEntryL(const Usif::CApplicationRegistrationData& aApparcRegFileData,
+                                                     const CSisRegistryPackage& aSisRegistryPackage)
+    {
+    TIpcArgs ipcArgs;
+    
+    Usif::TComponentId componentUid = GetComponentIdForPackageL(aSisRegistryPackage.Name(),aSisRegistryPackage.Vendor()); 
+    ipcArgs.Set(0, componentUid);
+
+    TInt objectSize = 0;
+    objectSize = GetObjectSizeL(&aApparcRegFileData);
+    
+    HBufC8* appRegData = HBufC8::NewMaxLC(objectSize);
+    TPtr8 appRegDataDes = appRegData->Des();
+
+    RDesWriteStream ipcstream(appRegDataDes);
+    CleanupClosePushL(ipcstream);
+    
+    ipcstream << aApparcRegFileData;
+    ipcstream.CommitL();
+    ipcArgs.Set(1, &appRegDataDes);
+    
+    User::LeaveIfError(SendReceive(EAddAppRegEntry, ipcArgs));
+    CleanupStack::PopAndDestroy(2, appRegData);
+    }
 #endif
 
 void RSisRegistryWritableSession::UpdateEntryImplL(TInt aMessage,
@@ -208,6 +236,41 @@
 	
 	CleanupStack::PopAndDestroy(&serializedArray);
 	}
+
+EXPORT_C void RSisRegistryWritableSession::UpdateEntryL(const CApplication& aApplication, 
+                                                        const Usif::CApplicationRegistrationData& aApparcRegFileData,
+                                                        const CSisRegistryPackage& aSisRegistryPackage) 
+    {
+    TIpcArgs ipcArgs;
+    Usif::TComponentId componentUid = 0;  
+
+    TRAPD(err,componentUid = GetComponentIdForPackageL(aSisRegistryPackage.Name(),aSisRegistryPackage.Vendor());)
+
+	if (err != KErrNone && err != KErrNotFound)
+        {
+        User::Leave(err);
+        }
+    else if (err == KErrNotFound) // Possible only in PU and SA.
+        {
+        componentUid = GetComponentIdForUidL(aApplication.ControllerL().Info().Uid().Uid());
+        }
+
+    ipcArgs.Set(0, componentUid);
+    
+    TInt objectSize = 0;
+    objectSize = GetObjectSizeL(&aApparcRegFileData);
+    HBufC8* appRegData=HBufC8::NewMaxLC(objectSize);
+    TPtr8 appRegDataDes = appRegData->Des();
+
+    RDesWriteStream ipcstream(appRegDataDes);
+    CleanupClosePushL(ipcstream);
+    
+    ipcstream << aApparcRegFileData;
+    ipcstream.CommitL();
+    ipcArgs.Set(1, &appRegDataDes);
+    User::LeaveIfError(SendReceive(EUpdateAppRegEntry, ipcArgs));
+    CleanupStack::PopAndDestroy(2, appRegData);
+    }
 #endif
 
 EXPORT_C void RSisRegistryWritableSession::DeleteEntryL(const CSisRegistryPackage& aPackage, TInt64 aTransactionID)
--- a/installationservices/swi/source/sisregistry/common/sisregistryclientserver.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/common/sisregistryclientserver.h	Fri Apr 16 15:05:20 2010 +0300
@@ -69,7 +69,7 @@
 	EInstalledDrives,			 
 	ERemoveWithLastDependent,
 	ESetRemoveWithLastDependent,
-	EGetMatchingSupportedLanguages,					
+	EGetMatchingSupportedLanguages,		
 	// daemon interface
 	EAddDrive,
 #ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
@@ -121,7 +121,7 @@
 	EloggingFile,	
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
 	EIsFileRegistered, 
-	EComponentIdForUid,
+	EComponentIdForUid,	
 #endif
 	// NOTE : The security policy range ESeparatorMinimumWriteUserData-
 	// ESeparatorMinimumTCB also requires NetworkServices as well as
@@ -144,6 +144,8 @@
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	EAddSoftwareTypeEntry,
 	EUpdateSoftwareTypeEntry,
+    EAddAppRegEntry,
+    EUpdateAppRegEntry,
 #endif
 
 	// Additional RegistryWritableSession clients 
@@ -153,6 +155,7 @@
 #endif
 	// All clients 
 	ERegistryFiles = 128,
+	
 	// Additional ReadUserData calls
 	ESeparatorMinimumReadUserData2 = 256,
 	ERemovablePackages,	
@@ -165,6 +168,9 @@
 	ESignedBySuCert,
 	
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	EComponentIdForPackage,
+	EAppUidsForComponent,  
+	EComponentIdsForPackageUid,
 	ESetComponentState, //SIF only
 #endif
 	ESeparatorEndAll
--- a/installationservices/swi/source/sisregistry/server/scrhelperutil.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/server/scrhelperutil.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -42,11 +42,9 @@
 #include <usif/usifcommon.h>
 #include <swi/sisregistrylog.h>
 #include <scs/streamingarray.h>
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "screntries_internal.h"
 #endif //SYMBIAN_ENABLE_SPLIT_HEADERS
-#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 using namespace Swi;
 
@@ -119,6 +117,21 @@
 	ExternalizeChainIndexArrayL(aScrSession, aCompId, aObject.InstallChainIndicies());
 	}
 
+void ScrHelperUtil::AddApplicationEntryL(Usif::RSoftwareComponentRegistry& aScrSession, Usif::TComponentId& aCompId, const Usif::CApplicationRegistrationData& aApplicationRegistrationData)
+    {
+    aScrSession.AddApplicationEntryL(aCompId, aApplicationRegistrationData);
+    }
+
+void ScrHelperUtil::DeleteApplicationEntriesL(Usif::RSoftwareComponentRegistry& aScrSession, Usif::TComponentId& aCompId)
+    {
+    aScrSession.DeleteApplicationEntriesL(aCompId);
+    }
+
+void ScrHelperUtil::DeleteApplicationEntryL(Usif::RSoftwareComponentRegistry& aScrSession, const TUid& aAppUId)
+    {
+    aScrSession.DeleteApplicationEntryL(aAppUId);
+    }
+
 void ScrHelperUtil::WriteToScrL(Usif::RSoftwareComponentRegistry& aScrSession, Usif::TComponentId& aCompId, CSisRegistryObject& aObject, Usif::TScrComponentOperationType aOpType)
 	{
 	
--- a/installationservices/swi/source/sisregistry/server/sisregistryserverconst.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/server/sisregistryserverconst.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -48,6 +48,9 @@
 
 _LIT(KLogDir, "\\sys\\install\\log.txt");
 
+//Location of application registration resource files
+_LIT(KApparcRegFilePath, "\\private\\10003a3f\\apps\\");
+_LIT(KApparcRegFileImportPath, "\\private\\10003a3f\\import\\apps\\");
 }
 
 #endif // __SISREGISTRYSERVERCONST_H__
--- a/installationservices/swi/source/sisregistry/server/sisregistryserversession.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/server/sisregistryserversession.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -32,11 +32,8 @@
 #include <swi/sisregistrylog.h>
 #include <scs/ipcstream.h>
 
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include "sislauncherclient.h"
 #include "swtypereginfo.h"
-#endif
-
 #include "scrhelperutil.h"
 #include "scrdbconstants.h"
 #include "log.h"
@@ -72,6 +69,7 @@
 
 const TInt KUidHexLength = 8;
 _LIT(KSWIRegFirstInitFile, "\\sys\\install\\sisregistry\\swiregfirstinit.log");
+_LIT(KApparcRegFileNameFormat, "*10003a3f*");
 
 // Function to panic an offending client
 void CSisRegistrySession::PanicClient(const RMessagePtr2& aMessage, Swi::TSisRegistryPanic aPanic)
@@ -99,14 +97,13 @@
 		{
 		isFwUpdated = ETrue;
 		FirstInvocationInitL();
+		TRAP(res, UpdateRecentFWVersionL(););
+		if (res != KErrNone)
+			{
+			// log that
+			DEBUG_PRINTF2(_L8("Updating recent Firmware Version failed with error code = %d."), res);
+			}
 		}
-		
-    TRAP(res, UpdateRecentFWVersionL(););
-    if (res != KErrNone)
-        {
-        // log that
-        DEBUG_PRINTF2(_L8("Updating recent Firmware Version failed with error code = %d."), res);
-        }
 	}
 
 CSisRegistrySession::~CSisRegistrySession()
@@ -148,6 +145,25 @@
 	iScrSession.CreateTransactionL();
 	ProcessRomDriveL();
 	iScrSession.CommitTransactionL();
+	
+	TComponentId compId = 0;
+	DEBUG_PRINTF(_L8("SIS Registry Server - Deleteing all existing ROM applications."));
+	ScrHelperUtil::DeleteApplicationEntriesL(iScrSession, compId);
+
+	//Register all apps found in \private\10003a3f\apps
+	TDriveUnit romDrive(SisRegistryUtil::SystemRomDrive());
+	RBuf romApparcRegFilePath;
+	romApparcRegFilePath.CreateL(romDrive.Name(), KMaxPath);
+	CleanupClosePushL(romApparcRegFilePath);
+    romApparcRegFilePath.Append(KApparcRegFilePath);
+	RegisterAllInRomAppL(romApparcRegFilePath);
+
+	//Register all apps found in \private\10003a3f\import\apps.
+	romApparcRegFilePath = romDrive.Name();
+	romApparcRegFilePath.Append(KApparcRegFileImportPath);
+	RegisterAllInRomAppL(romApparcRegFilePath);
+	CleanupStack::PopAndDestroy(&romApparcRegFilePath);
+	
 	// Create a file in <systemdrive>:\sys to mark a successful initialization
 	// so that we don't come here again (unless firmware is upgraded in which case <systemdrive>:\sys 
 	// should be cleaned
@@ -332,6 +348,12 @@
 	case EAddSoftwareTypeEntry:
 		RegisterEntryL(aMessage, ETrue, ETrue);
 		break;
+    case EAddAppRegEntry:
+        AppRegInfoEntryL(aMessage);
+        break;
+    case EUpdateAppRegEntry:
+        AppRegInfoEntryL(aMessage);
+        break;
 	case EUpdateEntry:
 		RegisterEntryL(aMessage, EFalse, EFalse);
 		break;
@@ -401,6 +423,15 @@
 	case EComponentIdForUid:
 		GetComponentIdForUidL(aMessage);
 		break;
+	case EComponentIdForPackage:
+        GetComponentIdForPackageL(aMessage);
+        break;
+	case EAppUidsForComponent:
+	    GetAppUidsForComponentL(aMessage);
+        break;
+	case EComponentIdsForPackageUid:	    
+        GetComponentIdsForUidL(aMessage);        
+        break;	    
 	default:
 		PanicClient(aMessage,EPanicIllegalFunction);
 		break;
@@ -817,6 +848,7 @@
 		// Re-add the ROM installed stub details to SCR (only those missing will be added)
 		ProcessRomDriveL();
 		}
+	
  	CleanupStack::PopAndDestroy(2, object);// STS 
 	
 	aMessage.Complete(KErrNone);
@@ -932,8 +964,6 @@
 // The output will be based on the request parameters (operational mode) sent as input.
 void CSisRegistrySession::RequestStubFileEntriesL(const RMessage2& aMessage)
 	{
-	TBool stubNotFound(ETrue);
-	
 	TUid tUid;	
 	TPckg<TUid> packageUid(tUid);
 	aMessage.ReadL(EIpcArgument0, packageUid, 0);
@@ -942,117 +972,151 @@
 	TPckg<TStubExtractionMode> packageMode(tMode);
 	aMessage.ReadL(EIpcArgument1, packageMode, 0);
 	
-	// Prepare the stub file path.
-	TDriveUnit romDrive(EDriveZ);
-	RBuf romRegistryPath;
-	romRegistryPath.CreateL(romDrive.Name(), KMaxPath);
-	CleanupClosePushL(romRegistryPath);
-	romRegistryPath.Append(KPreInstalledPath);	
-
-	RFs tFs;
-	CDir* dir;
+	TInt startingFileNo = 0;
+	if (tMode == EGetFiles)
+	    {
+        TPckg<TInt> start(startingFileNo);
+        aMessage.ReadL(EIpcArgument2, start, 0);
+	    }
 	
-	// Get stub files under the ROM stub directory (Z:\system\install\).
-	User::LeaveIfError(tFs.Connect());
-	CleanupClosePushL(tFs);
-		
-	TInt err = tFs.GetDir(romRegistryPath, KEntryAttMatchExclude | KEntryAttDir, ESortNone, dir);
+	TInt fileCount = 0;
+	RPointerArray<HBufC> fileNames;
+	CleanupResetAndDestroy<RPointerArray<HBufC> >::PushL(fileNames);
+	                    
+	TInt ret = GetStubFileInfoL(tUid, tMode, startingFileNo, fileCount, fileNames);
+	if (KErrNone == ret)
+	    {
+	    if (tMode == EGetFiles)
+	        {
+	        // Stream via multiple IPC writes instead of
+	        // copying to a buffer and streaming from there.
+	        RIpcWriteStream ipcstream;
+	        ipcstream.Open(aMessage, EIpcArgument3);
+	        CleanupClosePushL(ipcstream);
+	        ExternalizePointerArrayL(fileNames,ipcstream);
+	        ipcstream.CommitL();
+	        aMessage.Complete(KErrNone);
+	        CleanupStack::PopAndDestroy(&ipcstream);
+	        }
+	    else if (tMode == EGetCount)
+	        {
+	        TPckgBuf<TInt> fileCnt(fileCount);
+	        aMessage.WriteL(EIpcArgument2, fileCnt);
+            aMessage.Complete(KErrNone);      
+	        }
+	    }
+	else
+	    {
+	    aMessage.Complete(ret);
+	    }
+	CleanupStack::PopAndDestroy();
+	}
 
-	if (err == KErrNone)
-		{
-		CleanupStack::PushL(dir);	
-		TInt count(dir->Count());
-		RBuf controllerFileName;
-		controllerFileName.CreateL(KMaxFileName);
-		CleanupClosePushL(controllerFileName);
-		for (TInt index = 0; index < count; ++index)
-			{
-			controllerFileName = romRegistryPath;
-			controllerFileName.Append((*dir)[index].iName);
+TInt CSisRegistrySession::GetStubFileInfoL(TUid aUid, TStubExtractionMode aMode, TInt aStartingFileNo, TInt& aFileCount, RPointerArray<HBufC>& aFileNames)
+    {
+    TBool stubNotFound(ETrue);
+    
+    // Prepare the stub file path.
+    TDriveUnit romDrive(EDriveZ);
+    RBuf romRegistryPath;
+    romRegistryPath.CreateL(romDrive.Name(), KMaxPath);
+    CleanupClosePushL(romRegistryPath);
+    romRegistryPath.Append(KPreInstalledPath);  
+
+    RFs tFs;
+    CDir* dir;
+        
+    // Get stub files under the ROM stub directory (Z:\system\install\).
+    User::LeaveIfError(tFs.Connect());
+    CleanupClosePushL(tFs);
+    
+    TInt err = tFs.GetDir(romRegistryPath, KEntryAttMatchExclude | KEntryAttDir, ESortNone, dir);
+
+    if (err == KErrNone)
+        {
+        CleanupStack::PushL(dir);   
+        TInt count(dir->Count());
+        RBuf controllerFileName;
+        controllerFileName.CreateL(KMaxFileName);
+        CleanupClosePushL(controllerFileName);
+        for (TInt index = 0; index < count; ++index)
+            {
+            controllerFileName = romRegistryPath;
+            controllerFileName.Append((*dir)[index].iName);
 
-			// Read the ROM stub controller
-  			CFileSisDataProvider* fileProvider = CFileSisDataProvider::NewLC(tFs, controllerFileName);
-  			Swi::Sis::CController* stubController = NULL;
-  			TRAPD(errCode, stubController = Swi::Sis::CController::NewL(*fileProvider));
-  			if (errCode != KErrNone)
-	  			{
-	  			// Ignore the broken stub file under the ROM stub directory.
-	  			DEBUG_PRINTF2(_L8("Sis Registry Server - Failed to read the stub controller. Error code %d."), errCode);
-	  			CleanupStack::PopAndDestroy(fileProvider);
-	  			continue;
-	  			}
-  			CleanupStack::PushL(stubController);
-  			
-  			// If the UID in a stub file matches the current package's UID,
-  			// populate the list of eclipsable files from the same stub file.
-  			if ( stubController->Info().Uid().Uid() == tUid )
-  				{
-  				stubNotFound = EFalse;
-  				const RPointerArray<Sis::CFileDescription>& depArray = stubController->InstallBlock().FileDescriptions();
-  				// Get as many number of files as possible that can be accomodate in client allocated buffer.
-  				if (tMode == EGetFiles)
-  					{
-  					TInt sizeRed = 0;
-  					TInt startingFileNo;	
-					TPckg<TInt> start(startingFileNo);
-					aMessage.ReadL(EIpcArgument2, start, 0);
-  						
-  					RPointerArray<TPtrC> fileNames;
-  					CleanupResetAndDestroy<RPointerArray<TPtrC> >::PushL(fileNames);
-
-  					TInt totalDepArrayCount = depArray.Count();
-  					// Populate the files in to a temporary array.
-  					for(TInt fileCount = startingFileNo; fileCount < totalDepArrayCount; ++fileCount )
-  						{
-  						sizeRed += depArray[fileCount]->Target().Data().Size();
-  						// If amount of data red exceeds the client buffer size, break reading.
-  						if (sizeRed > KDefaultBufferSize)
-  							{
-  							break;
-  							}
-  							
-  						// Only create a TPtrC when we know we have space available
-  						TPtrC* fileName = new(ELeave) TPtrC(depArray[fileCount]->Target().Data());
-  						CleanupStack::PushL(fileName);
-  						fileNames.AppendL(fileName);
-  						CleanupStack::Pop(fileName);   						
-	  					}	  	
-  					// Stream via multiple IPC writes instead of
-  					// copying to a buffer and streaming from there.
-  					RIpcWriteStream ipcstream;
-  					ipcstream.Open(aMessage, EIpcArgument3);
-  					CleanupClosePushL(ipcstream);
-  					ExternalizePointerArrayL(fileNames,ipcstream);
-  					ipcstream.CommitL();
-  					aMessage.Complete(KErrNone);
-  					CleanupStack::PopAndDestroy(&ipcstream);
-  					CleanupStack::PopAndDestroy(&fileNames);					
-  					}
-  				// If only the count needed, send the stub file's total entrie's count.
-  				else if (tMode == EGetCount)
-  					{
-  					TPckgBuf<TInt> fileCount(depArray.Count());
-					aMessage.WriteL(EIpcArgument2, fileCount);
-					aMessage.Complete(KErrNone);					
-  					}  				
-	  			CleanupStack::PopAndDestroy(2, fileProvider);
-	  			break;	
-  				}
-  			CleanupStack::PopAndDestroy(2, fileProvider);  		
-			}
-		CleanupStack::PopAndDestroy(2, dir); // controllerFileName
-		// If the stub file itself not found, leave with the same error info'
-		if (stubNotFound)
-  			{
-  			aMessage.Complete(KErrNotFound);
-  			}		
-		}
-	else if(err != KErrPathNotFound)
-		{
-		aMessage.Complete(err);		
-		}
-	CleanupStack::PopAndDestroy(2, &romRegistryPath); // tFs
-	}
+            // Read the ROM stub controller
+            CFileSisDataProvider* fileProvider = CFileSisDataProvider::NewLC(tFs, controllerFileName);
+            Swi::Sis::CController* stubController = NULL;
+            TRAPD(errCode, stubController = Swi::Sis::CController::NewL(*fileProvider));
+            if (errCode != KErrNone)
+                {
+                // Ignore the broken stub file under the ROM stub directory.
+                DEBUG_PRINTF2(_L8("Sis Registry Server - Failed to read the stub controller. Error code %d."), errCode);
+                CleanupStack::PopAndDestroy(fileProvider);
+                continue;
+                }
+            CleanupStack::PushL(stubController);
+                
+            // If the UID in a stub file matches the current package's UID,
+            // populate the list of eclipsable files from the same stub file.
+            if ( stubController->Info().Uid().Uid() == aUid )
+                {
+                stubNotFound = EFalse;
+                const RPointerArray<Sis::CFileDescription>& depArray = stubController->InstallBlock().FileDescriptions();
+                // Get as many number of files as possible that can be accomodate in client allocated buffer.
+                if (aMode == EGetFiles)
+                    {
+                    TInt sizeRed = 0;
+                    TInt totalDepArrayCount = depArray.Count();
+                    // Populate the files in to a temporary array.
+                    for(TInt fileCount = aStartingFileNo; fileCount < totalDepArrayCount; ++fileCount )
+                        {
+                        sizeRed += depArray[fileCount]->Target().Data().Size();
+                        // If amount of data red exceeds the client buffer size, break reading.
+                        if (sizeRed > KDefaultBufferSize)
+                            {
+                            break;
+                            }
+                                
+                        // Only create a TPtrC when we know we have space available
+                        HBufC* fileName = depArray[fileCount]->Target().Data().AllocL();
+						// Adding drive letter of rom if not mentioned in stub sis file
+                        TPtr a=fileName->Des();
+                        if (a[0] == '!')
+							a[0] = 'z';                        
+                       
+						CleanupStack::PushL(fileName);
+                        aFileNames.AppendL(fileName);
+                        CleanupStack::Pop(fileName);                        
+                        } 
+                    }
+                // If only the count needed, send the stub file's total entrie's count.
+                else if (aMode == EGetCount)
+                    {
+                    aFileCount = depArray.Count();
+                    }               
+                CleanupStack::PopAndDestroy(2, fileProvider);
+                break;  
+                }
+            CleanupStack::PopAndDestroy(2, fileProvider);       
+            }
+        CleanupStack::PopAndDestroy(2, dir); // controllerFileName
+        // If the stub file itself not found, leave with the same error info'
+        
+        if (stubNotFound)
+            {  
+			CleanupStack::PopAndDestroy(2, &romRegistryPath); // tFs          
+            return (KErrNotFound);
+            }       
+        }
+    else if(err != KErrPathNotFound)
+        {     
+		CleanupStack::PopAndDestroy(2, &romRegistryPath); // tFs   
+        return err;
+        }
+	CleanupStack::PopAndDestroy(2, &romRegistryPath); // tFs	
+    return KErrNone;
+    }
 
 void CSisRegistrySession::RequestRegistryEntryL(const RMessage2& aMessage)
 	{
@@ -1120,7 +1184,6 @@
 void CSisRegistrySession::RequestSidToFileNameL(const RMessage2& aMessage)
 	{
 	TInt thirdParameter; 
-	TDriveUnit expectedDrive;
 	TUid sid;
 	TPckg<TUid> fileSid(sid);
 
@@ -1222,8 +1285,8 @@
 	TPckgC<Usif::TComponentId> componentIdPckg(componentId);
 	aMessage.WriteL(EIpcArgument1, componentIdPckg);
 	aMessage.Complete(KErrNone);
-	}
-	
+	}	
+
 void CSisRegistrySession::RequestHashL(const RMessage2& aMessage)
 	{
 	// get file name
@@ -1454,7 +1517,7 @@
 			aPackage.Uid().iUid, &aPackage.Name(), &aPackage.Vendor());
 		User::Leave(KErrNotFound);
 		}
-
+	iScrSession.DeleteApplicationEntriesL(compId);
 	iScrSession.DeleteComponentL(compId);
 	}
 
@@ -1628,12 +1691,74 @@
 	// Store the SIS Registry Object in to the Software Component Registry.
 	TComponentId compId = 0;
 	ScrHelperUtil::AddComponentL(iScrSession, compId, aObject, aOpType);
+	
+	
+	
 	// Set SCOMO state to activated - when SWI Registry supports de-activation, should be changed accordingly
 	iScrSession.SetScomoStateL(compId, EActivated);
 	
 	return compId;
 	}
 	
+void CSisRegistrySession::AddAppEntryL(TComponentId aCompId, TUid aUid)
+    {
+    TInt startingFileNo = 0;
+    TInt fileCount = 0;
+    RPointerArray<HBufC> romFiles;
+    CleanupResetAndDestroy<RPointerArray<HBufC> >::PushL(romFiles);
+    TInt ret = GetStubFileInfoL(aUid, EGetFiles, startingFileNo, fileCount, romFiles);
+
+    RPointerArray<HBufC> apparcRegFiles;
+    CleanupResetAndDestroy<RPointerArray<HBufC> >::PushL(apparcRegFiles);
+       
+    for(TInt i=0; i< romFiles.Count(); i++)
+        {
+        TInt ret = romFiles[i]->Match(KApparcRegFileNameFormat);
+        
+        TBuf<100> fileName(*romFiles[i]);
+        if (KErrNotFound != ret)
+            {
+            HBufC* file = romFiles[i]->AllocL();
+            apparcRegFiles.Append(file);
+            }
+        }
+             
+	const TInt appCount = apparcRegFiles.Count();
+	if (appCount)
+		{
+		RSisLauncherSession launcher;
+		CleanupClosePushL(launcher);
+		User::LeaveIfError(launcher.Connect());
+		RFs fs;
+		CleanupClosePushL(fs);
+		User::LeaveIfError(fs.Connect());
+		User::LeaveIfError(fs.ShareProtected());
+		RArray<TLanguage> appLanguages;
+		CleanupClosePushL(appLanguages);
+		appLanguages.AppendL(User::Language());
+    
+		for (TInt i=0; i<appCount; ++i)
+			{
+			TInt bufLen = apparcRegFiles[i]->Size();
+			HBufC* buf = HBufC::NewLC(bufLen);
+			TPtr appFile = buf->Des();
+			appFile.Format(_L("%S"), apparcRegFiles[i]);
+			appFile.Replace(0, 1, _L("z"));
+			
+			RFile file;
+			CleanupClosePushL(file);
+			User::LeaveIfError(file.Open(fs, appFile, EFileRead));
+			Usif::CApplicationRegistrationData* appRegData  = launcher.SyncParseResourceFileL(file, appLanguages);
+			CleanupStack::PushL(appRegData);
+			ScrHelperUtil::AddApplicationEntryL(iScrSession, aCompId, *appRegData);
+			CleanupStack::PopAndDestroy(appRegData);
+			CleanupStack::PopAndDestroy(2, buf);
+			}
+		CleanupStack::PopAndDestroy(3, &launcher); 
+		}
+	CleanupStack::PopAndDestroy(2, &romFiles);        
+    }
+
 void CSisRegistrySession::AddControllerL(const CSisRegistryObject& aObject, 
 							RStsSession& aStsSession, const TDesC8& aBuffer, const TInt aDrive)		
 	{
@@ -2368,7 +2493,8 @@
 	if ( !isStubRegistered || overwriteRegEntry )
 		{
 		// update cache or just call refresh
-		AddEntryL(*object, Usif::EScrCompHidden); // EScrCompHidden is supplied not to create any log for the ROM controller on the SCR side.
+		TComponentId compId = AddEntryL(*object, Usif::EScrCompHidden); // EScrCompHidden is supplied not to create any log for the ROM controller on the SCR side.
+	    AddAppEntryL(compId, object->Uid());
 		
 		// store a copy of the controller
 		HBufC* name = SisRegistryUtil::BuildControllerFileNameLC(object->Uid(), object->Index(),
@@ -2658,3 +2784,146 @@
         CleanupStack::PopAndDestroy(2); //romVerStream, romVersionCacheFileName
     }
 
+void CSisRegistrySession::AppRegInfoEntryL(const RMessage2& aMessage)
+    {
+    Usif::TComponentId componentId = aMessage.Int0();
+
+	RIpcReadStream stream;
+	CleanupClosePushL(stream);
+	stream.Open(aMessage, 1);
+	CApplicationRegistrationData *applicationData = CApplicationRegistrationData::NewL(stream);
+	CleanupStack::PopAndDestroy(&stream);
+	CleanupStack::PushL(applicationData);
+
+    TRAPD(err, ScrHelperUtil::AddApplicationEntryL(iScrSession, componentId, *applicationData));
+    if (err == KErrAlreadyExists)
+        {
+        //Delete the existing application
+        ScrHelperUtil::DeleteApplicationEntryL(iScrSession, applicationData->AppUid());
+        err = KErrNone;
+        TRAP(err, ScrHelperUtil::AddApplicationEntryL(iScrSession, componentId, *applicationData));
+        }
+    aMessage.Complete(err);
+    CleanupStack::PopAndDestroy(applicationData);
+    }
+
+void CSisRegistrySession::GetComponentIdForPackageL(const RMessage2& aMessage)
+    {
+    Usif::TComponentId componentId(0);
+    TInt strLen = aMessage.GetDesLengthL(EIpcArgument0);
+    HBufC* packageName = HBufC::NewLC(strLen);
+    TPtr pkgname = packageName->Des();
+    aMessage.ReadL(EIpcArgument0, pkgname, 0);
+    
+    strLen = aMessage.GetDesLengthL(EIpcArgument1);
+    HBufC* vendorName = HBufC::NewLC(strLen);
+    TPtr vndrname = vendorName->Des();
+    aMessage.ReadL(EIpcArgument1, vndrname, 0);
+    componentId = ScrHelperUtil::GetComponentIdL(iScrSession, *packageName, *vendorName);
+    if (!componentId)
+        {
+        DEBUG_PRINTF2(_L8("Sis Registry Server - Component id for package Name %S was not found."), packageName);
+        User::Leave(KErrNotFound);
+        } 
+    CleanupStack::PopAndDestroy(2, packageName); //vendorName
+    TPckgC<Usif::TComponentId> componentIdPckg(componentId);
+    aMessage.WriteL(EIpcArgument2, componentIdPckg);
+    aMessage.Complete(KErrNone);
+    }
+
+void CSisRegistrySession::GetAppUidsForComponentL(const RMessage2& aMessage)
+    {
+    Usif::TComponentId compId;
+    TPckg<Usif::TComponentId> componentId(compId);
+    RArray<TUid> appUids;
+    CleanupClosePushL(appUids);
+    aMessage.ReadL(EIpcArgument0, componentId);
+    iScrSession.GetAppUidsForComponentL(compId, appUids);        
+    SisRegistryUtil::SendDataArrayL(aMessage, appUids, EIpcArgument1);        
+    CleanupStack::PopAndDestroy(&appUids);
+    }
+
+void CSisRegistrySession::GetComponentIdsForUidL(const RMessage2& aMessage)
+    {
+    TUid Uid;
+    TPckg<TUid> pkgUid(Uid);
+    aMessage.ReadL(EIpcArgument0, pkgUid);
+    
+    // Setup a filter based on the input parameters
+    Usif::CComponentFilter* compFilter = Usif::CComponentFilter::NewLC();
+    compFilter->AddPropertyL(KCompUid, Uid.iUid);   
+    compFilter->SetSoftwareTypeL(Usif::KSoftwareTypeNative);    
+    RArray<Usif::TComponentId> componentIdList;
+    CleanupClosePushL(componentIdList);
+    iScrSession.GetComponentIdsL(componentIdList, compFilter);    
+    if(componentIdList.Count() == 0)
+        {
+        // No components are found in the SCR. So, return false
+        CleanupStack::PopAndDestroy(2, compFilter); // componentIdList
+        DEBUG_PRINTF2(_L8("Sis Registry Server - Unable to find component for UID: %x"), Uid.iUid);  
+        SisRegistryUtil::SendDataArrayL(aMessage, componentIdList, EIpcArgument1);
+        return;
+        }
+    SisRegistryUtil::SendDataArrayL(aMessage, componentIdList, EIpcArgument1);        
+    CleanupStack::PopAndDestroy(2, compFilter);    
+    }
+
+void CSisRegistrySession::RegisterAllInRomAppL(RBuf& aRomApparcRegFilePath)
+    {
+	CDir* dir;
+	TInt err = iFs.GetDir(aRomApparcRegFilePath, KEntryAttMatchExclude | KEntryAttDir, ESortNone, dir);	
+	DEBUG_PRINTF2(_L8("Sis Registry Server - Reading ROM apparc registration file directory returned %d."), err);
+	
+	if (err == KErrNone)
+		{
+		CleanupStack::PushL(dir);
+
+		TInt count(dir->Count());
+		RBuf appRegFileName;
+		appRegFileName.CreateL(KMaxFileName);
+		CleanupClosePushL(appRegFileName);
+		RSisLauncherSession launcher;
+		CleanupClosePushL(launcher);
+		User::LeaveIfError(launcher.Connect());
+		RFs fs;
+		CleanupClosePushL(fs);
+		User::LeaveIfError(fs.Connect());
+		User::LeaveIfError(fs.ShareProtected());
+		RArray<TLanguage> appLanguages;
+		CleanupClosePushL(appLanguages);
+		appLanguages.AppendL(User::Language());
+		for (TInt index = 0; index < count; ++index)
+			{
+			appRegFileName = aRomApparcRegFilePath;
+			appRegFileName.Append((*dir)[index].iName);
+			RFile file;
+			CleanupClosePushL(file);
+			User::LeaveIfError(file.Open(fs, appRegFileName, EFileRead));
+			
+			Usif::CApplicationRegistrationData* appRegData = NULL;			
+			TRAPD(result, appRegData = launcher.SyncParseResourceFileL(file, appLanguages));
+			if (result == KErrNone)
+			    {
+                CleanupStack::PushL(appRegData);
+                TComponentId compId = 0; // ROM application
+                TRAPD(res, ScrHelperUtil::AddApplicationEntryL(iScrSession, compId, *appRegData););
+                if (res != KErrNone)
+                    {
+                    // log it only, we cannot stop as the next might be ok
+                    DEBUG_PRINTF3(_L("Sis Registry Server - Failed to register in ROM application %S. Error code %d."), &appRegFileName, res);
+                    }
+                CleanupStack::PopAndDestroy(appRegData);
+			    }
+			else
+			    DEBUG_PRINTF2(_L8("Sis Registry Server - Parsing in ROM application . Error code %d."), result);
+			                
+			CleanupStack::PopAndDestroy(&file);
+			}
+
+		CleanupStack::PopAndDestroy(5, dir); // appRegFileName, launcher, fs, appLanguages
+		}
+	else if(err != KErrPathNotFound)
+		{
+		User::Leave(err);
+		}
+    }
--- a/installationservices/swi/source/sisregistry/server/sisregistryserversession.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/server/sisregistryserversession.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,12 +31,10 @@
 #include <usif/scr/scr.h>
 #include <usif/scr/screntries.h>
 #include <usif/sts/sts.h>
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "stsrecovery.h"
 #include "screntries_internal.h"
 #endif //SYMBIAN_ENABLE_SPLIT_HEADERS
-#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include <swi/swiobserverclient.h>
 #include "sisregistryclientserver.h"
 #include "sisregistryserver.h"
@@ -118,7 +116,7 @@
 	void RequestRegistryEntryL(const RMessage2& aMessage);
 	void IsFileRegisteredL(const RMessage2& aMessage);
 	void GetComponentIdForUidL(const RMessage2& aMessage);
-
+    
 	// Subsession handling
 	void OpenRegistryUidEntryL(const RMessage2& aMessage);
 	void OpenRegistryPackageEntryL(const RMessage2& aMessage);
@@ -136,6 +134,15 @@
 	void RollbackTransactionL(const RMessage2& aMessage);
 
 	void RegisterEntryL(const RMessage2& aMessage, TBool aNewEntry, TBool aRegisterSoftwareTypes);
+	void AppRegInfoEntryL(const RMessage2& aMessage);
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	void RegisterAllInRomAppL(RBuf& aRomApparcRegFilePath);
+    void GetComponentIdForPackageL(const RMessage2& aMessage);
+    void GetAppUidsForComponentL(const RMessage2& aMessage);
+    void GetComponentIdsForUidL(const RMessage2& aMessage);
+#endif
+
 	void DeleteEntryL(const RMessage2& aMessage);
 	void AddSoftwareTypeL(const RMessage2& aMessage);
 	void AddDriveL(const RMessage2& aMessage);
@@ -165,6 +172,7 @@
 	TUint FixedDrivesL() const;
 	Usif::TComponentId AddRegistryEntryL(CSisRegistryObject& aObject, Usif::RStsSession& aStsSession, const TDesC8& aController, Usif::TScrComponentOperationType aOpType);
 	Usif::TComponentId AddEntryL(CSisRegistryObject& aObject, Usif::TScrComponentOperationType aOpType);
+	void AddAppEntryL(Usif::TComponentId aCompId, TUid aUid);
 	void AddControllerL(const CSisRegistryObject& aObject, Usif::RStsSession& aStsSession, const TDesC8& aBuffer, const TInt aDrive);
 	void AddCleanupInfrastructureL(CSisRegistryObject& aObject, Usif::RStsSession& aStsSession, const TDesC8& aControllerBuffer);
 	TUint CreateSubsessionHandleL(const TUid& aPackageUid);
@@ -190,6 +198,7 @@
 	TBool IsFirmwareUpdatedL();
 	 
 	void  UpdateRecentFWVersionL(); 
+	TInt GetStubFileInfoL(TUid aUid, TStubExtractionMode aMode, TInt aStartingFileNo, TInt& aFileCount, RPointerArray<HBufC>& aFileNames);
 
 private:
     friend class CSisRevocationManager;
--- a/installationservices/swi/source/sisregistry/server/sisrevocationmanager.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/sisregistry/server/sisrevocationmanager.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -61,7 +61,7 @@
 	CActiveScheduler::Add(this);	
 	}
 
-CSisRevocationManager::~CSisRevocationManager()
+EXPORT_C CSisRevocationManager::~CSisRevocationManager()
 	{
 	// Remove active object from active scheduler
 	Deque(); 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/swis/server/appregextractor.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Implementation of the adorned filename handling utility functions
+*
+*/
+
+#include "appregextractor.h"
+#include "sishelper.h"
+
+namespace Swi
+{
+
+/*static*/ CAppRegExtractor* CAppRegExtractor::NewLC(RFs& aFs, RArray<TLanguage> deviceSupportedLanguages, RPointerArray<Usif::CApplicationRegistrationData>& aApparcRegFileData )
+    {
+    CAppRegExtractor* self=new(ELeave) CAppRegExtractor(aFs, deviceSupportedLanguages, aApparcRegFileData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+    
+/*static*/ CAppRegExtractor* CAppRegExtractor::NewL(RFs& aFs, RArray<TLanguage> deviceSupportedLanguages, RPointerArray<Usif::CApplicationRegistrationData>& aApparcRegFileData )
+    {
+    CAppRegExtractor* self=NewLC(aFs, deviceSupportedLanguages, aApparcRegFileData);
+    CleanupStack::Pop(self);
+    return self;
+    }
+    
+CAppRegExtractor::~CAppRegExtractor()
+    {
+    Deque();
+    
+    if (iManagedFileHandle)
+        {
+        iCurrentFile->Close();
+        delete iCurrentFile;
+        }
+    
+    iLauncher.Close();
+    
+    if (iDeviceSupportedLanguages.Count())
+        iDeviceSupportedLanguages.Close();
+    }
+
+CAppRegExtractor::CAppRegExtractor(RFs& aFs, RArray<TLanguage> deviceSupportedLanguages, RPointerArray<Usif::CApplicationRegistrationData>& aApparcRegFileData)
+    : CActive(EPriorityStandard), iFs(aFs), iDeviceSupportedLanguages(deviceSupportedLanguages), iApparcRegFileData(aApparcRegFileData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+void CAppRegExtractor::ConstructL()
+    {
+    User::LeaveIfError(iFs.ShareProtected());
+    User::LeaveIfError(iLauncher.Connect());
+    }
+
+// public methods
+
+void CAppRegExtractor::ExtractAppRegInfoSizeL(const TDesC& aFileName, TRequestStatus& aStatus)
+    {
+    DEBUG_PRINTF2(_L("CAppRegExtractor - ExtractAppRegInfoSizeL - extracting size of resource file '%S'"),&aFileName);
+    iErrCode = KErrNone; 
+    iManagedFileHandle=ETrue;
+    iCancelled=EFalse;
+    iClientStatus=&aStatus;
+    if(iCurrentFile != NULL)
+        delete iCurrentFile;
+    iCurrentFile=new(ELeave) RFile;    
+    User::LeaveIfError(iCurrentFile->Open(iFs, aFileName, EFileRead));
+    *iClientStatus = KRequestPending;
+    
+    iLauncher.AsyncParseResourceFileSizeL(*iCurrentFile, iDeviceSupportedLanguages, iStatus);
+    SetActive();
+    }
+
+
+// CActive methods
+
+void CAppRegExtractor::RunL()
+    {
+    //iStatus shall have the lenght of parsed object if it is greater than 0
+    if (iStatus.Int() < KErrNone )
+        {
+        DEBUG_PRINTF2(_L("CAppRegExtractor - RunL - parsing failed with %d error"),iStatus.Int());
+        User::LeaveIfError(FinishAppRegExtraction(iStatus.Int()));
+        return;
+        }
+    
+    if (iCancelled)
+        {
+        DEBUG_PRINTF(_L("CAppRegExtractor - RunL - User cancelled"));
+        User::LeaveIfError(FinishAppRegExtraction(KErrCancel));
+        return;
+        }
+    
+    TInt size = iStatus.Int(); 
+    Usif::CApplicationRegistrationData* applicationRegistrationData = 0;
+    DEBUG_PRINTF2(_L("CAppRegExtractor - ParseResourceFileDataL - Invoking with size = %d"),size);
+    applicationRegistrationData = iLauncher.AsyncParseResourceFileDataL(size);
+    CleanupStack::PushL(applicationRegistrationData);
+    iApparcRegFileData.AppendL(applicationRegistrationData);
+    CleanupStack::Pop();
+    FinishAppRegExtraction(KErrNone);
+    // Extract the next chunk
+    }
+
+void CAppRegExtractor::DoCancel()
+    {
+    DEBUG_PRINTF(_L("CAppRegExtractor - DoCancel - User cancelled"));
+    iCancelled=ETrue;
+    if (iClientStatus)
+        {      
+        TInt err = FinishAppRegExtraction(KErrCancel);
+        if (err != KErrNone)
+            {
+            User::RequestComplete(iClientStatus, KErrCancel);
+            iClientStatus=NULL;
+            }           
+        }
+    }
+    
+TInt CAppRegExtractor::RunError(TInt aError)
+    {
+    DEBUG_PRINTF(_L("CAppRegExtractor - DoError"));
+    iCancelled = ETrue;
+    if (iClientStatus)
+        {     
+        TInt err = FinishAppRegExtraction(aError);
+        if (err != KErrNone)
+            {
+            User::RequestComplete(iClientStatus, aError);
+            iClientStatus = NULL;
+            }          
+        }
+    return KErrNone;
+    }
+
+TInt CAppRegExtractor::FinishAppRegExtraction(TInt aResult)
+    {
+    DEBUG_PRINTF2(_L("CAppRegExtractor - FinishAppRegExtraction - received result = %d"),aResult);
+    if (iManagedFileHandle)
+        {
+        iCurrentFile->Close();
+        delete iCurrentFile;
+        iCurrentFile=0;
+        iManagedFileHandle = EFalse;
+        }
+    iErrCode = aResult;
+
+    // notify the user
+    if (aResult == KErrCorrupt)
+        {
+        User::RequestComplete(iClientStatus, KErrNone);
+        }
+    else
+        {
+        User::RequestComplete(iClientStatus, aResult);
+        }
+    iClientStatus = NULL;
+    return KErrNone;
+    }
+    
+TInt CAppRegExtractor::GetErrorCode() const
+    {
+    return iErrCode;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/swis/server/appregextractor.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Component which handles reg file parsing asynchronously
+*
+*/
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __APPREGEXTRACTOR_H__
+#define __APPREGEXTRACTOR_H__
+ 
+#include <e32base.h>
+#include <f32file.h> 
+#include "log.h"
+#include <usif/scr/appregentries.h>
+#include "sislauncherclient.h"
+namespace Swi
+{
+class RSisHelper;
+
+/**
+ * This class is an active object, which manages file extraction in chunks, using SISHelper
+ */
+class CAppRegExtractor : public CActive
+    {
+public:
+    static CAppRegExtractor* NewLC(RFs& aFs, RArray<TLanguage> deviceSupportedLanguages, RPointerArray<Usif::CApplicationRegistrationData>& aApparcRegFileData );
+    
+    static CAppRegExtractor* NewL(RFs& aFs, RArray<TLanguage> deviceSupportedLanguages, RPointerArray<Usif::CApplicationRegistrationData>& aApparcRegFileData );
+    
+    /**
+     * Extract the file, using provided file handle which must be set up correctly.
+     */ 
+    void ExtractAppRegInfoSizeL(const TDesC& aFileName, TRequestStatus& aStatus);
+    
+    /// Get the error code for the latest async parsing operation.
+    TInt GetErrorCode() const; 
+ 
+    ~CAppRegExtractor();
+    
+private:
+    CAppRegExtractor(RFs& aFs, RArray<TLanguage> deviceSupportedLanguages, RPointerArray<Usif::CApplicationRegistrationData>& aApparcRegFileData ); 
+    void ConstructL();
+    
+// from CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+    
+
+    /// Sets up the file handle, owned by the file extractor for the duration of the extraction
+    void SetupFileHandleL(const TDesC& aFileName);
+
+    /// finishes the extraction and notifies the client of the result
+    TInt FinishAppRegExtraction(TInt aResult);    
+
+private:    
+    RFs&    iFs;   
+    TBool iCancelled;      
+    TRequestStatus* iClientStatus;
+    RSisLauncherSession iLauncher;
+    RFile* iCurrentFile;
+    TBool iManagedFileHandle; // whether we manage the file handle used for file extraction.
+    RArray<TLanguage> iDeviceSupportedLanguages; 
+    RPointerArray<Usif::CApplicationRegistrationData>& iApparcRegFileData;
+    TInt iErrCode;
+    };
+    
+}
+
+#endif // #ifndef __FILEEXTRACTOR_H__
--- a/installationservices/swi/source/swis/server/installationplanner.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/installationplanner.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -33,6 +33,7 @@
 #include "siscontentprovider.h"
 #include "sishelperclient.h"
 #include "securitypolicy.h"
+#include "secutils.h"
 
 #include <swi/msisuihandlers.h>
 
@@ -66,6 +67,7 @@
 #include "sisregistryserverconst.h"
 #include "dessisdataprovider.h"
 #include "adornedutilities.h"
+#include "sislauncherclient.h"
 
 using namespace Swi;
 using namespace Swi::Sis;
@@ -981,16 +983,6 @@
 	// Size of this controller only!!
 	TInt64 size = iContentProvider.TotalSizeL(aController.InstallBlock(), iExpressionEvaluator, EFalse);
 
-	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-	// Invoke the drive selection part when the planner is not in info collection mode. Otherwise do not.
-	if (IsInInfoCollectionMode())
-		{
-		// for GetInfo purposes we select an existing system drive. We need to make sure that a valid drive is selected for installation planning,  and in any case no files will get copied there, 
-		application->UserSelections().SetDrive(iSystemDriveChar);
-		}
-	else
-		{
-	#endif
 		// If the package is partial upgrade, extract drive from the registry, and dont
 		// display the drive selection option except where we are upgrading a ROM stub
 		if(error == KErrNone && aController.Info().InstallType() == EInstPartialUpgrade && !registryEntry.IsInRomL())
@@ -1002,20 +994,32 @@
 				// any assumptions about where to install the upgrade
 				// we need to ask the user where they would like to install 
 				// this upgrade
-				ChooseDriveDialogL(*content, *application, size);	
+			    #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+			        if(IsInInfoCollectionMode())
+			            {
+			            application->UserSelections().SetDrive(iSystemDriveChar);
+			            const_cast <Sis::CController&>(aController).SetDriveSelectionRequired(ETrue);
+			            }
+			        else
+			            {
+			    #endif			            
+				ChooseDriveDialogL(*content, *application, size);				
+                #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK                    
+                        }
+                #endif								
 				}
 			else
 				{
 				// install partial upgrade on the same drive as base package
 				application->UserSelections().SetDrive(drive);
 				}
-			}
+			}		       		
 		else if(error == KErrNotFound && aController.Info().InstallType() == EInstPartialUpgrade &&
-				iFilesFromPlannedControllers[baseControllerIndex]->Drive() != TChar(KNoDriveSelected))
+		        iCurrentController > 0 && iFilesFromPlannedControllers[baseControllerIndex]->Drive() != TChar(KNoDriveSelected) )
 				{
 				//Use the base package's drive
 				application->UserSelections().SetDrive(iFilesFromPlannedControllers[baseControllerIndex]->Drive());			
-				}
+				}		
 		else if((aController.Info().InstallType() == EInstInstallation
 				|| aController.Info().InstallType() == EInstAugmentation)
 				&& iIsPropagated)
@@ -1037,11 +1041,21 @@
 		else if (IsUserDriveSelectionRequiredL(aController.InstallBlock()))
 			{
 			// User needs to choose which drive will be used for the installation
-	 		ChooseDriveDialogL(*content, *application, size);	
+            #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+                if(IsInInfoCollectionMode())
+                   {
+                   application->UserSelections().SetDrive(iSystemDriveChar);
+                   const_cast <Sis::CController&>(aController).SetDriveSelectionRequired(ETrue);
+                   }
+                else
+                   {
+            #endif                  
+            ChooseDriveDialogL(*content, *application, size);                  
+            #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK                   
+                   }
+            #endif
 			}
-	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-		}
-	#endif
+		
 	CleanupStack::PopAndDestroy(content);
 
 	// To accurately display the space avaialble for next controller 
@@ -1067,7 +1081,335 @@
 			
 	// Process the actual controller, then return the application
 	ProcessInstallBlockL(aController.InstallBlock(), *application, aFilesToCapabilityCheck, *filesList);
-	
+
+	//Publishing the UID of the associated package.
+	TUid publishUid = aController.Info().Uid().Uid();
+	if(!(Swi::SecUtils::IsPackageUidPresent(publishUid, iUidList)))
+	    {
+	    TInt err = Swi::SecUtils::PublishPackageUid(publishUid, iUidList);
+	    if(err == KErrNone)
+	        {
+	        DEBUG_PRINTF2(_L("CInstallationPlanner::ProcessControllerL published Uid %x."), publishUid.iUid);
+	        }
+	    else if(err == KErrOverflow)
+	         {
+	         DEBUG_PRINTF2(_L("CInstallationPlanner::ProcessControllerL failed to publish Uid %x as the array, holding the uids, exceeded its upper limit."),publishUid.iUid);
+	         }
+        else if(err == KErrNotFound)
+             {
+             DEBUG_PRINTF2(_L("CInstallationPlanner::ProcessControllerL failed to publish Uid %x as the property is not been defined."),publishUid.iUid);
+             }
+        else
+	        {
+            DEBUG_PRINTF3(_L("CInstallationPlanner::ProcessControllerL failed to publish Uid %x with error %d."),publishUid.iUid, err);
+            User::Leave(err);
+	        }
+	    }
+		
+	// Filtering of rsc files from the set of files to be copied and using parser to 
+	// extract app uid,foldername,filename and iconfilename 
+    #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+    if(IsInInfoCollectionMode())
+       {        
+        _LIT(KApparcRegDir, "\\private\\10003a3f\\import\\apps\\");	
+        _LIT(KApparcRegistrationFileExtn,".rsc");
+        
+        //Getting the list of files to be added from CApplication Object
+        RPointerArray<CSisRegistryFileDescription> listOfFilesToBeAdded = application->FilesToAdd();
+        //Stores the registration resource files which are passed to the apparc parser
+        RPointerArray<TDesC> regFilesArray;	  
+        CleanupResetAndDestroyPushL(regFilesArray);
+        RPointerArray<CSisRegistryFileDescription> listOfFilesToBeExtracted;  
+        CleanupClosePushL(listOfFilesToBeExtracted);
+        RFs fs;	
+        RArray<TChar> drives;                               // Array of system drives    
+        RArray<TInt64> driveSpaces;                         // Space available on each drive
+        CleanupClosePushL(drives);
+        CleanupClosePushL(driveSpaces);
+        TInt64 currentAvailableDriveSpace = 0 ;         
+        TInt64 totalApplicationDataSize = 0;
+        CSisRegistryFileDescription* currentFileDescription = NULL;
+     
+        //Obtain the disk space available on the drives
+        iSisHelper.FillDrivesAndSpacesL(drives, driveSpaces);
+        TChar systemDrive = RFs::GetSystemDriveChar();
+        TInt driveIndex = drives.Find(systemDrive);
+        currentAvailableDriveSpace = driveSpaces[driveIndex];            //first drive is 'C' drive only
+    
+        //Opening a file server session
+        User::LeaveIfError(fs.Connect());
+        CleanupClosePushL(fs);
+        User::LeaveIfError(fs.ShareProtected());
+    
+        TInt noOfFilesToBeAdded = listOfFilesToBeAdded.Count();
+        // Processing each file and checking if a file is an resource file(*_reg.rsc or *.rsc or *.r%d)
+        for(TInt i=0 ; i < noOfFilesToBeAdded ; i++)
+            {
+            HBufC* targetFileName;	    	   	
+            targetFileName = listOfFilesToBeAdded[i]->Target().Alloc();	   
+            CleanupStack::PushL(targetFileName);
+            TParsePtrC filename(*targetFileName);	    	   
+            TBool isApparcFile = EFalse;
+            TBuf<10> extension = TParsePtrC(*targetFileName).Ext();
+            
+            if(!extension.Compare(KApparcRegistrationFileExtn)) // for resource files *_reg.rsc or *.rsc
+                {
+                isApparcFile = ETrue;
+                }
+            else
+                {
+                TInt extnLength = extension.Length();
+                HBufC* extn;
+                if(extnLength == 4)                            //for localizable resource files with extn like .r01
+                    {
+                    extn = extension.Right(2).AllocLC();
+                    }
+                else if(extnLength == 5)
+                    {
+                    extn = extension.Right(3).AllocLC();       //for localizable resource files with extn like .r101	            
+                    }
+                else
+                    {   
+                    CleanupStack::PopAndDestroy(targetFileName);
+                    continue;
+                    }
+    
+                //Check to find if the extension is of valid localizable resource files 
+                TInt value = 0;
+                // Declare the variable
+                TLex lex(*extn);
+                // Convert the descriptor into the integer number
+                TInt err = lex.Val(value);
+                if(err == KErrNone)
+                  {
+                  isApparcFile = ETrue;    
+                  }	        
+                CleanupStack::PopAndDestroy(extn);	        
+                }
+            
+            //If its an apparc file(rsc) file then add its size to the total application size
+            if(isApparcFile)
+                {	        
+                listOfFilesToBeExtracted.AppendL(listOfFilesToBeAdded[i]);
+                totalApplicationDataSize += listOfFilesToBeAdded[i]->UncompressedLength();
+                }	    
+            CleanupStack::PopAndDestroy(targetFileName);  	    
+            }                   
+            
+            //Here we do extraction of rsc files ,before extracting files we check if there is an enough space on the disk(C drive)
+            //to extract the files then extract the file to a temporary location and
+            //check if it is a registration resource file(using target path) then store it into an array.     
+            TInt noOfFilesToBeExtracted = listOfFilesToBeExtracted.Count();            
+            DEBUG_PRINTF2(_L("Total number resource files (registration/localizable)to be extracted is %d"), noOfFilesToBeExtracted);            
+            if(0 != noOfFilesToBeExtracted)
+                {	
+                
+                //Check if there is enough space to extract the resource (registration or localizable) files    
+                if(totalApplicationDataSize > currentAvailableDriveSpace)
+                    {
+                    //No memory to extract the file
+                    User::LeaveIfError(KErrDiskFull);
+                    }
+                
+                //Extraction of rsc file to a temporary location and if it is a reg resource filr append t to an array for parsing
+                for (TInt i = 0 ; i < noOfFilesToBeExtracted ; i++)
+                    {
+                    TFileName resourceFileName;    
+                    _LIT(KResourceFileNameFmt, "%c:\\resource\\install\\temp\\0x%08x\\%S"); // Pakage Uid  
+                    TFileName finalToBeExtracted = TParsePtrC(listOfFilesToBeExtracted[i]->Target()).NameAndExt();              	             	                 
+                    resourceFileName.Format(KResourceFileNameFmt, TUint(systemDrive), aController.Info().Uid().Uid().iUid,
+                            &finalToBeExtracted);
+                    
+                     TInt err = fs.MkDirAll(resourceFileName);
+                     if (err!= KErrNone && err != KErrAlreadyExists)
+                         User::LeaveIfError(err);                                           
+                                  
+                     RFile resourceFile;    
+                     User::LeaveIfError(resourceFile.Replace(fs, resourceFileName, 
+                         EFileStream|EFileWrite|EFileRead|EFileShareExclusive));
+                     CleanupClosePushL(resourceFile);	         	         
+                     
+                     // Extract resource file to a temporary file.
+                     DEBUG_PRINTF2(_L("Current resource file (registration/localizable) to be extraced is %S"), &resourceFileName);
+                     User::LeaveIfError(iSisHelper.ExtractFileL(fs, resourceFile,
+                             listOfFilesToBeExtracted[i]->Index(), application->AbsoluteDataIndex(), UiHandler()));	 
+                     
+                     CleanupStack::PopAndDestroy(&resourceFile);
+                                      
+                     // If target of the file is apparc's private folder then it is registration resource file for an app
+                     TParsePtrC filename(listOfFilesToBeExtracted[i]->Target());
+                     if (filename.Path().Left(KApparcRegDir().Length()).CompareF(KApparcRegDir) == 0)
+                         {
+                         HBufC* regResourceFileName = resourceFileName.AllocL();
+                         
+                         regFilesArray.AppendL(regResourceFileName);   	             
+                         }   
+                     }
+                //Since the files have been extracted the available disk space is reduced
+                currentAvailableDriveSpace -= totalApplicationDataSize;                
+                }            
+    
+        DEBUG_PRINTF(_L8("Finished extracting all resource files (registration/localizable) successfuly"));
+        //Pass each registration resource file to the parser to fetch the app info  and then if icon file is present fetch the icon file
+        //to a temporary location.
+            
+        TInt noOfRegFilesToBeParsed = regFilesArray.Count();        
+        DEBUG_PRINTF2(_L("Total number Registration Resource files to be parsed is %d"), noOfRegFilesToBeParsed);        
+        for(TInt i = 0 ; i < noOfRegFilesToBeParsed ; i++)
+            {	   	    
+            Usif::CApplicationRegistrationData *appData = NULL;	    	    
+            CNativeComponentInfo::CNativeApplicationInfo* applicationInfo = NULL;
+            RArray<TLanguage> languages;	 
+            TFileName iconFile;	    
+            // Calling the apparc parser to fetch the app info from the resouce files	
+            
+            DEBUG_PRINTF2(_L("Current Registration Resource file to be parsed is %S"), regFilesArray[i]);
+            
+            // Ask the launcher to parse the registration resource file 
+            RSisLauncherSession launcher;
+            CleanupClosePushL(launcher);
+            User::LeaveIfError(launcher.Connect());
+            RFile file;
+            User::LeaveIfError(file.Open(fs, *regFilesArray[i], EFileRead));
+            RArray<TLanguage> appLanguages;
+            CleanupClosePushL(appLanguages);
+            TRAPD(err,appData=launcher.SyncParseResourceFileL(file, appLanguages));
+            CleanupStack::PopAndDestroy(&appLanguages);
+            file.Close();
+            CleanupStack::PopAndDestroy(&launcher);            // popping and destroying as it is not reqd further.
+            
+            DEBUG_PRINTF2(_L("Finished Parsing Registration Resource file %S successfuly"), regFilesArray[i]);
+            if(KErrCorrupt == err)	        
+                {	                                       
+                continue;
+                }
+            else if(KErrNone != err)
+                {	                                             
+                User::Leave(err);
+                }
+            
+            CleanupStack::PushL(appData);
+            TUid appuid = appData->AppUid();
+            HBufC* appname = appData->AppFile().AllocLC();
+            TBuf<100> finalAppName = TParsePtrC(*appname).NameAndExt();
+            const RPointerArray<Usif::CLocalizableAppInfo> aLocalizableAppInfoList = appData->LocalizableAppInfoList();
+            HBufC* groupName = NULL;
+            HBufC* iconFileName = NULL;
+            TInt fileSize = 0 ;
+            
+            //If localizable info for an app is present then get the localized group name else get it from app registration data 
+            if(0 == aLocalizableAppInfoList.Count())
+                {
+                groupName = appData->GroupName().AllocLC();
+                DEBUG_PRINTF2(_L("Application Group Name %S"), groupName);
+                //Since locale does not exists no need to extract, create CNativeApplicationInfo without iconFileName
+                applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, finalAppName, *groupName, *iconFileName);  
+                }
+            else
+                {
+                Usif::CLocalizableAppInfo* localizedInfo = NULL;
+                const Usif::CCaptionAndIconInfo* captionAndIconInfo = NULL;
+                localizedInfo = aLocalizableAppInfoList[0];
+                groupName = localizedInfo->GroupName().AllocLC();	
+                captionAndIconInfo = localizedInfo->CaptionAndIconInfo();
+                //Check if caption and icon info for an app is present or not, if present extract the icon file.
+                if(captionAndIconInfo)
+                    {
+                    TBuf<100> finalIconFileName;	            
+                    iconFileName = captionAndIconInfo->IconFileName().AllocLC();
+                    if(iconFileName != NULL)
+                      {	              
+                      finalIconFileName = TParsePtrC(*iconFileName).NameAndExt();
+                        
+                      _LIT(KIconFileNameFmt, "%c:\\resource\\install\\icon\\0x%08x\\%S");     // Applicaiton Uid
+                      iconFile.Format(KIconFileNameFmt, TUint(systemDrive), appuid.iUid,
+                            &finalIconFileName);
+                      
+                      TInt err = fs.MkDirAll(iconFile);
+                      if (err!= KErrNone && err != KErrAlreadyExists)
+                          User::LeaveIfError(err);
+                      
+                      //Find from the list of files to be copied , the file description of the icon file returned by the parser
+                      for(TInt k = 0; k < listOfFilesToBeAdded.Count() ; k++)
+                          {                      
+                          currentFileDescription = listOfFilesToBeAdded[k];
+                          if(TParsePtrC(currentFileDescription->Target()).NameAndExt().Compare(finalIconFileName))
+                              {
+                              break;
+                              }
+                          }	              
+                      //Check if there is enough space to extract the icon file           
+                      fileSize = currentFileDescription->UncompressedLength();
+                      if(currentAvailableDriveSpace <  fileSize)
+                         {
+                         //No memory to extract the file
+                         User::LeaveIfError(KErrDiskFull);
+                         }
+                      
+                      //Extracting the icon file to a temp location
+                      RFile tempIconFile;
+                      TInt index = 1;
+                      TBuf<10>  integerAppendStr;
+                      // Check if file already exists, if yes then create file with another name (e.g. *_1 or *_2)
+                      while(1)
+                          {	                  
+                          err = tempIconFile.Create(fs, iconFile, EFileStream|EFileWrite|EFileRead|EFileShareExclusive);
+                          if(err == KErrAlreadyExists)
+                              {	                     
+                              integerAppendStr.TrimAll();
+                              integerAppendStr.Format(_L("%d"), index++);
+                              TInt pos = iconFile.Length()-TParsePtrC(iconFile).Ext().Length();
+                              iconFile.Insert(pos,integerAppendStr);	                      
+                              }
+                          else if(err == KErrNone)
+                              {
+                              //Everthing is fine, proceed	                      
+                              break;               
+                              }
+                          else
+                              {
+                              tempIconFile.Close();
+                              User::Leave(err);
+                              }
+                          }
+                      CleanupClosePushL(tempIconFile);  
+                      
+                      DEBUG_PRINTF2(_L("Icon file to be extraced is %S"), &iconFile);
+                      User::LeaveIfError(iSisHelper.ExtractFileL(fs, tempIconFile, listOfFilesToBeAdded[i]->Index(), application->AbsoluteDataIndex(), UiHandler())); 	              
+                      DEBUG_PRINTF(_L8("Finished extracting Icon file successfuly"));
+                      //After copy the available disk space is reduced
+                      currentAvailableDriveSpace -= fileSize;
+                      CleanupStack::PopAndDestroy(2,iconFileName);  //file,iconFileSize
+                      
+                      //Create CNativeApplicationInfo with iconFileName
+                      applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, finalAppName, *groupName, iconFile);                  
+                      }
+                    else
+                      {
+                      //Since iconFileName does not exists no need to extract, create CNativeApplicationInfo without iconName
+                      applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, finalAppName, *groupName, *iconFileName);  
+                      }
+                }
+             }	    
+           
+            DEBUG_PRINTF2(_L("Application Uid 0x%08x"), appuid);
+            DEBUG_PRINTF2(_L("Application Name %S"), appname);
+            DEBUG_PRINTF2(_L("Application Group Name %S"), groupName);
+            DEBUG_PRINTF2(_L("Application Icon File Name %S"), &iconFile);
+                             
+            const_cast <Sis::CController&>(aController).AddApplicationInfoL(applicationInfo);
+            CleanupStack::Pop(applicationInfo);
+            CleanupStack::PopAndDestroy(3, appData);	//groupName,appName,appData
+            languages.Close();	    
+            }
+              
+        CleanupStack::PopAndDestroy(3,&drives);  //fs,driveSpaces,drives
+        CleanupStack::Pop(&listOfFilesToBeExtracted);
+        listOfFilesToBeExtracted.Close(); 
+        CleanupStack::PopAndDestroy(&regFilesArray);  
+      }       
+    #endif    
+    
 	//Append planned controllers list
 	iFilesFromPlannedControllers.AppendL(filesList);
 	CleanupStack::Pop(filesList);
@@ -1089,8 +1431,7 @@
   	CleanupStack::Pop(application); 
 	return application;
 	}
-
-
+	
 // Prepare the eclipsable files list from the right source according to the upgrade.	
 void CInstallationPlanner::PrepareEclipsableFilesListL(const Sis::CController& aController)
 	{
--- a/installationservices/swi/source/swis/server/installationprocessor.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/installationprocessor.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -30,6 +30,9 @@
 #include <usif/sts/sts.h>
 #include "swtypereginfo.h"
 #include "installswtypehelper.h"
+#include "cleanuputils.h"
+#include "userselections.h"
+#include "sissupportedlanguages.h"
 #else
 #include "integrityservices.h"
 #endif
@@ -60,7 +63,7 @@
 #include "progressbar.h"
 #include "fileextractor.h"
 #include "securitycheckutil.h"
-
+#include <s32strm.h>
 using namespace Swi;
 
 
@@ -170,7 +173,11 @@
 		
 	iFilesToCopy.ResetAndDestroy();
 	iApparcRegFiles.ResetAndDestroy();
-	
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	iApparcRegFilesForParsing.ResetAndDestroy();
+	iApparcRegFileData.ResetAndDestroy();
+	delete iAppRegExtractor;	
+#endif	
 	iLoader.Close();
 	iSkipFile.Close();
 	
@@ -200,6 +207,14 @@
 		{
 		iFileExtractor->Cancel();
 		}
+
+	if (iAppRegExtractor != NULL)
+        {
+		if (iAppRegExtractor->IsActive())
+			{
+			iAppRegExtractor->Cancel();
+			}
+		}
 	}
 
 void CInstallationProcessor::DisplayFileL(const CSisRegistryFileDescription& aFileDescription, Sis::TSISFileOperationOptions aFileOperationOption)
@@ -752,15 +767,79 @@
 			CleanupStack::PopAndDestroy(2, &entry); // presintalledSids
 #else
 			CleanupStack::PopAndDestroy(3, &session); // entry, presintalledSids
-#endif
-			
+#endif			
 			}
 		
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK		
+		
+		// Find out all the regisration resource files associated with this package UID and add to the list of 
+		// files to be processed later for parsing
+		// Continue processing the next file if a registration resource file is not found(in case of SA over SA)
+		TRAPD(err, AddAppArcRegResourceFilesL());
+		if ( err != KErrNotFound && err != KErrNone)
+		    User::Leave(err);
+#endif
 		iCurrent = 0;
 		return ETrue;
 		}
 	}
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+void CInstallationProcessor::AddAppArcRegResourceFilesL()
+    {
+    RSisRegistryEntry entry;
+    TInt err = KErrNone;
+    if ( !ApplicationL().IsUninstall() )
+        err = entry.Open(iRegistryWrapper.RegistrySession(), ApplicationL().ControllerL().Info().Uid().Uid());
+    else
+        return;
+    
+    User::LeaveIfError(err);
+    CleanupClosePushL(entry);
+    AddAppArcRegResourceFilesForRegEntryL(entry);
+    
+    RPointerArray<CSisRegistryPackage> augmentationArray;
+    CleanupResetAndDestroyPushL(augmentationArray);
+    entry.AugmentationsL(augmentationArray);
+    CleanupStack::Pop(&augmentationArray);
+    CleanupStack::PopAndDestroy(&entry);    
+        
+    CleanupResetAndDestroyPushL(augmentationArray);
+    TInt count = augmentationArray.Count();
+    for ( TInt i=0; i < count; ++i)
+        {
+        TInt err = entry.OpenL(iRegistryWrapper.RegistrySession(),*augmentationArray[i]);
+        User::LeaveIfError(err);
+        CleanupClosePushL(entry);
+        AddAppArcRegResourceFilesForRegEntryL(entry);
+        CleanupStack::PopAndDestroy(&entry);
+        }
+    
+    CleanupStack::PopAndDestroy(&augmentationArray);
+    }
+
+void CInstallationProcessor::AddAppArcRegResourceFilesForRegEntryL(RSisRegistryEntry& aEntry)
+    {
+    RPointerArray<HBufC> filesArray;
+    CleanupResetAndDestroyPushL(filesArray);
+    aEntry.FilesL(filesArray);    
+    TInt count = filesArray.Count();
+    CSisRegistryPackage *regPkg = aEntry.PackageL();
+    CleanupStack::PushL(regPkg);
+    
+    for (TInt i=0; i<count; ++i)
+        {
+        if (FileIsApparcReg(*filesArray[i]))
+            {
+            CAppRegFileData *tmpAppRegFileData = CAppRegFileData::NewLC(*filesArray[i],*regPkg);
+            iApparcRegFilesForParsing.AppendL(tmpAppRegFileData);
+            CleanupStack::Pop(tmpAppRegFileData);
+            }
+        }
+    CleanupStack::PopAndDestroy(2,&filesArray);
+    }
+#endif
+
 TBool CInstallationProcessor::DoStateVerifyPathsL()
 	{
 	if (iCurrent < ApplicationL().FilesToAdd().Count())
@@ -818,8 +897,75 @@
 	iCurrent = 0;
 	return ETrue;
 	}
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+TBool CInstallationProcessor::DoParseApplicationRegistrationFilesL()
+    {
+    if (iCurrent == 0)
+        DEBUG_PRINTF2(_L("Install Server - DoParseApplicationRegistrationFilesL - Number of Application registration resource files to be parsed %d"), iApparcRegFilesForParsing.Count());
+    
+	if (iAppRegExtractor != NULL)
+        {
+        if (iAppRegExtractor->GetErrorCode() == KErrCorrupt)
+            {
+            delete iApparcRegFilesForParsing[--iCurrent];
+            iApparcRegFilesForParsing.Remove(iCurrent);
+            }
+        }
+    
+    if (iCurrent < iApparcRegFilesForParsing.Count())
+        { 
+        TDesC& fileDescription = (iApparcRegFilesForParsing[iCurrent++]->GetAppRegFile());                          
+        TRAPD(err,ParseRegistrationResourceFileL(fileDescription));        
+        if(KErrNotFound == err)
+            {               
+            delete iApparcRegFilesForParsing[--iCurrent];
+            iApparcRegFilesForParsing.Remove(iCurrent); 
+            TRequestStatus* status = &iStatus;
+            User::RequestComplete(status, KErrNone);     
+            WaitState(ECurrentState);
+            }
+        else if(KErrNone != err )
+            {
+            User::Leave(err);
+            }
+        else
+            {
+            WaitState(ECurrentState);
+            }
+        return EFalse;
+        }
+    else
+        {
+        iCurrent = 0;
+        return ETrue;
+        }
+    }
 
-
+TBool CInstallationProcessor::ParseRegistrationResourceFileL(const TDesC& aTargetFileName)
+    {
+    DEBUG_PRINTF2(_L("Install Server - ParseRegistrationResourceFileL - Parsing '%S' registration resource file"), &aTargetFileName);
+    if ( NULL == iAppRegExtractor )
+        {
+        DEBUG_PRINTF(_L("Install Server - ParseRegistrationResourceFileL - Creating CAppRegExtractor for async parsing of registration resource file"));
+        CApplication& app = const_cast<CApplication&>(ApplicationL());
+        RArray<TInt> matchingLanguages = app.GetDeviceSupportedLanguages();
+        RArray<TLanguage> devLanguages;
+        CleanupClosePushL(devLanguages);
+        TInt count = matchingLanguages.Count();
+        
+        DEBUG_PRINTF2(_L("Install Server - ParseRegistrationResourceFileL - %d matching languages found"),count);
+        for ( TInt i=0; i<count; i++)
+            {
+            devLanguages.Append((TLanguage)matchingLanguages[i]);            
+            }
+        iAppRegExtractor = CAppRegExtractor::NewL(Fs(),devLanguages,iApparcRegFileData);
+        CleanupStack::Pop(&devLanguages);       
+        }
+        
+    iAppRegExtractor->ExtractAppRegInfoSizeL(aTargetFileName, iStatus);
+    return EFalse;
+    }
+#endif
 
 TBool CInstallationProcessor::DoStateDisplayFilesL()
 	{
@@ -846,6 +992,108 @@
 	// destroy the memory heavy file copy descriptions
 	iFilesToCopy.ResetAndDestroy();
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	
+	RArray<TAppUpdateInfo> affectedApps;    
+	CleanupClosePushL(affectedApps);
+	const CApplication& application = ApplicationL();
+	if(iApparcRegFilesForParsing.Count() != 0)
+	    {
+	    //Create the list of Application Uids which are affected by the Installation    	    	    
+	    Usif::TComponentId componentId = 0;
+	    RArray<Usif::TComponentId> componentIds;
+	    CleanupClosePushL(componentIds);
+	    RArray<TUid> existingAppUids;
+	    CleanupClosePushL(existingAppUids);
+	    TAppUpdateInfo existingAppInfo;     
+	    TUid packageUid = application.ControllerL().Info().Uid().Uid();
+	    
+        if(application.IsUpgrade()) 
+            {	 	    
+            //Get all componentIds
+            iRegistryWrapper.RegistrySession().GetComponentIdsForUidL(packageUid, componentIds);            
+            TInt count = componentIds.Count();
+            if(0 == count)
+                {
+                DEBUG_PRINTF(_L("ComponentIDs not found for the base package"));
+                User::Leave(KErrNotFound);
+                }
+                                
+            //SA over SA
+            if(application.ControllerL().Info().InstallType() == Sis::EInstInstallation )
+                {        
+                //Get the compid for base package
+                componentId = iRegistryWrapper.RegistrySession().GetComponentIdForUidL(packageUid);
+                if(!componentId)
+                    {
+                    DEBUG_PRINTF(_L("ComponentID not found for the base package"));
+                    User::Leave(KErrNotFound);
+                    }
+                      
+                TInt index = componentIds.Find(componentId);
+                if(index != KErrNotFound)
+                    {
+                    //Exclude the Base SA compId from the list 
+                    componentIds.Remove(index);
+                    }
+                //Get the apps for Base SA compId and mark them as to be deleted
+                existingAppUids.Reset();
+                iRegistryWrapper.RegistrySession().GetAppUidsForComponentL(componentId, existingAppUids);                 
+                for(TInt i = 0 ; i < existingAppUids.Count(); i++)
+                    {
+                    existingAppInfo = TAppUpdateInfo(existingAppUids[i], EAppUninstalled);    
+                    affectedApps.Append(existingAppInfo);
+                    }                
+                //Get the apps for Remaining CompIds and mark them as to be upgraded               
+                for(TInt i = 0 ; i < componentIds.Count(); i++)
+                    {
+                    existingAppUids.Reset();                    
+                    iRegistryWrapper.RegistrySession().GetAppUidsForComponentL(componentIds[i], existingAppUids); 
+                    for(TInt i = 0 ; i < existingAppUids.Count(); i++)
+                        {
+                        existingAppInfo = TAppUpdateInfo(existingAppUids[i], EAppInstalled);    
+                        affectedApps.Append(existingAppInfo);
+                        }
+                    }                                
+                }
+                
+            //SP over SP
+            if(application.ControllerL().Info().InstallType() == Sis::EInstAugmentation)
+                {
+                componentId = iRegistryWrapper.RegistrySession().GetComponentIdForPackageL(application.PackageL().Name(), application.PackageL().Vendor());
+                //if SP upgrades the SP
+                if(componentId)
+                    {
+                    //Get the apps for Base SP compId and mark them as to be deleted
+                    existingAppUids.Reset();
+                    iRegistryWrapper.RegistrySession().GetAppUidsForComponentL(componentId, existingAppUids); 
+                    for(TInt i = 0 ; i < existingAppUids.Count(); i++)
+                       {
+                       existingAppInfo = TAppUpdateInfo(existingAppUids[i], EAppUninstalled);    
+                       affectedApps.Append(existingAppInfo);
+                       }  
+                    }            
+                }        
+            }	    
+        
+        else if(application.IsPartialUpgrade() || application.IsAugmentation() || application.IsPreInstalledPatch())
+            {       
+            //Get the apps for Remaining CompIds and mark them as to be upgraded               
+            for(TInt i = 0 ; i < componentIds.Count(); i++)
+                {
+                existingAppUids.Reset();                    
+                iRegistryWrapper.RegistrySession().GetAppUidsForComponentL(componentIds[i], existingAppUids); 
+                for(TInt i = 0 ; i < existingAppUids.Count(); i++)
+                    {
+                    existingAppInfo = TAppUpdateInfo(existingAppUids[i], EAppInstalled);    
+                    affectedApps.Append(existingAppInfo);
+                    }
+                }        
+            }
+        CleanupStack::PopAndDestroy(2, &componentIds);
+	    }		
+#endif
+	
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	// Now that we are ready to make changes to the registry we start a transaction
 	// Note that the commit/rollback action is subsequently taken by the later steps of the state machine
@@ -936,6 +1184,11 @@
 			{
 			iRegistryWrapper.RegistrySession().UpdateEntryL(ApplicationL(), thisController, TransactionSession().TransactionIdL());
 			}
+		TInt count = iApparcRegFileData.Count();
+        for (int i = 0; i < count; i++)
+            {
+		    iRegistryWrapper.RegistrySession().UpdateEntryL(ApplicationL(), *iApparcRegFileData[i], iApparcRegFilesForParsing[i]->GetSisRegistryPackage());
+		    }
 #else
 		session.UpdateEntryL(ApplicationL(), thisController, IntegrityServices().TransactionId());
 #endif
@@ -954,6 +1207,11 @@
 			{
 			iRegistryWrapper.RegistrySession().AddEntryL(ApplicationL(), thisController, TransactionSession().TransactionIdL());
 			}
+		TInt count = iApparcRegFileData.Count();
+		for (int i = 0; i < count; i++)
+		    {
+                iRegistryWrapper.RegistrySession().AddEntryL(*iApparcRegFileData[i], iApparcRegFilesForParsing[i]->GetSisRegistryPackage());
+		    }
 #else
 		session.AddEntryL(ApplicationL(), thisController, IntegrityServices().TransactionId());
 #endif
@@ -976,6 +1234,54 @@
 	// RSisRegistryWritableSession::AddEntryL()
 	// RSisRegistryWritableSession::UpdateEntryL()
 	InstallSoftwareTypeHelper::RegisterMimeTypesL(iSoftwareTypeRegInfoArray);
+	
+	if(iApparcRegFilesForParsing.Count() != 0)
+	    {
+	    //Create the list of Application Uids which are affected by the Installation                            
+        RArray<Usif::TComponentId> componentIds;
+        CleanupClosePushL(componentIds);
+        RArray<TUid> newAppUids;    
+        CleanupClosePushL(newAppUids);
+        TAppUpdateInfo existingAppInfo, newAppInfo;     
+        TUid packageUid = application.ControllerL().Info().Uid().Uid();
+        //Get all componentIds for the application
+        componentIds.Reset();
+        iRegistryWrapper.RegistrySession().GetComponentIdsForUidL(packageUid, componentIds);
+        TInt count = componentIds.Count();
+        
+        //Get the apps for All CompIds               
+        for(TInt i = 0 ; i < count; i++)
+            {
+            newAppUids.Reset();                    
+            TRAPD(err,iRegistryWrapper.RegistrySession().GetAppUidsForComponentL(componentIds[i], newAppUids))
+            if (KErrNone != err && KErrNotFound != err)
+                User::Leave(err);
+            
+            for(TInt i = 0 ; i < newAppUids.Count(); i++)
+                {
+                existingAppInfo = TAppUpdateInfo(newAppUids[i], EAppUninstalled);
+                TInt index = 0;
+                index = affectedApps.Find(existingAppInfo);
+                if(KErrNotFound != index)
+                    {
+                    affectedApps.Remove(index);
+                    }
+                existingAppInfo = TAppUpdateInfo(newAppUids[i],EAppInstalled);
+                affectedApps.Append(existingAppInfo);            
+                }        
+            }
+        
+        for(TInt i = 0; i < affectedApps.Count(); i++)
+           {
+           DEBUG_PRINTF2(_L("AppUid is 0x%x"), affectedApps[i].iAppUid);
+           DEBUG_PRINTF2(_L("Action is %d"), affectedApps[i].iAction);
+           }   
+        const_cast<CPlan&>(Plan()).ResetAffectedApps();
+        const_cast<CPlan&>(Plan()).SetAffectedApps(affectedApps);
+        
+        CleanupStack::PopAndDestroy(2, &componentIds);
+	    }
+	CleanupStack::PopAndDestroy(&affectedApps);
 #endif
 	return ETrue;
 	}
@@ -1307,8 +1613,47 @@
 		RSisLauncherSession launcher;
 		CleanupClosePushL(launcher);
 		User::LeaveIfError(launcher.Connect());
-	
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+		RPointerArray<Usif::CApplicationRegistrationData> appRegInfoArray;
+		CleanupClosePushL(appRegInfoArray);
+
+		RFs fs;
+		CleanupClosePushL(fs);
+        User::LeaveIfError(fs.Connect());
+		User::LeaveIfError(fs.ShareProtected());
+		RArray<TLanguage> appLanguages;
+		CleanupClosePushL(appLanguages);
+				        
+		const TInt appCount = iApparcRegFiles.Count();
+		for (TInt i=0; i<appCount; ++i)
+			{
+			TInt bufLen = iApparcRegFiles[i]->Size();
+			HBufC* buf = HBufC::NewLC(bufLen);
+			TPtr appFile = buf->Des();
+			appFile.Format(_L("%S"), iApparcRegFiles[i]);
+
+			RFile file;
+			User::LeaveIfError(file.Open(fs, appFile, EFileRead));
+			CleanupClosePushL(file);
+			Usif::CApplicationRegistrationData* appRegData  = NULL;
+			TRAPD(err, appRegData = launcher.SyncParseResourceFileL(file, appLanguages));
+			if (KErrNone == err)
+			    {
+		         CleanupStack::PushL(appRegData);
+		         appRegInfoArray.AppendL(appRegData);
+		         CleanupStack::Pop(appRegData);
+			    }
+			CleanupStack::PopAndDestroy(2,buf);
+			}
+		
+		launcher.NotifyNewAppsL(appRegInfoArray);
+        fs.Close();
+        appRegInfoArray.ResetAndDestroy();
+		CleanupStack::PopAndDestroy(3, &appRegInfoArray);
+#else
 		launcher.NotifyNewAppsL(iApparcRegFiles);
+#endif
 		// clean up our list so we don't notify of the files twice
 		iApparcRegFiles.ResetAndDestroy();
 		
@@ -1333,7 +1678,7 @@
 		}
 	return EFalse;
 	}
-	
+
 void CInstallationProcessor::AddApparcFilesInListL(const TDesC& aTargetFileName)
 	{
 	if (FileIsApparcReg(aTargetFileName))
@@ -1342,5 +1687,79 @@
 		HBufC* tmp = aTargetFileName.AllocLC();
 		iApparcRegFiles.AppendL(tmp);
 		CleanupStack::Pop(tmp);
+
+#ifdef 	SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	    // we're installing a reg file so add it to our list for parsing it and 
+		// populating SCR in EParseApplicationRegistrationFiles state of CProcessor	    
+		TInt index = UserSelectedLanguageIndexL(ApplicationL());
+		CSisRegistryPackage *regPkg = CSisRegistryPackage::NewLC(ApplicationL().ControllerL().Info().Uid().Uid(),\
+		        ApplicationL().ControllerL().Info().Names()[index]->Data(),\
+		        ApplicationL().ControllerL().Info().UniqueVendorName().Data());
+		CAppRegFileData *appRegData =CAppRegFileData::NewLC(aTargetFileName,*regPkg);
+	    iApparcRegFilesForParsing.AppendL(appRegData);
+	    CleanupStack::Pop(appRegData);
+	    CleanupStack::PopAndDestroy(regPkg);
+#endif		
 		}		
 	}
+
+#ifdef  SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
+TInt CInstallationProcessor::UserSelectedLanguageIndexL(const CApplication& aApplication) const
+// used to find out which is the index of the selected language, 
+// based on the language selection. This will be used for the relevant package and vendor names
+    {
+    TLanguage language = aApplication.UserSelections().Language();
+    
+    TInt index = KErrNotFound;
+    for (TInt i = 0; i < aApplication.ControllerL().SupportedLanguages().Count(); i++)
+        {
+        if (aApplication.ControllerL().SupportedLanguages()[i] == language)
+            {
+            index = i;
+            break;  
+            }
+        }
+    User::LeaveIfError(index);
+    return index;
+    }   
+
+CAppRegFileData* CAppRegFileData::NewL(const TDesC& aAppRegFile, const CSisRegistryPackage& aSisRegistryPackage)
+    {
+    CAppRegFileData* self = CAppRegFileData::NewLC(aAppRegFile, aSisRegistryPackage);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CAppRegFileData* CAppRegFileData::NewLC(const TDesC& aAppRegFile, const CSisRegistryPackage& aSisRegistryPackage)
+    {
+    CAppRegFileData* self = new(ELeave) CAppRegFileData();
+    CleanupStack::PushL(self);
+    self->ConstructL(aAppRegFile, aSisRegistryPackage);
+    return self;
+    }
+void CAppRegFileData::ConstructL(const TDesC& aAppRegFile, const CSisRegistryPackage& aSisRegistryPackage)
+    {
+    iAppRegFile = aAppRegFile.AllocL();
+    iSisRegistryPackage = CSisRegistryPackage::NewL(aSisRegistryPackage);
+    }
+CAppRegFileData::CAppRegFileData()
+    {
+    }
+
+CAppRegFileData::~CAppRegFileData()
+    {
+    delete iAppRegFile;
+    delete iSisRegistryPackage;
+    }
+
+TDesC& CAppRegFileData::GetAppRegFile()
+    {
+    return *iAppRegFile;
+    }
+
+CSisRegistryPackage& CAppRegFileData::GetSisRegistryPackage()
+    {
+    return *iSisRegistryPackage;
+    }
+#endif
--- a/installationservices/swi/source/swis/server/installationprocessor.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/installationprocessor.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -34,6 +34,9 @@
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include "registrywrapper.h"
+#include "appregextractor.h"
+#include <swi/sisregistrypackage.h>
+#include <swi/sisregistryentry.h>
 #else
 #include "sisregistrywritablesession.h"
 #endif
@@ -53,7 +56,9 @@
 class CFileExtractor;
 class CSidCache;
 class MSisDataProvider;
-
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+class CAppRegFileData;
+#endif
 /**
  * This class processes a CApplication created by the installation planner
  * @released
@@ -271,6 +276,14 @@
 	virtual TBool DoStateVerifyPathsL();
 	virtual TBool DoStateInstallFilesL();
 	virtual TBool DoStateDisplayFilesL();
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	virtual TBool DoParseApplicationRegistrationFilesL();
+	TBool ParseRegistrationResourceFileL(const TDesC& aTargetFileName);
+	TBool GetComponentIdL(const Usif::RSoftwareComponentRegistry& aScrSession, const TUid& aPackageUid, const TInt aPackageIndex, Usif::TComponentId& aComponentId);	
+	void AddAppArcRegResourceFilesL();
+	void AddAppArcRegResourceFilesForRegEntryL( RSisRegistryEntry& aEntry);
+	TInt UserSelectedLanguageIndexL(const CApplication& aApplication) const;
+#endif	
 	virtual TBool DoStateUpdateRegistryL();
 	virtual TBool DoStateProcessFilesL();
 	virtual TBool DoStateProcessSkipFilesL();
@@ -306,6 +319,7 @@
 
 	/// @return true if aFilename is an Apparc registration file 
 	bool FileIsApparcReg(const TDesC& aFilename) const;
+	
 private:
 	/// Security Manager provided by SWIS
 	CSecurityManager& iSecurityManager;
@@ -334,7 +348,7 @@
 	 * running an exe.
 	 */
 	RPointerArray<TDesC> iApparcRegFiles;
-	
+    
 	RLoader iLoader;
 	
 	/**
@@ -346,9 +360,32 @@
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	/** The list of the software types to be registered read from the XML registration file. */
 	RCPointerArray<CSoftwareTypeRegInfo> iSoftwareTypeRegInfoArray;
+	RPointerArray<Usif::CApplicationRegistrationData> iApparcRegFileData;
+   /**
+     * The list of Apparc registration files to parse to populate SCR
+     */ 
+    RPointerArray<CAppRegFileData> iApparcRegFilesForParsing;
+    
+    CAppRegExtractor *iAppRegExtractor;  
+        
 #endif
 	};
-
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+class CAppRegFileData:public CBase
+    {
+public:
+    static CAppRegFileData* NewLC(const TDesC& aAppRegFile, const CSisRegistryPackage& aSisRegistryPackage); 
+    static CAppRegFileData* NewL(const TDesC& aAppRegFile, const CSisRegistryPackage& aSisRegistryPackage);
+    TDesC& GetAppRegFile();
+    CSisRegistryPackage& GetSisRegistryPackage();
+    ~CAppRegFileData();
+private:
+    CAppRegFileData();
+    void ConstructL(const TDesC& aAppRegFile, const CSisRegistryPackage& aSisRegistryPackage);
+    HBufC *iAppRegFile;
+    CSisRegistryPackage *iSisRegistryPackage;
+    };
+#endif
 	
 // inline functions
 
--- a/installationservices/swi/source/swis/server/installmachine.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/installmachine.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -51,7 +51,11 @@
 #include <ocsp.h>
 #include "secutils.h"
 #include "sislauncherclient.h"
-
+#include "swicenrep.h"
+// Security settings.
+#include <x509certext.h>
+#include <pkixvalidationresult.h>
+#include <secsettings/secsettingsclient.h>
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include "swi/sisversion.h"
 #include "swi/nativecomponentinfo.h"
@@ -62,6 +66,9 @@
 using namespace Swi;
 using namespace Swi::Sis;
 
+_LIT(KExpressSignedOID, "1.2.826.0.1.1796587.1.1.2.1"); 
+_LIT(KCertifiedSignedOID, "1.2.826.0.1.1796587.1.1.2.2"); 
+_LIT(KCertifiedSignedWithVerisignOID, "1.2.826.0.1.1796587.1.1.2.3"); 
 
 //
 // TInstallState
@@ -493,6 +500,7 @@
 			}
 		
 		case ESignatureSelfSigned:	
+		    {
 			iInstallMachine.SetTrust(ESisPackageCertificateChainNoTrustAnchor);
 		    iInstallMachine.SetValidationStatus(EValidated);
 		    
@@ -501,11 +509,36 @@
 			if(iInstallMachine.IsInInfoMode())
 				break;
 			#endif
-			if (!SecurityAlertL(ETrue))
-		    	User::Leave(KErrCancel);			
-		    break;
-		    
-		   
+			
+            TBool allowSelfSigned(ETrue);
+	          
+	        // Session to access Install Central Repository Server.
+	        SecuritySettingsServer::RSecSettingsSession secSettingsSession;
+
+	        // Connect to the Central Repository server.
+	        User::LeaveIfError(secSettingsSession.Connect());
+
+            CleanupClosePushL(secSettingsSession);
+	             
+            // Read-in the values of the settings - KAllowSelfSignedInstallKey. 
+            // These will retain the default values if any error occurs.
+
+	        TRAPD(err, (allowSelfSigned = secSettingsSession.SettingValueL(KUidInstallationRepository , KAllowSelfSignedInstallKey)));
+
+	        if( err == KErrNone || err == KErrSettingNotFound || err == KErrNotFound)
+				{
+	             if (!allowSelfSigned || !SecurityAlertL(ETrue))
+					{
+	                 User::Leave(KErrCancel);
+					}
+				}
+	        else
+				{
+	              User::Leave(err);
+				}
+            CleanupStack::PopAndDestroy(&secSettingsSession);    	         			
+			break;
+		    }		   
         case ECertificateValidationError:
 		case ENoCertificate:
 		case ENoCodeSigningExtension:
@@ -636,24 +669,104 @@
 	
 	if ((iInstallMachine.iCertificates.Count()) && iNeedOcsp)
 		{
-		// We haven't done the planning phase so we need to use the default
-		TAppInfo appInfo(iInstallMachine.iCurrentContentProvider->DefaultLanguageAppInfoL());
+		TInt checkOCSPForExpressSignedPkg = 1;
+		TInt checkOCSPForSelfSignedPkg = 1;
+		TInt checkOCSPForCertifiedSignedPkg = 1;
+		TInt checkOCSPForCertifiedWithVeriSignPkg = 1;
+
+		// Session to access Security Central Repository Server.
+		SecuritySettingsServer::RSecSettingsSession secSettingsSession;
 
-		// Signal OCSP check starting
-		CHandleCancellableInstallEvent* cmd = CHandleCancellableInstallEvent::NewLC(appInfo, EEventOcspCheckStart, 0, KNullDesC);
-		iInstallMachine.UiHandler().ExecuteL(*cmd);
-		CleanupStack::PopAndDestroy(cmd);
+		// Connect to the Security Central Repository server.
+		User::LeaveIfError(secSettingsSession.Connect());
+
+		CleanupClosePushL(secSettingsSession);
+    
+		// Read-in the values of the settings from the Install Central Repository. 
+		// These will retain the default values if any error occurs.
+		TRAPD(err, checkOCSPForExpressSignedPkg = secSettingsSession.SettingValueL(KUidInstallationRepository, KCheckOCSPForExpressedSignedPkgKey));
+		TRAP(err, checkOCSPForSelfSignedPkg = secSettingsSession.SettingValueL(KUidInstallationRepository, KCheckOCSPForSelfSignedPkgKey));
+		TRAP(err, checkOCSPForCertifiedSignedPkg = secSettingsSession.SettingValueL(KUidInstallationRepository, KCheckOCSPForCertifiedSignedPkgKey));
+		TRAP(err, checkOCSPForCertifiedWithVeriSignPkg = secSettingsSession.SettingValueL(KUidInstallationRepository, KCheckOCSPForCertifiedWithVeriSignPkgKey));
 		
-		// Start OCSP check.
-		TBuf8<256> ocspUri(iInstallMachine.iInstallPrefs->RevocationServerUri());
-		iInstallMachine.iSecurityManager->PerformOcspL(ocspUri, iInstallMachine.iIap,
-			&iInstallMachine.iOcspMsg,iInstallMachine.iOcspOutcomes,
-			iInstallMachine.iCertificates,iInstallMachine.iStatus);
+		CleanupStack::PopAndDestroy(&secSettingsSession);
 
-        TTime time;
-        time.UniversalTime();
-        TSisTrustStatus& trustStatus =  iInstallMachine.iController->TrustStatus();
-        trustStatus.SetLastCheckDate(time);
+		TBool makeOcspCheck = (checkOCSPForExpressSignedPkg == 1) && (checkOCSPForSelfSignedPkg == 1) && (checkOCSPForCertifiedSignedPkg == 1) && (checkOCSPForCertifiedWithVeriSignPkg == 1);
+	
+		//Find the OID of the certificate and make ocsp check based on settings retreived from cenrep
+		for (TInt i=0; i<iInstallMachine.iCertificates.Count(); ++i)
+		    {
+		    if(makeOcspCheck)//Could be true if set in the previous iCertificates.
+		        {
+		        break;
+		        }
+		    CX509Certificate* cert = iInstallMachine.iCertificates[i];
+		    const CX509CertExtension* certExt =  cert->Extension(KCertPolicies);
+			if (certExt == NULL)
+				{
+				makeOcspCheck = ETrue;
+				continue;
+				}
+		    CX509CertPoliciesExt* policyExt = CX509CertPoliciesExt::NewLC(certExt->Data());
+		    const CArrayPtrFlat<CX509CertPolicyInfo>& policies = policyExt->Policies();
+		    if(policies.Count() == 0)
+				{
+		        makeOcspCheck = ETrue;
+				}
+			for(TInt j=0; j<policies.Count(); ++j)
+				{
+				HBufC* oid = (policies[j])->Id().AllocLC();
+				if (oid->Compare(KExpressSignedOID) == 0)
+					{
+					makeOcspCheck = (checkOCSPForExpressSignedPkg==1);   
+					}
+				else if(oid->Compare(KCertifiedSignedOID) == 0)
+					{
+					makeOcspCheck = (checkOCSPForCertifiedSignedPkg==1); 
+					}
+				else if(oid->Compare(KCertifiedSignedWithVerisignOID) == 0)
+					{
+					makeOcspCheck = (checkOCSPForCertifiedWithVeriSignPkg==1);   
+					}
+				else if(iInstallMachine.iSigValidationResult == ESignatureSelfSigned)
+					{
+					makeOcspCheck = (checkOCSPForSelfSignedPkg==1);
+					}
+				CleanupStack::PopAndDestroy(oid);
+				if(makeOcspCheck)
+					{
+					break;
+					}                
+				}
+		    CleanupStack::PopAndDestroy(policyExt);       
+			}
+		
+		if (makeOcspCheck)
+		    {
+            // We haven't done the planning phase so we need to use the default
+            TAppInfo appInfo(iInstallMachine.iCurrentContentProvider->DefaultLanguageAppInfoL());
+    
+            // Signal OCSP check starting
+            CHandleCancellableInstallEvent* cmd = CHandleCancellableInstallEvent::NewLC(appInfo, EEventOcspCheckStart, 0, KNullDesC);
+            iInstallMachine.UiHandler().ExecuteL(*cmd);
+            CleanupStack::PopAndDestroy(cmd);
+            
+            // Start OCSP check.
+            TBuf8<256> ocspUri(iInstallMachine.iInstallPrefs->RevocationServerUri());
+            iInstallMachine.iSecurityManager->PerformOcspL(ocspUri, iInstallMachine.iIap,
+                &iInstallMachine.iOcspMsg,iInstallMachine.iOcspOutcomes,
+                iInstallMachine.iCertificates,iInstallMachine.iStatus);
+    
+            TTime time;
+            time.UniversalTime();
+            TSisTrustStatus& trustStatus =  iInstallMachine.iController->TrustStatus();
+            trustStatus.SetLastCheckDate(time);
+		    }
+        else
+            {
+            iNeedOcsp = EFalse;
+            iInstallMachine.CompleteSelf();
+            }
 		}
 	else
 		{
@@ -905,11 +1018,6 @@
 	//contains any executable(.exe or .dll).
 	if (iInstallMachine.IsInInfoMode())
 		{
-		TCapabilitySet userGrantableCaps;
-		userGrantableCaps.SetEmpty();
-		iInstallMachine.GetRequestedCapabilities(userGrantableCaps, filesToCapabilityCheck);
-		iInstallMachine.SetUserGrantableCapabilities(userGrantableCaps);
-		
 		Sis::CController& controller = const_cast <Sis::CController&>(iInstallMachine.iPlanner->CurrentController());
 		controller.SetHasExecutable(EFalse);
 		TInt noOfFiles = filesToCapabilityCheck.Count();		
@@ -1187,24 +1295,43 @@
 void CInstallMachine::PostJournalFinalizationL(TInt aError)
 	{
 	DEBUG_PRINTF(_L8("Install Machine - PostJournalFinalization"));
-
+   
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	// Do nothing in info mode
 	if(IsInInfoMode())
 		{
 		return;
-		}
+		}	    
 #endif
+	
 	if (!iPlan)
 		{
 		return;
 		}
 	const RPointerArray<CSisRegistryFileDescription>& filesToRun = iPlan->FilesToRunAfterInstall();
-
-	TInt numFiles = filesToRun.Count();
-	
+    RSisLauncherSession launcher;	        
+    if (launcher.Connect() != KErrNone)
+        {
+        DEBUG_PRINTF(_L8("Install Machine - Failed to connect to SisLauncher"));
+        return;
+        }
+    CleanupClosePushL(launcher);
+	 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	//Notify apparc for the the change in the Applications
+    RArray<TAppUpdateInfo> affectedApps;
+    iPlan->GetAffectedApps(affectedApps);
+    if (affectedApps.Count() > 0)
+        {
+        launcher.NotifyNewAppsL(affectedApps);
+        }
+    affectedApps.Close();
+#endif
+	    
+	TInt numFiles = filesToRun.Count();	
 	if (aError != KErrNone || numFiles <= 0)
 		{
+		CleanupStack::PopAndDestroy(&launcher);
 		return;
 		}
 	
@@ -1218,17 +1345,12 @@
 		return;
 		}
 	
-	DEBUG_PRINTF(_L8("Install Machine - Processing files to run after install"));
-	RSisLauncherSession launcher;
+	DEBUG_PRINTF(_L8("Install Machine - Processing files to run after install"));	
+
+#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK		
 	
-	if (launcher.Connect() != KErrNone)
-		{
-		DEBUG_PRINTF(_L8("Install Machine - Failed to connect to SisLauncher, continuing..."));
-		return;
-		}
-	CleanupClosePushL(launcher);
 	launcher.NotifyNewAppsL(iPlan->AppArcRegFiles());
-
+#endif
 	if (iPlan->ContainsPlugins())
 
 		{
@@ -1561,17 +1683,19 @@
 	// Check if any of them are system capabilities. If so, bail out.
   	TCapabilitySet requiredExtraSysCaps(requestedCaps);
   	SecurityCheckUtil::RemoveUserCaps(requiredExtraSysCaps, *iSecurityManager);
-	TAppInfo appInfo(iCurrentContentProvider->DefaultLanguageAppInfoL()); 
-	
+		
 	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	// Report the error to the user only when machine not runs in info collection mode
 	if(IsInInfoMode())
 		{
-		SetUserGrantableCapabilities(requestedCaps);
+		TCapabilitySet requiredUserCaps(requestedCaps);
+		requiredUserCaps.Remove(requiredExtraSysCaps);
+		SetUserGrantableCapabilities(requiredUserCaps);
 		return;
 		}
 	#endif
 
+	TAppInfo appInfo(iCurrentContentProvider->DefaultLanguageAppInfoL());
 	if (SecurityCheckUtil::NotEmpty(requiredExtraSysCaps)||(SecurityCheckUtil::NotEmpty(requestedCaps) && EFalse==iSecurityManager->SecurityPolicy().AllowGrantUserCaps()))
 		{
 		// Report error to the user. Include the list of capabilities that are left in requestedCaps.
@@ -1811,6 +1935,20 @@
 	//Setting the HasExecutable flag
 	aNativeComponentInfo->iHasExe = controller.HasExecutable();
 	
+	//Setting the drive selection requird flag
+	aNativeComponentInfo->iIsDriveSelectionRequired = controller.DriveSelectionRequired();
+	
+	//Populate ApplicationInfo, copy the app info from controller's iApplicationInfo  to install machines's iApplicationInfo 
+	RCPointerArray<CNativeComponentInfo::CNativeApplicationInfo> applications;
+	applications = const_cast<CController&>(aController).GetApplicationInfo();
+	for(TInt i = 0 ; i < applications.Count() ; i++)
+	    {
+	    CNativeComponentInfo::CNativeApplicationInfo*  appInfo = NULL;
+	    appInfo = CNativeComponentInfo::CNativeApplicationInfo::NewLC(applications[i]->AppUid(), applications[i]->Name(), applications[i]->GroupName(), applications[i]->IconFileName());
+	    aNativeComponentInfo->iApplications.AppendL(appInfo);
+	    CleanupStack::Pop(appInfo);
+	    }	
+	
 	const RPointerArray<CController>& embeddedControllers = aController.InstallBlock().EmbeddedControllers();
 	TInt totalEmbeddedControllers = embeddedControllers.Count();
 	for (TInt controller = 0; controller < totalEmbeddedControllers; controller++)
--- a/installationservices/swi/source/swis/server/installserver.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/installserver.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -336,9 +336,41 @@
 // Initiate server exit when the timer expires
 void CInstallServerShutdown::RunL()
 	{
+    DeleteTempRscFilesL();
 	CActiveScheduler::Stop();
 	}
 
+void CInstallServerShutdown::DeleteTempRscFilesL()
+    {
+    DEBUG_PRINTF(_L8("Deleting temporary application registration rsource files"));
+    TChar systemDrive = RFs::GetSystemDriveChar();
+    TFileName tempResourceFileLocation; 
+    _LIT(KTempRscFileLocation, "%c:\\resource\\install\\temp\\");
+    tempResourceFileLocation.Format(KTempRscFileLocation, TUint(systemDrive));
+    RFs fileSession;    
+    User::LeaveIfError(fileSession.Connect());
+    CleanupClosePushL(fileSession);   
+    CFileMan* fileManager = NULL;
+    TRAPD(err, fileManager = CFileMan::NewL(fileSession))
+    if (KErrNone != err)
+        {
+        DEBUG_PRINTF2(_L8("Can not delete temp app rsc files %d"), err);
+        if(NULL != fileManager)
+            delete fileManager;
+        CleanupStack::Pop(&fileSession);
+        fileSession.Close();  
+        return;
+        }        
+    
+    err = fileManager->RmDir(tempResourceFileLocation);
+    if (KErrNone != err)
+        DEBUG_PRINTF2(_L8("Deleting temp app rsc file resulted in an error %d"), err);
+    
+    delete fileManager;
+    CleanupStack::Pop(&fileSession);
+    fileSession.Close();    
+    }
+
 //
 // CInstallServer
 //
--- a/installationservices/swi/source/swis/server/installserver.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/installserver.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -50,6 +50,7 @@
 	inline void Start();
 private:
 	void RunL();
+	void DeleteTempRscFilesL();
 	};
 
 /**
--- a/installationservices/swi/source/swis/server/planner.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/planner.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -493,6 +493,27 @@
 		}
 	
 	UpdateAppForUninstallL(*rootApplication, aRootNode);
+	if(!(Swi::SecUtils::IsPackageUidPresent(aRootNode.PackageL().Uid(), iUidList)))
+	    {
+	    TInt err = SecUtils::PublishPackageUid(aRootNode.PackageL().Uid(), iUidList);
+		if(err==KErrNone)
+            {
+            DEBUG_PRINTF2(_L("CPlanner::CreatePlannedApplicationL published Uid is %x."),aRootNode.PackageL().Uid());
+		    }
+		else if(err == KErrOverflow)
+		    {
+            DEBUG_PRINTF2(_L("CPlanner::CreatePlannedApplicationL failed to publish Uid %x as the array, holding the uids, exceeded its upper limit."),aRootNode.PackageL().Uid());
+		    }
+        else if(err == KErrNotFound)
+            {
+            DEBUG_PRINTF2(_L("CPlanner::CreatePlannedApplicationL failed to publish Uid %x as the property is not defined."),aRootNode.PackageL().Uid());
+            }
+		else
+		    {
+            DEBUG_PRINTF3(_L("CPlanner::CreatePlannedApplicationL failed to publish Uid %x with error."),aRootNode.PackageL().Uid(), err);
+            User::Leave(err);
+		    }
+		}
 	CleanupStack::Pop(rootApplication);
 	
 	return rootApplication;
--- a/installationservices/swi/source/swis/server/planner.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/planner.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -34,6 +34,7 @@
 #include "sisregistrywritableentry.h"
 #include "sisregistrywritablesession.h"
 #include "sisregistrypackage.h"
+#include "secutils.h"
 
 namespace Swi 
 {
@@ -101,6 +102,9 @@
 protected:
 	/// The drive on which to store device integrity data (hashes, registry etc) 
 	TChar iSystemDriveChar;		
+	/// To store package uids which are getting processed 
+	/////An array whose first element holds the number of uids in the subsequent indices of the array, followed by the the list of uids that are being published.
+	TUid iUidList[KMaxUidCount];
 	
 private:
 	/// Handle to UISS
--- a/installationservices/swi/source/swis/server/processor.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/processor.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -259,10 +259,22 @@
 	case EInstallFiles:
 		if (DoStateInstallFilesL())
 			{
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK			
+			SwitchState(EParseApplicationRegistrationFiles);
+#else
 			SwitchState(EUpdateRegistry);
+#endif			
 			}
 		break;
-
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	case EParseApplicationRegistrationFiles:
+	    if (DoParseApplicationRegistrationFilesL())
+	        {
+	        SwitchState(EUpdateRegistry);
+	        }
+	    break;
+#endif		
+	    
 	case EUpdateRegistry:
 		if (DoStateUpdateRegistryL())
 			{
@@ -777,13 +789,8 @@
 		// for transaction service RemoveL().
 		if (fileToRemove.Length() > 3)
 			{
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-			TRAP(err, TransactionSession().RemoveL(fileToRemove));
-#else
-			TRAP(err, IntegrityServices().RemoveL(fileToRemove));
-#endif
-			// Display error dialog and leave if the file cannot be removed,
-			// ignoring missing files, media cards not present or corrupt media
+			err = RemoveWithRetryAttemptL(fileToRemove);
+
 			if(err !=KErrNone && err != KErrNotFound && err != KErrPathNotFound	&& err != KErrNotReady && err != KErrCorrupt)
 				{
 				CDisplayError* displayCannotDelete=CDisplayError::NewLC(iPlan.AppInfoL(), EUiCannotDelete, fileToRemove);
@@ -828,12 +835,9 @@
 					TChar driveLetter;
 					User::LeaveIfError(iFs.DriveToChar(drive, driveLetter));
 					privatePath[0] =  static_cast<TText> (driveLetter);
-					// try to remove the private directory, ignore if it can't be found
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-					TRAP(err, TransactionSession().RemoveL(privatePath));
-#else
-					TRAP(err, IntegrityServices().RemoveL(privatePath));
-#endif
+
+					err = RemoveWithRetryAttemptL(privatePath);
+
 					if (err != KErrNone && err != KErrNotReady &&
 						err != KErrNotFound && err != KErrPathNotFound && err != KErrCorrupt)
 						{
@@ -882,3 +886,21 @@
 		}	
 	}
 
+TInt CProcessor::RemoveWithRetryAttemptL(TDesC& aFileToRemove)
+	{
+	TInt err = KErrNone;
+	TInt noOfDetletionAttempts=1;
+			
+	do {
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	    TRAP(err, TransactionSession().RemoveL(aFileToRemove));
+#else
+	    TRAP(err, IntegrityServices().RemoveL(aFileToRemove));
+#endif
+        DEBUG_PRINTF2(_L8("Deletion attempt %d"), noOfDetletionAttempts);
+        noOfDetletionAttempts++;
+        User::After(KRetryInterval);
+		} while ((err == KErrInUse ||err==KErrAccessDenied )&& noOfDetletionAttempts <= KMaxNoOfDeletionAttempts );
+	return err;
+	}
+
--- a/installationservices/swi/source/swis/server/processor.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/processor.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -43,6 +43,8 @@
 
 namespace Swi
 {
+const TInt KMaxNoOfDeletionAttempts=3;
+const TInt KRetryInterval=250000;
 #ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 class CIntegrityServices;
 #endif
@@ -75,6 +77,9 @@
 		EVerifyPaths,
 		ERemovePrivateDirectories,
 		EInstallFiles,
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+		EParseApplicationRegistrationFiles,
+#endif		
 		EDisplayFiles, 
 		ERunFiles,
 		EUpdateRegistry,
@@ -112,6 +117,9 @@
 	virtual TBool DoStateProcessFilesL();
 	virtual TBool DoStateInstallFilesL() = 0;
 	virtual TBool DoStateDisplayFilesL() = 0;
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	virtual TBool DoParseApplicationRegistrationFilesL() = 0;
+#endif	
 	virtual TBool DoStateUpdateRegistryL() = 0;
 	virtual TBool DoStateRemoveFilesL();
 	virtual TBool DoStateRemovePrivateDirectoriesL();
@@ -198,6 +206,7 @@
 
 private:
 	TBool IsSafeUninstallModeSetL();
+	TInt  RemoveWithRetryAttemptL(TDesC& aFileName);
 private:
 	/// Installation plan
 	const CPlan& iPlan;
--- a/installationservices/swi/source/swis/server/restoremachine.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/restoremachine.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -140,6 +140,25 @@
  		{
  		CheckVersionUpgradeL();
  		}
+		//Publish package Uid which is going to be restored.
+ 	err = SecUtils::PublishPackageUid(iPackageUid, iUidList);
+	if (err == KErrNone)
+    	{
+        DEBUG_PRINTF2(_L("CRestoreMachine::ConstructL published Uid is %x."),iPackageUid);
+    	}
+	else if (err == KErrOverflow)
+	    {
+        DEBUG_PRINTF2(_L("CRestoreMachine::ConstructL Failed to publish Uid %x as the array, holding the uids, exceeded its upper limit."),iPackageUid);
+	    }
+    else if (err == KErrNotFound)
+        {
+        DEBUG_PRINTF2(_L("CRestoreMachine::ConstructL Failed to publish Uid %x as the property is not defined."),iPackageUid);
+        }
+	else
+		{
+        DEBUG_PRINTF3(_L("CRestoreMachine::ConstructL Failed to publish Uid %x with error %d."),iPackageUid, err);
+        User::Leave(err);
+		}
 
  #ifdef SYMBIAN_USER_PROMPT_SERVICE
 	//connect to the SWI Observer
--- a/installationservices/swi/source/swis/server/restoremachine.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/restoremachine.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -29,6 +29,7 @@
 #include "installationprocessor.h"
 #include "swi/siscontroller.h"
 #include "sisregistrywritablesession.h"
+#include "secutils.h"
 
 namespace Swi 
 	{
@@ -170,6 +171,9 @@
 		TChar iSystemDriveChar;
 		RSwiObserverSession iObserver;			///< Swi Observer session handle.
 		HBufC8 *iBuf;
+		
+		//An array whose first element holds the number of uids in the subsequent indices of the array, followed by the the list of uids that are being published.
+		TUid iUidList[KMaxUidCount];  
 		};
 		
 			
--- a/installationservices/swi/source/swis/server/uninstallationprocessor.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/uninstallationprocessor.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -44,7 +44,8 @@
 #include "sislauncherclient.h"
 #include "sisinfo.h"
 #include "sisuid.h"
-
+#include "plan.h"
+#include "sisregistrypackage.h"
 
 using namespace Swi;
 
@@ -193,13 +194,111 @@
 	return ETrue;	// Nothing to do
 	}
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+TBool CUninstallationProcessor::DoParseApplicationRegistrationFilesL()
+    {
+    return ETrue;   // Nothing to do
+    }
+#endif
+
 TBool CUninstallationProcessor::DoStateUpdateRegistryL()
 	{
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	 
+    const CApplication& application = ApplicationL();
+    RArray<TAppUpdateInfo> affectedApps;    
+    CleanupClosePushL(affectedApps);	    
+    RArray<Usif::TComponentId> componentIds;
+    CleanupClosePushL(componentIds);
+    RArray<TUid> existingAppUids;
+    CleanupClosePushL(existingAppUids);
+    RArray<TUid> newAppUids;    
+    CleanupClosePushL(newAppUids);
+    
+    TAppUpdateInfo existingAppInfo, newAppInfo;     
+    TUid packageUid = application.PackageL().Uid();
+    
+    Plan().GetAffectedApps(affectedApps);
+    if(affectedApps.Count() == 0)
+        {
+        // Get all existing componentsIds for the package to to be uninstalled
+        TRAPD(err,iRegistryWrapper.RegistrySession().GetComponentIdsForUidL(packageUid, componentIds));            
+        TInt count = componentIds.Count();
+        if(0 == count)
+            {
+            DEBUG_PRINTF(_L("ComponentIDs not found for the base package"));
+            User::Leave(KErrNotFound);
+            }
+        
+        //Get the apps for CompIds and mark them as to be upgraded      
+        for(TInt i = 0 ; i < count; i++)
+            {
+            existingAppUids.Reset();                    
+            TRAP(err,iRegistryWrapper.RegistrySession().GetAppUidsForComponentL(componentIds[i], existingAppUids)); 
+          
+            for(TInt i = 0 ; i < existingAppUids.Count(); i++)
+                {
+                existingAppInfo = TAppUpdateInfo(existingAppUids[i], EAppUninstalled);
+                affectedApps.Append(existingAppInfo);                   
+                }
+            }
+        }
+    
 	// Now that we are ready to make changes to the registry so we start a transaction
-	// Note that the commit/rollback action is subsequently taken by the later steps of the state machine
+	// Note that the commit/rollback action is subsequently taken by the later steps of the state machine	
 	iRegistryWrapper.StartMutableOperationsL();
-	iRegistryWrapper.RegistrySession().DeleteEntryL(ApplicationL().PackageL(), TransactionSession().TransactionIdL());
+	iRegistryWrapper.RegistrySession().DeleteEntryL(ApplicationL().PackageL(), TransactionSession().TransactionIdL()); 
+    
+    componentIds.Reset();
+    TRAPD(err,iRegistryWrapper.RegistrySession().GetComponentIdsForUidL(packageUid, componentIds));            
+    TInt currentComponentCount = componentIds.Count();        
+    
+    //If there is no component assosiated with this app in the scr and there are affected apps then mark all of them as deleted. 
+    RArray<TAppUpdateInfo> apps;  
+    CleanupClosePushL(apps);
+    Plan().GetAffectedApps(apps);
+    TInt appCount = apps.Count();
+    CleanupStack::PopAndDestroy();
+    
+    if(currentComponentCount == 0 && appCount)
+        {            
+        for(TInt i = 0 ; i < appCount; i++)
+           {          
+           existingAppInfo = TAppUpdateInfo(affectedApps[0].iAppUid, EAppUninstalled);
+           affectedApps.Remove(0);
+           affectedApps.Append(existingAppInfo);    
+           }
+        }
+    else
+        {
+        // mark the apps in the sffected list as upgraded if they are still in scr
+        for(TInt i = 0 ; i < currentComponentCount; i++)
+           {
+           newAppUids.Reset();                    
+           TRAP(err,iRegistryWrapper.RegistrySession().GetAppUidsForComponentL(componentIds[i], newAppUids));          
+           for(TInt i = 0 ; i < newAppUids.Count(); i++)
+               {
+               existingAppInfo = TAppUpdateInfo(newAppUids[i], EAppUninstalled);
+               TInt index = 0;
+               index = affectedApps.Find(existingAppInfo);
+               if(KErrNotFound != index)
+                   {
+                   affectedApps.Remove(index);
+                   existingAppInfo = TAppUpdateInfo(newAppUids[i],EAppInstalled);
+                   affectedApps.Append(existingAppInfo);    
+                   }                           
+               }        
+           } 
+        }
+    
+    for(TInt i = 0; i < affectedApps.Count(); i++)
+        {
+        DEBUG_PRINTF2(_L("AppUid is 0x%x"), affectedApps[i].iAppUid);
+        DEBUG_PRINTF2(_L("Action is %d"), affectedApps[i].iAction);
+        }   
+    const_cast<CPlan&>(Plan()).ResetAffectedApps();
+    const_cast<CPlan&>(Plan()).SetAffectedApps(affectedApps);
+    
+    CleanupStack::PopAndDestroy(4, &affectedApps);    
 #else
 	RSisRegistryWritableSession session;
 	User::LeaveIfError(session.Connect());
@@ -220,3 +319,5 @@
 	return *iEmbeddedProcessor;
 	}
 
+
+
--- a/installationservices/swi/source/swis/server/uninstallationprocessor.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/uninstallationprocessor.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -140,6 +140,9 @@
 	virtual TBool DoStateVerifyPathsL();
 	virtual TBool DoStateInstallFilesL();
 	virtual TBool DoStateDisplayFilesL();
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	virtual TBool DoParseApplicationRegistrationFilesL();	
+#endif	
 	virtual TBool DoStateUpdateRegistryL();
 	virtual TBool DoStateProcessSkipFilesL();
 
--- a/installationservices/swi/source/swis/server/uninstallmachine.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/uninstallmachine.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -418,3 +418,34 @@
 	HandleInstallationEventL(iPlan, EEventCompletedUnInstall);
 	}
 	
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+void CUninstallMachine::PostJournalFinalizationL(TInt)
+    {    
+    if (!iPlan)
+        {
+        return;
+        }
+    
+    DEBUG_PRINTF(_L8("Uninstall Machine - PostJournalFinalization"));
+    RSisLauncherSession launcher;
+        
+    if (launcher.Connect() != KErrNone)
+        {
+        DEBUG_PRINTF(_L8("Uninstall Machine - Failed to connect to SisLauncher"));
+        return;
+        }
+    CleanupClosePushL(launcher);
+        
+    //Notify apparc for the the change in the Applications
+    RArray<TAppUpdateInfo> affectedApps;
+    CleanupClosePushL(affectedApps);
+    iPlan->GetAffectedApps(affectedApps);
+    if (affectedApps.Count() > 0)
+        {
+        launcher.NotifyNewAppsL(affectedApps);
+        }
+    affectedApps.Close();
+    CleanupStack::PopAndDestroy(2, &launcher);  //affectedApps
+    }
+#endif
+
--- a/installationservices/swi/source/swis/server/uninstallmachine.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/swis/server/uninstallmachine.h	Fri Apr 16 15:05:20 2010 +0300
@@ -154,6 +154,9 @@
 	virtual TState* ErrorOnStateEntryL(TInt aError);
 
 	virtual void SignalCompletedL();
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	virtual void PostJournalFinalizationL(TInt aError);
+#endif
 
 private:
 	// States
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/swiutils/swiutils.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* swiutils.cpp
+*/
+
+#include <e32def.h>
+#include <e32cmn.h>
+#include <e32property.h> 
+#include <sacls.h>
+#include "swiutils.h"
+#include "log.h"
+
+namespace Swi{
+
+EXPORT_C TInt GetAllUids(RArray<TUid>& aUidList)
+    {
+    aUidList.Close();
+    
+    TBuf<KMaxUidCount*sizeof(TUid)> buf;
+    TInt err = RProperty::Get(KUidSystemCategory, KSWIUidsCurrentlyBeingProcessed, buf);
+    if(err != KErrNone)
+        {
+        DEBUG_PRINTF2(_L("RProperty::Get returned with err %d."), err);
+        return err;
+        }
+    
+	TInt count = 0;
+    TInt *bufPtr = (TInt*) buf.Ptr();
+    count = *bufPtr++;
+
+    TUid uid;    
+    for(TInt i = 0; i < count; ++i)
+        {
+        uid.iUid = *bufPtr++;
+        aUidList.Append(uid);
+        }
+
+    return KErrNone;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/swiutils/swiutils.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* swiutils.h
+*/
+
+/**
+ @file 
+ @publishedAll
+ @released
+*/
+
+
+#ifndef __SWIUTILS_H__
+#define __SWIUTILS_H__
+
+#include <e32def.h> 
+#include <e32cmn.h> 
+
+namespace Swi
+    {
+    const TInt KMaxUidCount = 16; //One more than the maximum number of Uids that the array, publishing the Uids, holds
+    
+    /**
+     * Returns an array of package Uids published by the installer.
+     * @param aUidList Array which holds a list of Uids that is published.
+     * @return KErrNone in case of success otherwise one of the system-wide error codes.
+     */
+    IMPORT_C TInt GetAllUids(RArray<TUid>& aUidList);
+    } //end of namespace SWI
+
+#endif
--- a/installationservices/swi/source/uiss/client/nativecomponentinfo.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/uiss/client/nativecomponentinfo.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -56,6 +56,105 @@
 
 namespace Swi
 {
+
+CNativeComponentInfo::CNativeApplicationInfo::CNativeApplicationInfo()
+    {
+    }
+
+EXPORT_C CNativeComponentInfo::CNativeApplicationInfo::~CNativeApplicationInfo()
+    {
+    delete iName;
+    delete iGroupName;
+    delete iIconFileName;
+    }
+
+EXPORT_C CNativeComponentInfo::CNativeApplicationInfo* CNativeComponentInfo::CNativeApplicationInfo::NewLC(const TUid& aAppUid, const TDesC& aName, const TDesC& aGroupName, const TDesC& aIconFileName)
+    {
+        _LIT(emptyString,"");
+        // Leave if aName, aGroupName or aIconFileName exceeds KMaxDescriptorLength
+       if ((&aName != NULL && aName.Length() > KMaxDescriptorLength) || 
+               (&aGroupName != NULL && aGroupName.Length() > KMaxDescriptorLength) ||
+               (&aIconFileName != NULL && aIconFileName.Length() > KMaxDescriptorLength))
+            {
+            User::Leave(KErrOverflow);
+            }
+        
+    CNativeComponentInfo::CNativeApplicationInfo* self = new (ELeave) CNativeComponentInfo::CNativeApplicationInfo();
+        CleanupStack::PushL(self);
+
+        self->iAppUid = aAppUid;  
+        if(&aName == NULL)
+            {
+            self->iName = emptyString().AllocL();
+            }
+        else
+            {
+            self->iName = aName.AllocL();
+            }
+   
+        if(&aGroupName == NULL)
+            {
+            self->iGroupName = emptyString().AllocL();
+            }
+        else
+            {
+            self->iGroupName = aGroupName.AllocL();
+            }
+        
+        if(&aIconFileName == NULL)
+            {
+            self->iIconFileName = emptyString().AllocL();
+            }
+        else
+            {
+            self->iIconFileName = aIconFileName.AllocL();
+            }
+        
+        return self;
+    }
+
+EXPORT_C const TUid& CNativeComponentInfo::CNativeApplicationInfo::AppUid() const
+    {
+    return iAppUid;
+    }
+
+EXPORT_C const TDesC& CNativeComponentInfo::CNativeApplicationInfo::Name() const
+    {
+    return *iName;
+    }
+
+EXPORT_C const TDesC& CNativeComponentInfo::CNativeApplicationInfo::GroupName() const
+    {
+    return *iGroupName;
+    }
+
+EXPORT_C const TDesC& CNativeComponentInfo::CNativeApplicationInfo::IconFileName() const            
+    {
+    return *iIconFileName;
+    }
+
+CNativeComponentInfo::CNativeApplicationInfo* CNativeComponentInfo::CNativeApplicationInfo::NewL(RReadStream& aStream)
+    {    
+    CNativeComponentInfo::CNativeApplicationInfo* self = new (ELeave) CNativeComponentInfo::CNativeApplicationInfo();
+    CleanupStack::PushL(self);
+    
+    self->iAppUid = TUid::Uid(aStream.ReadInt32L());
+    self->iName = HBufC::NewL(aStream, KMaxDescriptorLength);
+    self->iGroupName = HBufC::NewL(aStream, KMaxDescriptorLength);
+    self->iIconFileName = HBufC::NewL(aStream, KMaxDescriptorLength);
+    
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+void CNativeComponentInfo::CNativeApplicationInfo::ExternalizeL(RWriteStream& aStream) const
+    {
+    aStream.WriteInt32L(iAppUid.iUid);    
+    aStream << *iName;
+    aStream << *iGroupName;
+    aStream << *iIconFileName;
+    }
+
 CNativeComponentInfo::CNativeComponentInfo() : iAuthenticity(Usif::ENotAuthenticated)
 	{
 	iUserGrantableCaps.SetEmpty();
@@ -66,8 +165,8 @@
 	delete iComponentName;
 	delete iGlobalComponentId;
 	delete iVersion;
-	delete iVendor;
-	
+	delete iVendor;		
+	iApplications.ResetAndDestroy();
 	iChildren.Close();
 	}
 
@@ -104,6 +203,14 @@
 	aStream.WriteInt32L(PackCapabilitySet(iUserGrantableCaps));
 	aStream.WriteInt32L(iMaxInstalledSize);
 	aStream.WriteInt32L(iHasExe);
+	aStream.WriteInt32L(iIsDriveSelectionRequired);
+	
+	const TInt numApplications = iApplications.Count();
+	aStream.WriteInt32L(numApplications);
+	for (TInt i=0; i<numApplications; ++i)
+	    {
+	    iApplications[i]->ExternalizeL(aStream);
+	    }
 	
 	// Recursively internalize all other childrens as well.
 	const TInt numChildren = iChildren.Count();
@@ -151,6 +258,16 @@
 	UnpackCapabilitySet(capsBitMask, iUserGrantableCaps);	
 	iMaxInstalledSize = aStream.ReadInt32L();
 	iHasExe = aStream.ReadInt32L();
+	iIsDriveSelectionRequired = aStream.ReadInt32L();
+	
+	const TInt numApplications = aStream.ReadInt32L();
+	for (TInt i=0; i<numApplications; ++i)
+	    {
+	    Swi::CNativeComponentInfo::CNativeApplicationInfo* app =  Swi::CNativeComponentInfo::CNativeApplicationInfo::NewL(aStream);
+	    CleanupStack::PushL(app);
+	    iApplications.AppendL(app);
+	    CleanupStack::Pop(app);
+	    }
 	
 	// Recursively internalize all other childrens as well.
 	const TInt numChildren = aStream.ReadInt32L();
--- a/installationservices/swi/source/upsswiobsplugin/source/10283725.rss	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/source/upsswiobsplugin/source/10283725.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -44,4 +44,4 @@
 				};
 			}
 		};
-	}
\ No newline at end of file
+	}
--- a/installationservices/swi/test/swicaptests/swicaptests.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/swicaptests/swicaptests.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -88,6 +88,9 @@
 LIBRARY			sisregistryclient.lib
 LIBRARY			plan.lib
 LIBRARY			swidataprovider.lib
-LIBRARY			siscontroller.lib
+LIBRARY			siscontroller.lib 
 LIBRARY			aprcaptestframeworkutil.lib
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+LIBRARY scrclient.lib
+#endif
 SMPSAFE
--- a/installationservices/swi/test/tautosigning/tautosigning.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tautosigning/tautosigning.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,13 @@
+[ResetKeyVAlue]
+uid=2002CFF6
+cenrepkey=5
+cenrepvalue=0
+
+[SetKeyVAlue]
+uid=2002CFF6
+cenrepkey=5
+cenrepvalue=1
+
 [1-1unsigneddata]
 sis=z:\tswi\tautosigning\data\1-1unsigneddata.sis
 script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
@@ -34,6 +44,12 @@
 uid=8000A005
 result=Sucess
 
+[embedselfsigneddata]
+sis=z:\tswi\tsis\data\embedselfsign.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+uid=8000AB05
+result=Sucess
+
 [2-3selfsignedexenocap]
 sis=z:\tswi\tautosigning\data\2-3selfsignedexenocap.sis
 script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
--- a/installationservices/swi/test/tautosigning/tautosigning.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tautosigning/tautosigning.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -16,6 +16,7 @@
 
 PRINT Run all SWIS tests
 LOAD_SUITE tuiscriptadaptors
+LOAD_SUITE tSisRegistryTest
 
 //! @file
 //! @SYMTestCaseID		API-SEC-TAUTOSIGNING-UNSIGNED-0001
@@ -217,4 +218,50 @@
 
 RUN_TEST_STEP 100 tuiscriptadaptors CheckedInstallStep z:\tswi\tautosigning\scripts\tautosigning.ini 3-6signeduserunauthorised
 
-END_TESTCASE API-SEC-TAUTOSIGNING-SIGNED-0006
\ No newline at end of file
+END_TESTCASE API-SEC-TAUTOSIGNING-SIGNED-0006
+
+//! @file
+//! @SYMTestCaseID		API-SEC-TAUTOSIGNING-SELFSIGNED-0007
+//! @SYMTestCaseDesc		Installs/Uninstalls a Self-Signed SIS file with AllowSelfSigned 
+//! 						Central Reposatory setting as True. Then change the Central Reposatory 
+//! 						setting as False and then Install Again.
+//! @SYMTestPriority		Low
+//! @SYMTestStatus		3. Released
+//! @SYMTestActions		Attempts an install followed by an uninstall. Change the Central Reposatory 
+//! 					setting. Attempts an install.
+//! @SYMTestExpectedResults	Sucessful Install, Sucessful Uninstall. Sucessful Change Setting. Unsucessful Install.
+//! @SYMPREQ			PREQ7308
+//! @SYMTestType		UT
+
+START_TESTCASE API-SEC-TAUTOSIGNING-SELFSIGNED-0007
+
+RUN_TEST_STEP 100 tuiscriptadaptors CheckedInstallStep z:\tswi\tautosigning\scripts\tautosigning.ini 2-2selfsigneddata
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tautosigning\scripts\tautosigning.ini 2-2selfsigneddata
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\tautosigning\scripts\tautosigning.ini ResetKeyVAlue
+RUN_TEST_STEP_RESULT 106 100 tuiscriptadaptors CheckedInstallStep z:\tswi\tautosigning\scripts\tautosigning.ini 2-2selfsigneddata
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\tautosigning\scripts\tautosigning.ini SetKeyVAlue
+
+END_TESTCASE API-SEC-TAUTOSIGNING-SELFSIGNED-0007
+
+//! @file
+//! @SYMTestCaseID		API-SEC-TAUTOSIGNING-SELFSIGNED-0008
+//! @SYMTestCaseDesc		Installs/Uninstalls a Embedded Self-Signed SIS file with AllowSelfSigned 
+//! 						Central Reposatory setting as True. Then change the Central Reposatory 
+//! 						setting as False and then Install Again.
+//! @SYMTestPriority		Low
+//! @SYMTestStatus		3. Released
+//! @SYMTestActions		Attempts an install followed by an uninstall. Change the Central Reposatory 
+//! 					setting. Attempts an install.
+//! @SYMTestExpectedResults	Sucessful Install, Sucessful Uninstall. Sucessful Change Setting. Unsucessful Install.
+//! @SYMPREQ			PREQ7308
+//! @SYMTestType		UT
+
+START_TESTCASE API-SEC-TAUTOSIGNING-SELFSIGNED-0008
+
+RUN_TEST_STEP 100 tuiscriptadaptors CheckedInstallStep z:\tswi\tautosigning\scripts\tautosigning.ini embedselfsigneddata
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tautosigning\scripts\tautosigning.ini embedselfsigneddata
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\tautosigning\scripts\tautosigning.ini ResetKeyVAlue
+RUN_TEST_STEP_RESULT 106 100 tuiscriptadaptors CheckedInstallStep z:\tswi\tautosigning\scripts\tautosigning.ini embedselfsigneddata
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\tautosigning\scripts\tautosigning.ini SetKeyVAlue
+
+END_TESTCASE API-SEC-TAUTOSIGNING-SELFSIGNED-0008
\ No newline at end of file
--- a/installationservices/swi/test/tbackuprestore/scripts/ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tbackuprestore/scripts/ini	Fri Apr 16 15:05:20 2010 +0300
@@ -1323,3 +1323,14 @@
 [ROM_SP_backup_restore]
 UID1 = 88000110
 SIS1 = z:\tswi\tsis\data\a_sp.sis
+
+[defineProperty]
+DefineProperty=true
+
+[API-INST-PAS-SWI-0001]
+PublishedUidCount=1
+PublishedUidValue0=88000105
+
+[API-INST-PAS-SWI-0001-A]
+PublishedUidCount=1
+PublishedUidValue0=88000106
--- a/installationservices/swi/test/tbackuprestore/scripts/ini_armv5	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tbackuprestore/scripts/ini_armv5	Fri Apr 16 15:05:20 2010 +0300
@@ -898,3 +898,17 @@
 FILE1.2 = C:\Documents\InstTest\testhugecontroller1.txt
 INSTALLDRIVE1 = C
 
+[defineProperty]
+DefineProperty=true
+
+[API-INST-PAS-SWI-0001]
+PublishedUidCount=1
+PublishedUidValue0=88000105
+
+[API-INST-PAS-SWI-0001-A]
+PublishedUidCount=1
+PublishedUidValue0=88000106
+
+[API-INST-PAS-SWI-0002]
+PublishedUidCount=1
+PublishedUidValue0=81113001
--- a/installationservices/swi/test/tbackuprestore/scripts/tbackuprestore.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tbackuprestore/scripts/tbackuprestore.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -73,9 +73,12 @@
 RUN_TEST_STEP	100	tbackuprestore	UNINSTALL	z:\tswi\tbackuprestore\scripts\ini		install_en_fr
 RUN_TEST_STEP	100	tbackuprestore	ABSENT		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_emb
 RUN_TEST_STEP	100	tSisRegistryTest ChangeLocale		z:\tswi\tbackuprestore\scripts\ini	langauge_to_german
-
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini defineProperty
 RUN_TEST_STEP	100	tbackuprestore	RESTORE		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_emb
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini API-INST-PAS-SWI-0001
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini defineProperty
 RUN_TEST_STEP	100	tbackuprestore	RESTORE		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_base
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini API-INST-PAS-SWI-0001-A
 RUN_TEST_STEP	100	tbackuprestore	PRESENT		z:\tswi\tbackuprestore\scripts\ini		install_en_fr
 
 RUN_TEST_STEP	100	tSisRegistryTest IsPackageInstalled 	z:\tswi\tbackuprestore\scripts\ini	package_info_german
@@ -172,8 +175,12 @@
 RUN_TEST_STEP	100	tbackuprestore	BACKUP		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_base
 RUN_TEST_STEP	100	tbackuprestore	PRESENT		z:\tswi\tbackuprestore\scripts\ini		install_en_fr
 
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini defineProperty
 RUN_TEST_STEP   100 	tbackuprestore RESTORE		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_emb
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini API-INST-PAS-SWI-0001
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini defineProperty
 RUN_TEST_STEP   100 	tbackuprestore RESTORE		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_base
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini API-INST-PAS-SWI-0001-A
 
 RUN_TEST_STEP	100	tbackuprestore	PRESENT		z:\tswi\tbackuprestore\scripts\ini		install_en_fr
 
--- a/installationservices/swi/test/tbackuprestore/scripts/tbackuprestore_armv5.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tbackuprestore/scripts/tbackuprestore_armv5.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -69,9 +69,12 @@
 RUN_TEST_STEP	100	tbackuprestore	UNINSTALL	z:\tswi\tbackuprestore\scripts\ini		install_en_fr
 RUN_TEST_STEP	100	tbackuprestore	ABSENT		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_emb
 RUN_TEST_STEP	100	tSisRegistryTest ChangeLocale		z:\tswi\tbackuprestore\scripts\ini	langauge_to_german
-
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini defineProperty
 RUN_TEST_STEP	100	tbackuprestore	RESTORE		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_emb
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini API-INST-PAS-SWI-0001
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini defineProperty
 RUN_TEST_STEP	100	tbackuprestore	RESTORE		z:\tswi\tbackuprestore\scripts\ini		install_en_fr_base
+RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini API-INST-PAS-SWI-0001-A
 RUN_TEST_STEP	100	tbackuprestore	PRESENT		z:\tswi\tbackuprestore\scripts\ini		install_en_fr
 
 RUN_TEST_STEP	100	tSisRegistryTest IsPackageInstalled 	z:\tswi\tbackuprestore\scripts\ini	package_info_german
@@ -167,8 +170,10 @@
  
  RUN_TEST_STEP	100	tbackuprestore	BACKUP		z:\tswi\tbackuprestore\scripts\ini		A
  RUN_TEST_STEP	100	tbackuprestore	PRESENT		z:\tswi\tbackuprestore\scripts\ini		A
- 
+
+ RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini defineProperty 
  RUN_TEST_STEP	100	tbackuprestore	RESTORE		z:\tswi\tbackuprestore\scripts\ini		A
+ RUN_TEST_STEP	100	tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tbackuprestore\scripts\ini API-INST-PAS-SWI-0002
  RUN_TEST_STEP	100	tbackuprestore	PRESENT		z:\tswi\tbackuprestore\scripts\ini		A
  
  RUN_TEST_STEP	100	tbackuprestore	UNINSTALL	z:\tswi\tbackuprestore\scripts\ini		A
--- a/installationservices/swi/test/testexes/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/testexes/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -22,6 +22,7 @@
 */
 
 #include "tpropagation/bld.inf"
+#include "tswiappregintegration/bld.inf"
 
 PRJ_TESTMMPFILES
 createprivatefile.mmp
@@ -142,6 +143,15 @@
 adornedfilenametestingdll_v10_1.mmp
 adornedfilenametestingdll_v10_2.mmp
 safemodetest.mmp
-
 non_stubbed_exe.mmp
 
+interpretsis_testcase/interpretsis_testcase_01.mmp
+interpretsis_testcase/interpretsis_testcase_02.mmp
+interpretsis_testcase/interpretsis_testcase_03.mmp
+interpretsis_testcase/interpretsis_testcase_04.mmp
+interpretsis_testcase_05/interpretsis_testcase_05.mmp
+interpretsis_testcase_06/interpretsis_testcase_06.mmp
+interpretsis_testcase_07/interpretsis_testcase_07.mmp
+interpretsis_testcase_08/interpretsis_testcase_08.mmp
+interpretsis_testcase_09/interpretsis_testcase_09.mmp
+interpretsis_testcase_10/interpretsis_testcase_10.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_example_iconfile1 "z:\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123121_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123122_caption_eng"
+rls_long Long_NumberOfIcon1 2
+rls_long Long_NumberOfIcon2 1
+rls_long Long_NumberOfIcon3 2
+rls_long Long_uid1 268123121
+rls_long Long_uid2 268123122
+rls_long Long_screenmode1 0x00
+rls_long Long_screenmode2 0x01
\ No newline at end of file
Binary file installationservices/swi/test/testexes/interpretsis_testcase/01/icon24.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo"
+//rls_string STRING_r_example_caption "Hallo_Welt"
+//rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_example_caption ""
+rls_string STRING_r_example_iconfile ""
+rls_string STRING_r_example_iconfile1 "z:\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger"
+rls_long Long_NumberOfIcon1 0
+rls_long Long_NumberOfIcon2 3
+rls_long Long_NumberOfIcon3 4
+rls_long Long_uid1 268123123
+rls_long Long_uid2 268123124
+rls_long Long_screenmode1 0x03
+rls_long Long_screenmode2 0x04
\ No newline at end of file
Binary file installationservices/swi/test/testexes/interpretsis_testcase/03/icon24.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/04/04-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for Spanish
+//
+
+rls_string STRING_r_example_short_caption "HW_Spain"
+//rls_string STRING_r_example_caption "hello_spain"
+//rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase04.mbm"
+rls_string STRING_r_example_caption ""
+rls_string STRING_r_example_iconfile ""
+rls_string STRING_r_example_iconfile1 "z:\\resource\\apps\\interpretsis_testcase04.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\resource\\apps\\interpretsis_testcase04.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123125_caption_spn"
+rls_string STRING_r_view_268123124_caption "view_268123126_caption_spn"
+rls_long Long_NumberOfIcon1 2
+rls_long Long_NumberOfIcon2 5
+rls_long Long_NumberOfIcon3 6
+rls_long Long_uid1 268123125
+rls_long Long_uid2 268123126
+rls_long Long_screenmode1 0x05
+rls_long Long_screenmode2 0x06
Binary file installationservices/swi/test/testexes/interpretsis_testcase/04/icon24.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/24/24-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for French International
+//
+
+rls_string STRING_r_example_short_caption "HW_FR"
+rls_string STRING_r_example_caption "hello_French"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase24.mbm"
+rls_string STRING_r_example_iconfile1 "z:\\resource\\apps\\interpretsis_testcase24.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\resource\\apps\\interpretsis_testcase24.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123127_caption_fr"
+rls_string STRING_r_view_268123124_caption "view_268123128_caption_fr"
+rls_long Long_NumberOfIcon1 2
+rls_long Long_NumberOfIcon2 7
+rls_long Long_NumberOfIcon3 8
+rls_long Long_uid1 268123127
+rls_long Long_uid2 268123128
+rls_long Long_screenmode1 0x07
+rls_long Long_screenmode2 0x08
Binary file installationservices/swi/test/testexes/interpretsis_testcase/24/icon24.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,117 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// HelloWorld 
+// The class definitions for the simple example application
+// containing a single view with the text "Hello World !" drawn
+// on it.
+// The class definitions are:
+// CExampleApplication 
+// CExampleAppUi
+// CExampleAppView
+// CExampleDocument
+//
+
+#ifndef __HELLOWORLD_H
+#define __HELLOWORLD_H
+
+#include <coeccntx.h>
+
+#include <eikenv.h>
+#include <eikappui.h>
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <eikmenup.h>
+
+#include <techview/eikon.hrh>
+
+#include <interpretsis_testcase_01.rsg>
+#include "interpretsis_testcase.hrh"
+
+
+
+//
+//
+// CExampleApplication
+//
+//
+
+class CExampleApplication : public CEikApplication
+	{
+private: 
+	           // Inherited from class CApaApplication
+	CApaDocument* CreateDocumentL();
+	TUid AppDllUid() const;
+	};
+
+//
+//
+// CExampleAppView
+//
+//
+class CExampleAppView : public CCoeControl
+    {
+public:
+	static CExampleAppView* NewL(const TRect& aRect);
+	CExampleAppView();
+	~CExampleAppView();
+    void ConstructL(const TRect& aRect);
+
+private:
+	           // Inherited from CCoeControl
+	void Draw(const TRect& /*aRect*/) const;
+
+private:
+	HBufC*  iExampleText;
+    };
+
+
+//
+//
+// CExampleAppUi
+//
+//
+class CExampleAppUi : public CEikAppUi
+    {
+public:
+    void ConstructL();
+	~CExampleAppUi();
+
+private:
+              // Inherirted from class CEikAppUi
+	void HandleCommandL(TInt aCommand);
+
+private:
+	CCoeControl* iAppView;
+	};
+
+
+//
+//
+// CExampleDocument
+//
+//
+class CExampleDocument : public CEikDocument
+	{
+public:
+	static CExampleDocument* NewL(CEikApplication& aApp);
+	CExampleDocument(CEikApplication& aApp);
+	void ConstructL();
+private: 
+	           // Inherited from CEikDocument
+	CEikAppUi* CreateAppUiL();
+	};
+
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase.hrh	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,23 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+enum TExampleMenuCommands
+	{
+	EExampleItem0 = 200,
+	EExampleItem1,
+	EExampleItem2
+	};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_01.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,78 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_01.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800005A
+VENDORID 	  0x70000001
+SOURCEPATH    .
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+
+START RESOURCE	interpretsis_testcase_01.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 01 03 04 24	// Build UK and German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_01_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+START RESOURCE	interpretsis_testcase_dup_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for UK language version
+START BITMAP	interpretsis_testcase01.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		01
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		03
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for Spanish language version
+START BITMAP	interpretsis_testcase04.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		04
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for French International language version
+START BITMAP	interpretsis_testcase24.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		24
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_01.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,81 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#elif defined LANGUAGE_04  // if language code is for Spanish
+ #include "04/04-strings.rls"
+#elif defined LANGUAGE_24  // if language code is for French International
+ #include "24/24-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = Long_NumberOfIcon1;
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+				uid = Long_uid1;
+				screen_mode = Long_screenmode1;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+						number_of_icons = Long_NumberOfIcon2;
+						icon_file = STRING_r_example_iconfile1;
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+				uid = Long_uid2;
+	            screen_mode = Long_screenmode2;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+						number_of_icons = Long_NumberOfIcon3;
+	                    icon_file = STRING_r_example_iconfile2;
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_01_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_01.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x00000ABC // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_01";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_02.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,53 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_02.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800005B
+VENDORID 	  0x70000001
+SOURCEPATH    .
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+
+START RESOURCE	interpretsis_testcase_02.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 03			// Build German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_02_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03_02.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		03
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_02.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,81 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#elif defined LANGUAGE_04  // if language code is for Spanish
+ #include "04/04-strings.rls"
+#elif defined LANGUAGE_24  // if language code is for French International
+ #include "24/24-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+		caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+				number_of_icons = Long_NumberOfIcon1;
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        }; 
+		//
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+				uid = Long_uid1;
+				screen_mode = Long_screenmode1;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+						number_of_icons = Long_NumberOfIcon2;
+						icon_file = STRING_r_example_iconfile1;
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+				uid = Long_uid2;
+	            screen_mode = Long_screenmode2;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+						number_of_icons = Long_NumberOfIcon3;
+	                    icon_file = STRING_r_example_iconfile2;
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_02_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_02.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x00000ABE // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_02";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_02";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_03.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,53 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_03.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800005C
+VENDORID 	  0x70000001
+SOURCEPATH    .
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+
+START RESOURCE	interpretsis_testcase_03.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 04			// Build Spanish language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_03_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for Spanish language version
+START BITMAP	interpretsis_testcase04_03.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		04
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_03.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#elif defined LANGUAGE_04  // if language code is for Spanish
+ #include "04/04-strings.rls"
+#elif defined LANGUAGE_24  // if language code is for French International
+ #include "24/24-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+    //
+		caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+				number_of_icons = Long_NumberOfIcon1;
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        }; 
+
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_03_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_03.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x00000ABF // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_03";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_03";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_04.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,53 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_04.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800005D
+VENDORID 	  0x70000001
+SOURCEPATH    .
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+
+START RESOURCE	interpretsis_testcase_04.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 24			// Build International French language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_04_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for French International language version
+START BITMAP	interpretsis_testcase24_04.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		24
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_04.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,50 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#elif defined LANGUAGE_04  // if language code is for Spanish
+ #include "04/04-strings.rls"
+#elif defined LANGUAGE_24  // if language code is for French International
+ #include "24/24-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+				number_of_icons = Long_NumberOfIcon1;
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_04_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_04.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x00000AC0 // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_04";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_04";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_application.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,41 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// HelloWorld_CExampleApplication.cpp
+// Source file for the implementation of the
+// application class - CExampleApplication
+//
+
+#include "interpretsis_testcase.h"
+
+const TUid KUidHelloWorld = { 0xE800005A };
+
+//             The function is called by the UI framework to ask for the
+//             application's UID. The returned value is defined by the
+//             constant KUidHelloWorlde and must match the second value
+//             defined in the project definition file.
+//
+TUid CExampleApplication::AppDllUid() const
+	{
+	return KUidHelloWorld;
+	}
+
+//             This function is called by the UI framework at
+//             application start-up. It creates an instance of the
+//             document class.
+//
+CApaDocument* CExampleApplication::CreateDocumentL()
+	{
+	return new (ELeave) CExampleDocument(*this);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_appui.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,80 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// HelloWorld_CExampleAppUi.cpp
+// Source file for the implementation of the 
+// application UI class - CExampleAppUi
+//
+
+#include "interpretsis_testcase.h"
+
+//             The second phase constructor of the application UI class.
+//             The application UI creates and owns the one and only view.
+// 
+void CExampleAppUi::ConstructL()
+    {
+	           // BaseConstructL() completes the UI framework's
+	           // construction of the App UI.
+    BaseConstructL();
+	           // Create the single application view in which to
+	           // draw the text "Hello World!", passing into it
+	           // the rectangle available to it.
+	iAppView = CExampleAppView::NewL(ClientRect());
+	}
+
+
+//             The app Ui owns the two views and is. 
+//             therefore, responsible for destroying them
+//
+CExampleAppUi::~CExampleAppUi()
+	{
+	delete iAppView;
+	}
+
+
+//             Called by the UI framework when a command has been issued.
+//             In this example, a command can originate through a 
+//             hot-key press or by selection of a menu item.
+//             The command Ids are defined in the .hrh file
+//             and are 'connected' to the hot-key and menu item in the
+//             resource file.
+//             Note that the EEikCmdExit is defined by the UI
+//             framework and is pulled in by including eikon.hrh
+//
+void CExampleAppUi::HandleCommandL(TInt aCommand)
+	{
+	switch (aCommand)
+		{
+		      // Just issue simple info messages to show that
+		      // the menu items have been selected
+	case EExampleItem0:
+		//iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM0);
+		break;
+
+	
+	case EExampleItem1:
+	//	iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM1);
+		break;
+	
+	case EExampleItem2:
+	//	iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM2);
+		break;
+               // Exit the application. The call is
+		       // implemented by the UI framework.
+
+	case EEikCmdExit: 
+		Exit();
+		break;
+		}
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_appview.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,105 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// HelloWorld_CExampleAppView.cpp
+// Source file for the implementation of the 
+// application view class - CExampleAppView
+//
+
+#include "interpretsis_testcase.h"
+
+//
+//             Constructor for the view.
+//
+CExampleAppView::CExampleAppView()
+	{
+	}
+
+
+//             Static NewL() function to start the standard two
+//             phase construction.
+//
+CExampleAppView* CExampleAppView::NewL(const TRect& aRect)
+	{
+	CExampleAppView* self = new(ELeave) CExampleAppView();
+	CleanupStack::PushL(self);
+	self->ConstructL(aRect);
+	CleanupStack::Pop();
+	return self;
+	}
+
+
+//
+//             Destructor for the view.
+//
+CExampleAppView::~CExampleAppView()
+	{
+	delete iExampleText;
+	}
+
+
+//             Second phase construction.
+//
+void CExampleAppView::ConstructL(const TRect& aRect)
+    {
+			   // Fetch the text from the resource file.
+	//iExampleText = iEikonEnv->AllocReadResourceL(R_EXAMPLE_TEXT_HELLO);
+	           // Control is a window owning control
+	CreateWindowL();
+	           // Extent of the control. This is
+	           // the whole rectangle available to application.
+	           // The rectangle is passed to us from the application UI.
+	SetRect(aRect);
+			   // At this stage, the control is ready to draw so
+	           // we tell the UI framework by activating it.
+	ActivateL();
+	}
+
+
+//             Drawing the view - in this example, 
+//             consists of drawing a simple outline rectangle
+//             and then drawing the text in the middle.
+//             We use the Normal font supplied by the UI.
+//
+//             In this example, we don't use the redraw
+//             region because it's easier to redraw to
+//             the whole client area.
+//
+void CExampleAppView::Draw(const TRect& /*aRect*/) const
+	{
+               // Window graphics context
+	CWindowGc& gc = SystemGc();
+	           // Area in which we shall draw
+	TRect      drawRect = Rect();
+			   // Font used for drawing text
+	const CFont*     fontUsed;
+	
+	           // Start with a clear screen
+	gc.Clear();
+			   // Draw an outline rectangle (the default pen
+	           // and brush styles ensure this) slightly
+	           // smaller than the drawing area.
+	drawRect.Shrink(10,10);		   	
+	gc.DrawRect(drawRect);
+               // Use the title font supplied by the UI
+	fontUsed = iEikonEnv->TitleFont();
+	gc.UseFont(fontUsed);
+			   // Draw the text in the middle of the rectangle.
+	TInt   baselineOffset=(drawRect.Height() - fontUsed->HeightInPixels())/2; 
+	gc.DrawText(*iExampleText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0);
+               // Finished using the font
+	gc.DiscardFont();
+	}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_document.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,39 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// HelloWorld_CExampleDocument.cpp
+// Source file for the implementation of the 
+// document class - CExampleDocument
+//
+
+#include "interpretsis_testcase.h"
+
+//             The constructor of the document class just passes the
+//             supplied reference to the constructor initialisation list.
+//             The document has no real work to do in this application.
+//
+CExampleDocument::CExampleDocument(CEikApplication& aApp)
+		: CEikDocument(aApp)
+	{
+	}
+
+
+//             This is called by the UI framework as soon as the 
+//             document has been created. It creates an instance
+//             of the ApplicationUI. The Application UI class is
+//             an instance of a CEikAppUi derived class.
+//
+CEikAppUi* CExampleDocument::CreateAppUiL()
+	{
+    return new(ELeave) CExampleAppUi;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_dup_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,96 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_01.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+//UID3 0xE800005A // application UID
+UID3 0x00000ABD // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_dup";
+	//localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_01";
+	//localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase/interpretsis_testcase_main.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,43 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// HelloWorld 
+// The example is a simple application containing a single view with
+// the text "Hello World !" drawn on it.
+// The example includes code for displaying a very simple menu.
+// This source file contains the single exported function required by 
+// all UI applications.
+//
+
+
+#include "interpretsis_testcase.h"
+
+//             The entry point for the application code. It creates
+//             an instance of the CApaApplication derived
+//             class, CExampleApplication.
+//
+
+
+
+#include <eikstart.h>
+LOCAL_C CApaApplication* NewApplication()
+	{
+	return new CExampleApplication;
+	}
+	
+GLDEF_C TInt E32Main()
+	{
+	return EikStart::RunApplication(NewApplication);
+	}
+	
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_05/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_eng"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_05/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo"
+rls_string STRING_r_example_caption "Hallo_Welt"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_05/interpretsis_testcase_05.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,61 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_05.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800006C
+VENDORID 	  0x70000002
+SOURCEPATH    ../interpretsis_testcase/
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+SOURCEPATH    .
+
+START RESOURCE	interpretsis_testcase_05.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 01 03	// Build UK and German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_05_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for UK language version
+START BITMAP	interpretsis_testcase01_05.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/01
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03_05.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/03
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_05/interpretsis_testcase_05.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,77 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "../interpretsis_testcase/interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = 2; // each icon must be a bitmap/mask pair
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+	            uid = 268123123;
+	            screen_mode = 0x00;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+	                    number_of_icons = 5; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+	            uid = 268123124;
+	            screen_mode = 0x01;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+	                    number_of_icons = 6; // each icon must be a bitmap/mask pair
+	                    icon_file = "\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_05/interpretsis_testcase_05_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_05.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x00000AC1 // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_05";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_06/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_eng"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_06/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo"
+rls_string STRING_r_example_caption "Hallo_Welt"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_06/interpretsis_testcase_06.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,60 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_06.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800006B
+VENDORID 	  0x70000002
+SOURCEPATH    ../interpretsis_testcase/
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+SOURCEPATH    .
+
+START RESOURCE	interpretsis_testcase_06.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 01 03	// Build UK and German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_06_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for UK language version
+START BITMAP	interpretsis_testcase01_06.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/01
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03_06.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/03
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_06/interpretsis_testcase_06.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,77 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "../interpretsis_testcase/interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = 2; // each icon must be a bitmap/mask pair
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+	            uid = 268123123;
+	            screen_mode = 0x00;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+	                    number_of_icons = 5; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+	            uid = 268123124;
+	            screen_mode = 0x01;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+	                    number_of_icons = 6; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_06/interpretsis_testcase_06_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,96 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_06.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+//UID3 0xE800005A // application UID
+UID3 0x00000ABC // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_06";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_06";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_07/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_eng"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_07/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo"
+rls_string STRING_r_example_caption "Hallo_Welt"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_07/interpretsis_testcase_07.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,60 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_07.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE8000060
+VENDORID 	  0x70000002
+SOURCEPATH    ../interpretsis_testcase/.
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+SOURCEPATH    .
+
+START RESOURCE	interpretsis_testcase_07.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 01 03	// Build UK and German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_07_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for UK language version
+START BITMAP	interpretsis_testcase01_07.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/01
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03_07.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/03
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_07/interpretsis_testcase_07.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,77 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "../interpretsis_testcase/interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = 2; // each icon must be a bitmap/mask pair
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+	            uid = 268123123;
+	            screen_mode = 0x00;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+	                    number_of_icons = 5; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+	            uid = 268123124;
+	            screen_mode = 0x01;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+	                    number_of_icons = 6; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_07/interpretsis_testcase_07_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_07.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x0000ABCD // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	//app_file = "interpretsis_testcase_07";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_07";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_08/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,23 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_eng"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_08/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo"
+rls_string STRING_r_example_caption "Hallo_Welt"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_08/interpretsis_testcase_08.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,60 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_08.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800007A
+VENDORID 	  0x70000001
+SOURCEPATH    ../interpretsis_testcase/.
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+SOURCEPATH    .
+
+START RESOURCE	interpretsis_testcase_08.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 01 03	// Build UK and German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_08_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for UK language version
+START BITMAP	interpretsis_testcase01_08.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/01
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03_08.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/03
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_08/interpretsis_testcase_08.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,79 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "../interpretsis_testcase/interpretsis_testcase.hrh"
+
+RESOURCE RSS_SIGNATURE { }
+
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = 2; // each icon must be a bitmap/mask pair
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+	            uid = 268123123;
+	            screen_mode = 0x00;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+	                    number_of_icons = 5; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+	            uid = 268123124;
+	            screen_mode = 0x01;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+	                    number_of_icons = 6; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_08/interpretsis_testcase_08_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,96 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_08.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+//UID3 0x00000AB0 // application UID
+UID3 0xE8000AB0
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_08";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_08";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_09/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,23 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase01_missing.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_eng"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_09/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo"
+rls_string STRING_r_example_caption "Hallo_Welt"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_09/interpretsis_testcase_09.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,60 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_09.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE8000077
+VENDORID 	  0x70000001
+SOURCEPATH    ../interpretsis_testcase/.
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+SOURCEPATH    .
+
+START RESOURCE	interpretsis_testcase_09.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 01 03	// Build UK and German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_09_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for UK language version
+START BITMAP	interpretsis_testcase01_09.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/01
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03_09.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/03
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_09/interpretsis_testcase_09.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,79 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "../interpretsis_testcase/interpretsis_testcase.hrh"
+
+RESOURCE RSS_SIGNATURE { }
+
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = 2; // each icon must be a bitmap/mask pair
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+	            uid = 268123123;
+	            screen_mode = 0x00;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+	                    number_of_icons = 5; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01_missing.mbm";
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+	            uid = 268123124;
+	            screen_mode = 0x01;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+	                    number_of_icons = 6; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_09/interpretsis_testcase_09_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_09.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0xE8000AB1
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_09";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_09";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_10/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_eng"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_10/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo_PU"
+rls_string STRING_r_example_caption "Hallo_Welt_PU"
+rls_string STRING_r_example_iconfile "\\resource\\apps\\interpretsis_testcase03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger_PU"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger_PU"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_10/interpretsis_testcase_10.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,60 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+
+TARGET        interpretsis_testcase_08.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xE800007A
+VENDORID 	  0x70000001
+SOURCEPATH    ../interpretsis_testcase/.
+SOURCE        interpretsis_testcase_Main.cpp
+SOURCE        interpretsis_testcase_Application.cpp
+SOURCE        interpretsis_testcase_Document.cpp
+SOURCE        interpretsis_testcase_AppUi.cpp
+SOURCE        interpretsis_testcase_AppView.cpp
+USERINCLUDE   .
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+SYSTEMINCLUDE /epoc32/include/platform/app/techview
+SYSTEMINCLUDE /epoc32/include/platform/app
+SOURCEPATH    .
+
+START RESOURCE	interpretsis_testcase_10.rss
+HEADER
+TARGETPATH		/resource/apps
+LANG 01 03	// Build UK and German language versions of resources
+END
+
+START RESOURCE	interpretsis_testcase_10_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+
+// Icons for UK language version
+START BITMAP	interpretsis_testcase01_08.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/01
+SOURCE			c8,1 icon24.BMP
+END
+
+// Icons for German language version
+START BITMAP	interpretsis_testcase03_08.mbm
+TARGETPATH		/resource/apps
+SOURCEPATH		../interpretsis_testcase/03
+SOURCE			c8,1 icon24.BMP
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib gdi.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_10/interpretsis_testcase_10.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,77 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME HEWO
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+#include "../interpretsis_testcase/interpretsis_testcase.hrh"
+RESOURCE RSS_SIGNATURE { }
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = 2; // each icon must be a bitmap/mask pair
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+	            uid = 268123123;
+	            screen_mode = 0x00;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+	                    number_of_icons = 5; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+	            uid = 268123124;
+	            screen_mode = 0x01;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+	                    number_of_icons = 6; // each icon must be a bitmap/mask pair
+	                    icon_file = "z:\\resource\\apps\\interpretsis_testcase01.mbm";
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "Tapash_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/interpretsis_testcase_10/interpretsis_testcase_10_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,96 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+#include <interpretsis_testcase_10.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+//UID3 0x00000AB0 // application UID
+UID3 0xE8000AB0
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "interpretsis_testcase_08";
+	localisable_resource_file = "\\resource\\apps\\interpretsis_testcase_10";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration01.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,48 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; SA package containing complete resource files for English, International French and German
+;
+
+;Languages
+&EN, IF, GE
+
+#{"swiappregintegration_EN","swiappregintegration_IF","swiappregintegration_GE"},(0x80010002),1,0,1,TYPE=SA
+
+;Localised Vendor name
+%{"Vendor_EN","Vendor_IF","Vendor_GE"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration.exe" - "!:\sys\bin\swiappregintegration.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration01_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration01_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration01_loc.rsc" -"!:\resource\apps\swiappregintegration01_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration01_rsc.mbm"
+
+if supported_language=01
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration01_loc.r01" -"!:\resource\apps\swiappregintegration01_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration01_01.mbm"
+endif
+
+if supported_language=24
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration01_loc.r24" -"!:\resource\apps\swiappregintegration01_loc.r24"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration01_24.mbm"
+endif
+
+if supported_language=03
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration01_loc.r03" -"!:\resource\apps\swiappregintegration01_loc.r03"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration01_03.mbm"
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration03_opaque.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,44 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; Application having no AppFile
+;
+
+;Languages
+&EN
+
+#{"swiappregintegration03_EN"},(0x80010006),1,2,4,TYPE=SA
+
+;Localised Vendor name
+%{"Vendor_EN"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration03.exe" - "!:\sys\bin\swiappregintegration03.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration03\swiappregintegration03_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration03_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration03\swiappregintegration03_loc.rsc" -"!:\resource\apps\swiappregintegration03_loc.rsc"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"C:\icon\swiappregintegration03_rsc.mbm"
+
+if supported_language=01  
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration03\swiappregintegration03_loc.r01" -"!:\resource\apps\swiappregintegration03_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\icon\swiappregintegration03_01.mbm"
+endif
+
+if supported_language=24
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration03\swiappregintegration03_loc.r24" -"!:\resource\apps\swiappregintegration03_loc.r24"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\icon\swiappregintegration03_24.mbm"
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration04_noappfile.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; Application having no AppFile
+;
+
+;Languages
+&EN
+
+#{"swiappregintegration_noappfile"},(0x80010010),1,2,4,TYPE=SA
+
+;Localised Vendor name
+%{"Vendor_EN"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration04.exe" - "!:\sys\bin\swiappregintegration04.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration04\swiappregintegration04_noappfile_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration04_noappfile_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration04\swiappregintegration04_loc.rsc" -"!:\resource\apps\swiappregintegration04_loc.rsc"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration04_noappuid.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; Application having no AppUid3
+;
+
+;Languages
+&EN
+
+#{"swiappregintegration_noappuid"},(0x80010011),1,2,5,TYPE=SA
+
+;Localised Vendor name
+%{"Vendor_EN"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration04.exe" - "!:\sys\bin\swiappregintegration04.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration04\swiappregintegration04_noappuid_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration04_noappuid_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration04\swiappregintegration04_loc.rsc" -"!:\resource\apps\swiappregintegration04_loc.rsc"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration04_wronguid2.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; Application having non AppReg Uid2
+;
+
+;Languages
+&EN
+
+#{"swiappregintegration_wronguid2"},(0x80010012),1,2,6,TYPE=SA
+
+;Localised Vendor name
+%{"Vendor_EN"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration04.exe" - "!:\sys\bin\swiappregintegration04.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration04\swiappregintegration04_wronguid2_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration04_wronguid2_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration04\swiappregintegration04_loc.rsc" -"!:\resource\apps\swiappregintegration04_loc.rsc"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration_base01.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,43 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; SA package containing complete resource files for English and French
+;
+
+;Languages
+&EN, FR
+
+#{"swiappregintegration_base01_EN","swiappregintegration_base01_FR"},(0x80010003),1,1,1,TYPE=SA
+
+;Localised Vendor name
+%{"Vendor_EN","Vendor_FR"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration_base01.exe" - "!:\sys\bin\swiappregintegration_base01.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration_base01_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.rsc" -"!:\resource\apps\swiappregintegration_base01_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_rsc.mbm"
+
+if supported_language=01
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r01" -"!:\resource\apps\swiappregintegration_base01_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_01.mbm"
+endif
+
+if supported_language=02
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r02" -"!:\resource\apps\swiappregintegration_base01_loc.r02"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_02.mbm"
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration_base01_pu.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,51 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; PU package containing complete resource files for English , French and German
+;
+
+;Languages
+&EN, FR , GE
+
+#{"swiappregintegration_base01_EN","swiappregintegration_base01_FR","swiappregintegration_base01_GE"},(0x80010003),1,1,1,TYPE=PU
+
+;Localised Vendor name
+%{"Vendor_EN","Vendor_FR","Vendor_GE"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration02.exe" - "!:\sys\bin\swiappregintegration02.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration02_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.rsc" -"!:\resource\apps\swiappregintegration02_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_rsc.mbm"
+
+if supported_language=01
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.r01" -"!:\resource\apps\swiappregintegration02_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_01.mbm"
+endif
+
+if supported_language=02
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r04" -"!:\resource\apps\swiappregintegration_base01_loc.r02"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_02.mbm"
+endif
+
+if supported_language=03
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r03" -"!:\resource\apps\swiappregintegration_base01_loc.r03"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_03.mbm"
+endif
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration_base01_sp.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,47 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; SP package containing complete resource files for English and German 
+;
+
+;Languages
+&EN, GE
+
+#{"swiappregintegration_base01_sp_EN","swiappregintegration_base01_sp_GE"},(0x80010003),1,1,1,TYPE=SP
+
+;Localised Vendor name
+%{"Vendor_EN","Vendor_GE"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration02.exe" - "!:\sys\bin\swiappregintegration02.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration02_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.rsc" -"!:\resource\apps\swiappregintegration02_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_rsc.mbm"
+
+
+if supported_language=01
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.r01" -"!:\resource\apps\swiappregintegration02_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_01.mbm"
+endif
+
+if supported_language=03
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r03" -"!:\resource\apps\swiappregintegration_base01_loc.r03"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_03.mbm"
+endif
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration_base02.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,60 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; SA package containing complete resource files for English, French and German
+;
+
+;Languages
+&EN, FR , GE
+
+#{"swiappregintegration_base01_EN","swiappregintegration_base01_FR","swiappregintegration_base01_GE"},(0x80010003),1,1,1,TYPE=SA
+
+;Localised Vendor name
+%{"Vendor_EN","Vendor_FR","Vendor_GE"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration_base01.exe" - "!:\sys\bin\swiappregintegration_base01.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration02.exe" - "!:\sys\bin\swiappregintegration02.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration_base01_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.rsc" -"!:\resource\apps\swiappregintegration_base01_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_rsc.mbm"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration02_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.rsc" -"!:\resource\apps\swiappregintegration02_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_rsc.mbm"
+
+
+if supported_language=01
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r01" -"!:\resource\apps\swiappregintegration_base01_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_01.mbm"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.r01" -"!:\resource\apps\swiappregintegration02_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_01.mbm"
+endif
+
+if supported_language=02
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r04" -"!:\resource\apps\swiappregintegration_base01_loc.r02"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_02.mbm"
+endif
+
+if supported_language=03
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r03" -"!:\resource\apps\swiappregintegration_base01_loc.r03"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_03.mbm"
+endif
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages/swiappregintegration_base02_ru.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,60 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+; SA RU package containing complete resource files for English, French and German
+;
+
+;Languages
+&EN, FR , GE
+
+#{"swiappregintegration_base02_ru_EN","swiappregintegration_base02_ru_FR","swiappregintegration_base02_ru_GE"},(0x80010003),3,2,1,TYPE=SA,RU
+
+;Localised Vendor name
+%{"Vendor_EN","Vendor_FR","Vendor_GE"}
+
+;Unique Vendor name
+:"Vendor"
+
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration_base01.exe" - "!:\sys\bin\swiappregintegration_base01.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\swiappregintegration02.exe" - "!:\sys\bin\swiappregintegration02.exe"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration_base01_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.rsc" -"!:\resource\apps\swiappregintegration_base01_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_rsc.mbm"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_reg.rsc" - "!:\private\10003a3f\import\apps\swiappregintegration02_reg.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.rsc" -"!:\resource\apps\swiappregintegration02_loc.rsc"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_rsc.mbm"
+
+
+if supported_language=01
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r01" -"!:\resource\apps\swiappregintegration_base01_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_01.mbm"
+
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration02\swiappregintegration02_loc.r01" -"!:\resource\apps\swiappregintegration02_loc.r01"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration02_01.mbm"
+endif
+
+if supported_language=02
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r04" -"!:\resource\apps\swiappregintegration_base01_loc.r02"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_02.mbm"
+endif
+
+if supported_language=03
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r03" -"!:\resource\apps\swiappregintegration_base01_loc.r03"
+"\epoc32\data\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm"  -"!:\resource\apps\swiappregintegration_base01_03.mbm"
+endif
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,76 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: 
+;
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"interpretsis_eng_testcase", "interpretsis_german_testcase"}, (0xE8000097), 1,0,0
+
+; Language-neutral files to be installed
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_01.exe"-"!:\sys\bin\interpretsis_testcase_01.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_02.exe"-"!:\sys\bin\interpretsis_testcase_02.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_03.exe"-"!:\sys\bin\interpretsis_testcase_03.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_04.exe"-"!:\sys\bin\interpretsis_testcase_04.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_01_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_01_reg.rsc"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_dup_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_dup_reg.rsc"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_02_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_02_reg.rsc"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_03_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_03_reg.rsc"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_04_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_04_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device. 
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_01.r01"		-"!:\resource\apps\interpretsis_testcase_01.r01"
+endif	
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_01.r03"		-"!:\resource\apps\interpretsis_testcase_01.r03"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_02.r03"		-"!:\resource\apps\interpretsis_testcase_02.r03"
+endif
+if supported_language=04
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_01.r04"		-"!:\resource\apps\interpretsis_testcase_01.r04"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_03.r04"		-"!:\resource\apps\interpretsis_testcase_03.r04"
+endif
+if supported_language=24
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_01.r24"		-"!:\resource\apps\interpretsis_testcase_01.r24"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_04.r24"		-"!:\resource\apps\interpretsis_testcase_04.r24"
+endif
+
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase01.mbm"		-"!:\resource\apps\interpretsis_testcase01.mbm"
+endif
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase03.mbm"		-"!:\resource\apps\interpretsis_testcase03.mbm"
+endif
+if supported_language=04
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase04.mbm"		-"!:\resource\apps\interpretsis_testcase04.mbm"
+endif
+if supported_language=24
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase24.mbm"		-"!:\resource\apps\interpretsis_testcase24.mbm"
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_05.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,56 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: 
+;
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"interpretsis_eng_testcase", "interpretsis_german_testcase"}, (0xE8000095), 1,0,0
+
+; Language-neutral files to be installed
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_05.exe"-"!:\sys\bin\interpretsis_testcase_05.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_05_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_05_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device. 
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_05.r01"		-"!:\resource\apps\interpretsis_testcase01_05.r01"
+endif	
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_05.r03"		-"!:\resource\apps\interpretsis_testcase03_05.r03"
+endif
+
+
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase01_05.mbm"		-"!:\resource\apps\interpretsis_testcase01_05.mbm"
+endif
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase03_05.mbm"		-"!:\resource\apps\interpretsis_testcase03_05.mbm"
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_06.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,56 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: 
+;
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"interpretsis_eng_testcase", "interpretsis_german_testcase"}, (0xE8000096), 1,0,0
+
+; Language-neutral files to be installed
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_06.exe"-"!:\sys\bin\interpretsis_testcase_06.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_06_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_06_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device. 
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_06.r01"		-"!:\resource\apps\interpretsis_testcase01_06.r01"
+endif	
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_06.r03"		-"!:\resource\apps\interpretsis_testcase03_06.r03"
+endif
+
+
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase01_06.mbm"		-"!:\resource\apps\interpretsis_testcase01_06.mbm"
+endif
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase03_06.mbm"		-"!:\resource\apps\interpretsis_testcase03_06.mbm"
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_07.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,56 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: 
+;
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"interpretsis_eng_testcase", "interpretsis_german_testcase"}, (0xE8000098), 1,0,0
+
+; Language-neutral files to be installed
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_07.exe"-"!:\sys\bin\interpretsis_testcase_07.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_07_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_07_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device. 
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_07.r01"		-"!:\resource\apps\interpretsis_testcase_07.r01"
+endif	
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_07.r03"		-"!:\resource\apps\interpretsis_testcase_07.r03"
+endif
+
+
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase01_07.mbm"		-"!:\resource\apps\interpretsis_testcase01_07.mbm"
+endif
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase03_07.mbm"		-"!:\resource\apps\interpretsis_testcase03_07.mbm"
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_08.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,56 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: 
+;
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"interpretsis_eng_testcase", "interpretsis_german_testcase"}, (0xE8000108), 1,0,0,TYPE=SA
+
+; Language-neutral files to be installed
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_08.exe"-"!:\sys\bin\interpretsis_testcase_08.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_08_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_08_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device. 
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_08.r01"		-"!:\resource\apps\interpretsis_testcase_08.r01"
+endif	
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_08.r03"		-"!:\resource\apps\interpretsis_testcase_08.r03"
+endif
+
+
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase01_08.mbm"		-"!:\resource\apps\interpretsis_testcase01_08.mbm"
+endif
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase03_08.mbm"		-"!:\resource\apps\interpretsis_testcase03_08.mbm"
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_09.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,56 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: 
+;
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"interpretsis_eng_testcase_09", "interpretsis_german_testcase_09"}, (0xE8000109), 1,0,0,TYPE=SA
+
+; Language-neutral files to be installed
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_09.exe"-"!:\sys\bin\interpretsis_testcase_09.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_09_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_09_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device. 
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_09.r01"		-"!:\resource\apps\interpretsis_testcase_09.r01"
+endif	
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_09.r03"		-"!:\resource\apps\interpretsis_testcase_09.r03"
+endif
+
+
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase01_09.mbm"		-"!:\resource\apps\interpretsis_testcase01_09.mbm"
+endif
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase03_09.mbm"		-"!:\resource\apps\interpretsis_testcase03_09.mbm"
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/packages_interpretsis_testcase/interpretsis_testcase_10.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,56 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: 
+;
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"interpretsis_eng_testcase", "interpretsis_german_testcase_PU"}, (0xE8000108), 1,0,0,TYPE=PU
+
+; Language-neutral files to be installed
+;"\epoc32\release\<PLATFORM>\<CONFIGURATION>\interpretsis_testcase_08.exe"-"!:\sys\bin\interpretsis_testcase_08.exe"
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\private\10003a3f\apps\interpretsis_testcase_10_reg.rsc" - "!:\private\10003a3f\import\apps\interpretsis_testcase_10_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device. 
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_10.r01"		-"!:\resource\apps\interpretsis_testcase_10.r01"
+endif	
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase_10.r03"		-"!:\resource\apps\interpretsis_testcase_10.r03"
+endif
+
+
+
+if supported_language=01 
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase01_08.mbm"		-"!:\resource\apps\interpretsis_testcase01_08.mbm"
+endif
+if supported_language=03
+"\epoc32\release\<PLATFORM>\<CONFIGURATION>\z\resource\apps\interpretsis_testcase03_08.mbm"		-"!:\resource\apps\interpretsis_testcase03_08.mbm"
+endif
+
--- a/installationservices/swi/test/testexes/prepareexes.pl	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/testexes/prepareexes.pl	Fri Apr 16 15:05:20 2010 +0300
@@ -150,7 +150,7 @@
 print "Processing files in directory: $builddir\n\n";
 MakeSISFiles($packagedir,"yes");
 MakeSISFiles($non_iby_packagedir,"no");
-MakeSISFiles($packages_interpretsis_testcase,"yes");
+MakeSISFiles($packages_interpretsis_testcase,"no");
 
 
 # Copy emulator version of preinstalled exes to location script expects.
@@ -877,6 +877,8 @@
 SignFile("tswtype_valid1_upgrade.sis", "tswtype_valid1_upgrade_root5.sis", "root5ca", \*iby);
 SignFile("tswtype_valid1_invalidupgrade.sis", "tswtype_valid1_invalidupgrade_root5.sis", "root5ca", \*iby);
 
+# SWI applicaiton registration integreation
+SignFile("swiappregintegration_base02_ru.sis", "swiappregintegration_base02_ru_root5.sis", "root5ca", \*iby);
 EndNormalFiles(\*iby);
 
 close iby;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/base01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for UK
+//
+
+rls_string Localized_Short_Caption "HW_Base01_EN"
+rls_string Localized_Caption "HelloWorld_Base01_EN"
+rls_long Localized_NumberOfIcon 123
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration_base01_01.mbm"
+
+rls_string Localized_GroupName "Group_Base01_EN"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/base01/02-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for FR
+//
+
+rls_string Localized_Short_Caption "HW_Base01_FR"
+rls_string Localized_Caption "HelloWorld_Base01_FR"
+rls_long Localized_NumberOfIcon 124
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration_base01_02.mbm"
+
+rls_string Localized_GroupName "Group_Base01_FR"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/base01/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for GE
+//
+
+rls_string Localized_Short_Caption "HW_Base01_GE"
+rls_string Localized_Caption "HelloWorld_Base01_GE"
+rls_long Localized_NumberOfIcon 125
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration_base01_03.mbm"
+
+rls_string Localized_GroupName "Group_Base01_GE"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/base01/04-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,22 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for FR 2
+//
+
+rls_string Localized_Short_Caption "HW_Base01_FR_2"
+rls_string Localized_Caption "HelloWorld_Base01_FR_2"
+rls_long Localized_NumberOfIcon 126
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration_base01_02.mbm"
+
+rls_string Localized_GroupName "Group_Base01_FR2"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/base01/rsc-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,23 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for RSC
+//
+
+rls_string Localized_Short_Caption "HW_Base01_RSC"
+rls_string Localized_Caption "HelloWorld_Base01_RSC"
+rls_long Localized_NumberOfIcon 127
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration_base01_rsc.mbm"
+
+rls_string Localized_GroupName "Group_Base01_RSC"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/base01/swiappregintegration_base01_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,54 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration01_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+
+RESOURCE RSS_SIGNATURE { }
+
+#ifdef LANGUAGE_01
+ #include "01-strings.rls"
+#elif defined LANGUAGE_02
+ #include "02-strings.rls"
+#elif defined LANGUAGE_03
+ #include "03-strings.rls"
+#elif defined LANGUAGE_04
+ #include "04-strings.rls"
+#else
+ #include "rsc-strings.rls"
+#endif      
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+	short_caption = Localized_Short_Caption;
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO
+			{
+			caption = Localized_Caption;
+			number_of_icons = Localized_NumberOfIcon;
+			icon_file = Localized_Iconfile;
+			}
+		};
+
+	group_name = Localized_GroupName;		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/base01/swiappregintegration_base01_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,40 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration01_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <swiappregintegration01_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x90000004
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "swiappregintegration_base01";
+	localisable_resource_file = "C:\\resource\\apps\\swiappregintegration_base01_loc";
+	localisable_resource_id = R_LAI;	
+	
+    	hidden = KAppNotHidden;
+    	embeddability = KAppNotEmbeddable;
+    	newfile = KAppDoesNotSupportNewFile;
+    	launch = KAppLaunchInForeground;
+    	group_name = "Group_Base01";    
+    	default_screen_number = 2;
+	}
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Component description file
+*
+*/
+
+PRJ_TESTMMPFILES
+tswiappregintegration01.mmp
+tswiappregintegration02.mmp
+tswiappregintegration_base01.mmp
+tswiappregintegration03.mmp
+tswiappregintegration04.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for UK
+//
+
+rls_string Localized_Short_Caption "HW_EN"
+rls_string Localized_Caption "HelloWorld_EN"
+rls_long Localized_NumberOfIcon 11
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration01_01.mbm"
+
+rls_long View_Uid1 1234
+rls_long View_Screenmode1 01
+rls_string View_Caption1 "View_01_EN"
+rls_long View_NumberOfIcon1 12
+rls_string View_Iconfile1 "z:\\resource\\apps\\swiappregintegration01_01.mbm"
+
+rls_long View_Uid2 1235
+rls_long View_Screenmode2 02
+rls_string View_Caption2 "View_02_EN"
+rls_long View_NumberOfIcon2 13
+rls_string View_Iconfile2 "z:\\resource\\apps\\swiappregintegration01_01.mbm"
+
+rls_string Localized_GroupName "Group_EN"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case01/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for GE
+//
+
+rls_string Localized_Short_Caption "HW_GE"
+rls_string Localized_Caption "HelloWorld_GE"
+rls_long Localized_NumberOfIcon 14
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration01_03.mbm"
+
+rls_long View_Uid1 1236
+rls_long View_Screenmode1 03
+rls_string View_Caption1 "View_01_GE"
+rls_long View_NumberOfIcon1 15
+rls_string View_Iconfile1 "z:\\resource\\apps\\swiappregintegration01_03.mbm"
+
+rls_long View_Uid2 1237
+rls_long View_Screenmode2 04
+rls_string View_Caption2 "View_02_GE"
+rls_long View_NumberOfIcon2 16
+rls_string View_Iconfile2 "z:\\resource\\apps\\swiappregintegration01_03.mbm"
+
+rls_string Localized_GroupName "Group_GE"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case01/24-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for IF
+//
+
+rls_string Localized_Short_Caption "HW_IF"
+rls_string Localized_Caption "HelloWorld_IF"
+rls_long Localized_NumberOfIcon 17
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration01_24.mbm"
+
+rls_long View_Uid1 1238
+rls_long View_Screenmode1 05
+rls_string View_Caption1 "View_01_IF"
+rls_long View_NumberOfIcon1 18
+rls_string View_Iconfile1 "z:\\resource\\apps\\swiappregintegration01_24.mbm"
+
+rls_long View_Uid2 1239
+rls_long View_Screenmode2 06
+rls_string View_Caption2 "View_02_IF"
+rls_long View_NumberOfIcon2 19
+rls_string View_Iconfile2 "z:\\resource\\apps\\swiappregintegration01_24.mbm"
+
+rls_string Localized_GroupName "Group_IF"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case01/rsc-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,35 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for RSC
+//
+
+rls_string Localized_Short_Caption "HW_RSC"
+rls_string Localized_Caption "HelloWorld_RSC"
+rls_long Localized_NumberOfIcon 20
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration01_rsc.mbm"
+
+rls_long View_Uid1 1240
+rls_long View_Screenmode1 07
+rls_string View_Caption1 "View_01_RSC"
+rls_long View_NumberOfIcon1 21
+rls_string View_Iconfile1 "z:\\resource\\apps\\swiappregintegration01_rsc.mbm"
+
+rls_long View_Uid2 1241
+rls_long View_Screenmode2 08
+rls_string View_Caption2 "View_02_RSC"
+rls_long View_NumberOfIcon2 22
+rls_string View_Iconfile2 "z:\\resource\\apps\\swiappregintegration01_rsc.mbm"
+
+rls_string Localized_GroupName "Group_RSC"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case01/swiappregintegration01_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,84 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration01_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+
+RESOURCE RSS_SIGNATURE { }
+
+#ifdef LANGUAGE_01
+ #include "01-strings.rls"
+#elif defined LANGUAGE_03
+ #include "03-strings.rls"
+#elif defined LANGUAGE_24
+ #include "24-strings.rls"
+#else
+ #include "rsc-strings.rls"
+#endif      
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+	short_caption = Localized_Short_Caption;
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO
+			{
+			caption = Localized_Caption;
+			number_of_icons = Localized_NumberOfIcon;
+			icon_file = Localized_Iconfile;
+			}
+		};                          
+
+	view_list =
+		{
+		VIEW_DATA
+			{
+			uid = View_Uid1;
+			screen_mode = View_Screenmode1;	
+			caption_and_icon =
+				{
+				CAPTION_AND_ICON_INFO
+					{
+					caption = View_Caption1;
+					number_of_icons = View_NumberOfIcon1;
+					icon_file = View_Iconfile1;
+					}
+				};				
+			},
+		VIEW_DATA
+			{
+			uid = View_Uid2;
+			screen_mode = View_Screenmode2;	
+			caption_and_icon =
+				{
+				CAPTION_AND_ICON_INFO
+					{
+					caption = View_Caption2;
+					number_of_icons = View_NumberOfIcon2;
+					icon_file = View_Iconfile2;
+					}
+				};						
+			}
+		};
+	
+	group_name = Localized_GroupName;		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case01/swiappregintegration01_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,98 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration01_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <swiappregintegration01_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x90000003
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "swiappregintegration";
+	localisable_resource_file = "C:\\resource\\apps\\swiappregintegration01_loc";
+	localisable_resource_id = R_LAI;	
+	
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";    
+    default_screen_number = 2;
+    
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppName.txt"; }
+        };
+	   
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 0x01020304;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 0x02030405;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_app_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_app_specific_data
+	{
+	name = "Non-localised_resource";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case02/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,20 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for UK - App2
+//
+
+rls_string Localized_Short_Caption "HW_App2_EN"
+rls_string Localized_Caption "HelloWorld_App2_EN"
+rls_long Localized_NumberOfIcon 19
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration02_01.mbm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case02/rsc-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,20 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for RSC - App2
+//
+
+rls_string Localized_Short_Caption "HW_App2_RSC"
+rls_string Localized_Caption "HelloWorld_App2_RSC"
+rls_long Localized_NumberOfIcon 29
+rls_string Localized_Iconfile "z:\\resource\\apps\\swiappregintegration02_rsc.mbm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case02/swiappregintegration02_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration01_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+
+RESOURCE RSS_SIGNATURE { }
+
+#ifdef LANGUAGE_01
+ #include "01-strings.rls"
+#else
+ #include "rsc-strings.rls"
+#endif      
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+	short_caption = Localized_Short_Caption;
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO
+			{
+			caption = Localized_Caption;
+			number_of_icons = Localized_NumberOfIcon;
+			icon_file = Localized_Iconfile;
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case02/swiappregintegration02_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,47 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration02_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <swiappregintegration01_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x90000005
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "swiappregintegration02";
+	localisable_resource_file = "C:\\resource\\apps\\swiappregintegration02_loc";
+	localisable_resource_id = R_LAI;	
+	
+    	hidden = KAppNotHidden;
+	embeddability = KAppNotEmbeddable;
+	newfile = KAppDoesNotSupportNewFile;
+        launch = KAppLaunchInForeground;
+        group_name = "AppGroup02";    
+        default_screen_number = 2;
+    
+        datatype_list = 
+            {
+            DATATYPE { priority=EDataTypePriorityNormal; type="doc/txt"; },
+            DATATYPE { priority=EDataTypePriorityNormal; type="doc/pdf"; }
+            };
+	
+	}
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case03/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,20 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for UK
+//
+
+rls_string Localized_Short_Caption "C03_EN"
+rls_string Localized_Caption "Case03_EN"
+rls_long Localized_NumberOfIcon 111
+rls_string Localized_Iconfile "C:\\Icon\\swiappregintegration03_01.mbm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case03/24-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,20 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Strings localised for IF
+//
+
+rls_string Localized_Short_Caption "C03_IF"
+rls_string Localized_Caption "Case03_IF"
+rls_long Localized_NumberOfIcon 112
+rls_string Localized_Iconfile "C:\\Icon\\swiappregintegration03_24.mbm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case03/rsc-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,21 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for RSC
+//
+
+rls_string Localized_Short_Caption "C03_RSC"
+rls_string Localized_Caption "Case03_RSC"
+rls_long Localized_NumberOfIcon 113
+rls_string Localized_Iconfile "C:\\Icon\\swiappregintegration03_rsc.mbm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case03/swiappregintegration03_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,96 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration03_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+NAME SER1
+
+#include <uikon.rh>
+#include <appinfo.rh>
+ 
+#ifdef LANGUAGE_01
+ #include "01-strings.rls"
+#elif defined LANGUAGE_24
+ #include "24-strings.rls"
+#else
+ #include "rsc-strings.rls"
+#endif
+ 
+RESOURCE RSS_SIGNATURE				{ }
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+	short_caption = Localized_Short_Caption;
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO
+			{
+			caption = Localized_Caption;
+			number_of_icons = Localized_NumberOfIcon;
+			icon_file = Localized_Iconfile;
+			}
+		}; 
+	}
+
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+#ifdef LANGUAGE_01
+RESOURCE SERVICE_NAME r_service_1_specific_data_loc
+	{
+	name = "EN Localised text for service UID 0x01020305";
+	}
+RESOURCE SERVICE_NAME r_service_2_specific_data_loc
+	{
+	name = "EN Localised text for service UID 0x10208DCA";
+	}
+RESOURCE SERVICE_NAME r_app_data_loc
+	{
+	name = "EN Localised text App";
+	}
+#elif defined LANGUAGE_24
+RESOURCE SERVICE_NAME r_service_1_specific_data_loc
+	{
+	name = "IF Localised text for service UID 0x01020305";
+	}
+RESOURCE SERVICE_NAME r_service_2_specific_data_loc
+	{
+	name = "IF Localised text for service UID 0x10208DCA";
+	}
+RESOURCE SERVICE_NAME r_app_data_loc
+	{
+	name = "IF Localised text App";
+	}
+#else
+RESOURCE SERVICE_NAME r_service_1_specific_data_loc
+	{
+	name = "RSC Localised text for service UID 0x01020305";
+	}
+RESOURCE SERVICE_NAME r_service_2_specific_data_loc
+	{
+	name = "RSC Localised text for service UID 0x10208DCA";
+	}
+RESOURCE SERVICE_NAME r_app_data_loc
+	{
+	name = "RSC Localised text App";
+	}
+#endif 
+	
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case03/swiappregintegration03_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,65 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration03_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <swiappregintegration03_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x90000006
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file="swiappregintegration03";
+	localisable_resource_file="\\resource\\apps\\swiappregintegration03_loc";
+	localisable_resource_id=R_LAI;
+	
+	datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+	
+	service_list = 
+		{
+		SERVICE_INFO
+            {
+            uid = 0x01020305;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = R_SERVICE_1_SPECIFIC_DATA_LOC;
+            },
+		SERVICE_INFO
+            {
+            uid = 0x10208DCA;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="doc/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="doc/gif2"; }
+                };   
+            opaque_data = R_SERVICE_2_SPECIFIC_DATA_LOC;
+            }
+		};
+		
+	opaque_data = R_APP_DATA_LOC;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration04_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+	short_caption = "Some Caption";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_noappfile_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,32 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration04_noappfile_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <swiappregintegration04_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x90000010
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	localisable_resource_file = "C:\\resource\\apps\\swiappregintegration04_loc";
+	localisable_resource_id = R_LAI;	    
+	}
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_noappuid_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,32 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration04_noappfile_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <swiappregintegration04_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "swiappregintegration04";
+	localisable_resource_file = "C:\\resource\\apps\\swiappregintegration04_loc";
+	localisable_resource_id = R_LAI;	    
+	}
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/case04/swiappregintegration04_wronguid2_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file swiappregintegration04_noappfile_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <swiappregintegration04_loc.rsg>
+
+UID2 1 // Some Uid2. Not an application reg file
+UID3 0x90000010
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "swiappregintegration04";
+	localisable_resource_file = "C:\\resource\\apps\\swiappregintegration04_loc";
+	localisable_resource_id = R_LAI;	    
+	}
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/fotaupdateapp1_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file fotaupdtateapp1_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+
+UID2 KUidAppRegistrationResourceFile
+
+UID3 0xA000F56C	// App UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{	
+	app_file = "fota";
+	group_name = "Games";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/fotaupdateapp2_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file fotaupdateapp2_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+
+UID2 KUidAppRegistrationResourceFile
+
+UID3 0xA000F56C	// App UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{	
+	app_file = "fota";
+	group_name = "Apps";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/fotaupdatestubapp1_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file T_groupname_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+
+UID2 KUidAppRegistrationResourceFile
+
+UID3 0x2002E5E7	// App UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{	
+	app_file = "T_groupname";
+	group_name = "Group1";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/fotaupdatestubapp2_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file T_groupname_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+
+UID2 KUidAppRegistrationResourceFile
+
+UID3 0x2002E5E7	// App UID
+
+RESOURCE APP_REGISTRATION_INFO
+	{	
+	app_file = "T_groupname";
+	group_name = "Group2";
+	}
Binary file installationservices/swi/test/testexes/tswiappregintegration/icon3m.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/swiappregintegration.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* swiappregintegration.cpp
+*
+*/
+
+
+#include <e32base.h>
+#include "swiappregintegration.h"
+
+GLDEF_C TInt E32Main() // main function called by E32
+	{
+	return 1;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/swiappregintegration.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* swiappregintegration.h
+*
+*/
+
+
+#ifndef SWIAPPREGINTEGRATION_H
+#define SWIAPPREGINTEGRATION_H
+
+
+#endif // SWIAPPREGINTEGRATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration01.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+* swiappregintegration01.mmp for swi application reg integration testing
+*
+*/
+
+TARGET			swiappregintegration.exe
+TARGETTYPE		exe
+
+UID			0x10000007 0x90000003
+VENDORID		0x0
+
+SOURCEPATH		.
+SOURCE			swiappregintegration.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+START RESOURCE	case01/swiappregintegration01_loc.rss
+HEADER
+TARGETPATH		tswi/tuiscriptadaptors/data/swiappregintegration01
+LANG  SC 01 03 24	
+END
+
+// Application exe registration resource file
+START RESOURCE 	case01/swiappregintegration01_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data/swiappregintegration01
+END
+
+
+// Icons for UK language version
+START BITMAP	swiappregintegration.mbm
+TARGETPATH		tswi/tuiscriptadaptors/data/swiappregintegration01
+SOURCEPATH		.
+SOURCE			c8,1 icon3m.bmp
+END
+
+START RESOURCE 	fotaupdateapp1_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data
+END
+
+START RESOURCE 	fotaupdateapp2_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data
+END
+
+START RESOURCE 	fotaupdatestubapp1_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data
+END
+
+START RESOURCE 	fotaupdatestubapp2_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data
+END
+
+LIBRARY			euser.lib
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration02.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+* swiappregintegration02.mmp for swi application reg integration testing
+*
+*/
+
+TARGET			swiappregintegration02.exe
+TARGETTYPE		exe
+
+UID			0x10000007 0x90000005
+VENDORID		0x0
+
+SOURCEPATH		.
+SOURCE			swiappregintegration.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+START RESOURCE	case02/swiappregintegration02_loc.rss
+HEADER
+TARGETPATH		tswi/tuiscriptadaptors/data/swiappregintegration02
+LANG  SC 01
+END
+
+// Application exe registration resource file
+START RESOURCE 	case02/swiappregintegration02_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data/swiappregintegration02
+END
+
+LIBRARY			euser.lib
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration03.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+* swiappregintegration03.mmp for swi application reg integration testing
+*
+*/
+
+TARGET			swiappregintegration03.exe
+TARGETTYPE		exe
+
+UID			0x10000007 0x90000006
+VENDORID		0x0
+
+SOURCEPATH		.
+SOURCE			swiappregintegration.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+start resource	case03/swiappregintegration03_loc.RSS
+HEADER
+targetpath	tswi/tuiscriptadaptors/data/swiappregintegration03
+lang		sc 01 24
+end
+
+start resource	case03/swiappregintegration03_reg.RSS
+targetpath	tswi/tuiscriptadaptors/data/swiappregintegration03
+end
+
+LIBRARY		euser.lib
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration04.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+* swiappregintegration04.mmp for swi application reg integration testing
+*
+*/
+
+TARGET			swiappregintegration04.exe
+TARGETTYPE		exe
+
+UID				0x10000007 0x90000010
+VENDORID		0x0
+
+SOURCEPATH		.
+SOURCE			swiappregintegration.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+START RESOURCE	case04/swiappregintegration04_loc.rss
+HEADER
+TARGETPATH		tswi/tuiscriptadaptors/data/swiappregintegration04
+LANG  SC
+END
+
+START RESOURCE 	case04/swiappregintegration04_noappfile_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data/swiappregintegration04
+END
+
+START RESOURCE 	case04/swiappregintegration04_noappuid_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data/swiappregintegration04
+END
+
+START RESOURCE 	case04/swiappregintegration04_wronguid2_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data/swiappregintegration04
+END
+
+LIBRARY			euser.lib
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/testexes/tswiappregintegration/tswiappregintegration_base01.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+* tswiappregintegration_base01.mmp for swi application reg integration testing
+*
+*/
+
+TARGET			swiappregintegration_base01.exe
+TARGETTYPE		exe
+
+UID			0x10000007 0x90000004
+VENDORID		0x0
+
+SOURCEPATH		.
+SOURCE			swiappregintegration.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+START RESOURCE	base01/swiappregintegration_base01_loc.rss
+HEADER
+TARGETPATH		tswi/tuiscriptadaptors/data/swiappregintegration_base01
+LANG  SC 01 02 03 04	
+END
+
+// Application exe registration resource file
+START RESOURCE 	base01/swiappregintegration_base01_reg.rss
+TARGETPATH	tswi/tuiscriptadaptors/data/swiappregintegration_base01
+END
+
+
+
+LIBRARY			euser.lib
+SMPSAFE
--- a/installationservices/swi/test/trevocation/makeAllInteg.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/trevocation/makeAllInteg.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
 @rem under the terms of the License "Eclipse Public License v1.0"
@@ -32,6 +32,17 @@
 makesis ocsp_03.pkg
 makesis ocsp_04.pkg
 makesis ocsp_05.pkg
+makesis signingtest.pkg  certifiedsignedval.sis
+makesis signingtest.pkg  certifiedsignedVeriSignval.sis
+makesis signingtest.pkg  expresssignedval.sis
+makesis signingtest.pkg  allsignedval.sis
+makesis signingtest.pkg  selfsignedval.sis
+makesis signingtest.pkg  certifiedsignedrev.sis
+makesis signingtest.pkg  certifiedsignedVeriSignrev.sis
+makesis signingtest.pkg  expresssignedrev.sis
+makesis signingtest.pkg  allsignedrev.sis
+makesis signingtest.pkg  selfsignedrev.sis
+
 
 REM Embedded Package file
 makesis ocsprevocation-sub1.pkg
@@ -54,6 +65,16 @@
 makesis ocsp_02.pkg
 makesis ocsp_03.pkg
 makesis ocsp_04.pkg
+makesis signingtest.pkg  certifiedsignedval.sis
+makesis signingtest.pkg  certifiedsignedVeriSignval.sis
+makesis signingtest.pkg  expresssignedval.sis
+makesis signingtest.pkg  allsignedval.sis
+makesis signingtest.pkg  selfsignedval.sis
+makesis signingtest.pkg  certifiedsignedrev.sis
+makesis signingtest.pkg  certifiedsignedVeriSignrev.sis
+makesis signingtest.pkg  expresssignedrev.sis
+makesis signingtest.pkg  allsignedrev.sis
+makesis signingtest.pkg  selfsignedrev.sis
 
 REM Embedded Package file
 makesis ocsprevocation-sub1.pkg
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/trevocation/pkgInteg/armv5/signingtest.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,27 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; A simple package that installs one executable with no other checks
+
+;Languages
+&EN
+
+;Header
+#{"test signing package "}, (0x88001114), 1, 2, 3,TYPE=SA
+
+%{"Signing Package"}
+:"Unique Vendor Name"
+
+"ocsp_03.pkg"-"!:\test765\signedFileInstalled.txt";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/trevocation/pkgInteg/winscw/signingtest.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,27 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; A simple package that installs one executable with no other checks
+
+;Languages
+&EN
+
+;Header
+#{"test signing package "}, (0x88001114), 1, 2, 3,TYPE=SA
+
+%{"Signing Package"}
+:"Unique Vendor Name"
+
+"ocsp_03.pkg"-"!:\test765\signedFileInstalled.txt";
--- a/installationservices/swi/test/trevocation/scripts/tRevocation.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/trevocation/scripts/tRevocation.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -569,4 +569,198 @@
 script=z:\tswi\trevocation\scripts\uninstall.xml
 numnonexist=2
 nonexist0=c:\Documents\def092126\backlight.txt
-nonexist1=c:\Documents\def092126\col.txt
\ No newline at end of file
+nonexist1=c:\Documents\def092126\col.txt
+
+[CenRepEnableExpSign]
+uid=2002CFF6
+cenrepkey=1
+cenrepvalue=1
+
+[CenRepDisableExpSign]
+uid=2002CFF6
+cenrepkey=1
+cenrepvalue=0
+
+[CenRepEnableSelfSign]
+uid=2002CFF6
+cenrepkey=2
+cenrepvalue=1
+
+[CenRepDisableSelfSign]
+uid=2002CFF6
+cenrepkey=2
+cenrepvalue=0
+
+[CenRepEnableCertifiedSign]
+uid=2002CFF6
+cenrepkey=3
+cenrepvalue=1
+
+[CenRepDisableCertifiedSign]
+uid=2002CFF6
+cenrepkey=3
+cenrepvalue=0
+
+[CenRepEnableCertifiedVeriExpSign]
+uid=2002CFF6
+cenrepkey=4
+cenrepvalue=1
+
+[CenRepDisableCertifiedVeriSign]
+uid=2002CFF6
+cenrepkey=4
+cenrepvalue=0
+
+[API-SEC-SWI-REVOCATION-I-0047]
+sis=z:\tswi\trevocation\data\certifiedsignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspNotPerformed
+isTrusted = false
+
+[API-SEC-SWI-REVOCATION-I-0048]
+sis=z:\tswi\trevocation\data\certifiedsignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspGood
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0049]
+sis=z:\tswi\trevocation\data\certifiedsignedVeriSignrev.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspTransient
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0047-U]
+uid=88001114
+script=z:\tswi\trevocation\scripts\uninstall.xml
+
+[API-SEC-SWI-REVOCATION-I-0050]
+sis=z:\tswi\trevocation\data\expresssignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspNotPerformed
+isTrusted = false
+
+[API-SEC-SWI-REVOCATION-I-0051]
+sis=z:\tswi\trevocation\data\expresssignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspGood
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0052]
+sis=z:\tswi\trevocation\data\expresssignedrev.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspTransient
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0053]
+sis=z:\tswi\trevocation\data\selfsignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidated
+revocationStatus = EOcspNotPerformed
+isTrusted = false
+
+[API-SEC-SWI-REVOCATION-I-0054]
+sis=z:\tswi\trevocation\data\selfsignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidated
+revocationStatus = EOcspUnknown
+isTrusted = false
+
+[API-SEC-SWI-REVOCATION-I-0055]
+sis=z:\tswi\trevocation\data\selfsignedrev.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspTransient
+isTrusted = false
+
+[API-SEC-SWI-REVOCATION-I-0056]
+sis=z:\tswi\trevocation\data\certifiedsignedVeriSignval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspNotPerformed
+isTrusted = false
+
+[API-SEC-SWI-REVOCATION-I-0057]
+sis=z:\tswi\trevocation\data\certifiedsignedVeriSignval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspGood
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0058]
+sis=z:\tswi\trevocation\data\certifiedsignedVeriSignrev.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspTransient
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0059]
+sis=z:\tswi\trevocation\data\allsignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspGood
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0060]
+sis=z:\tswi\trevocation\data\allsignedval.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspGood
+isTrusted = true
+
+[API-SEC-SWI-REVOCATION-I-0061]
+sis=z:\tswi\trevocation\data\allsignedrev.sis
+script=z:\tswi\trevocation\scripts\simple_ocsp.xml
+ocsp_flag=1
+ocsp_uri=http://cam-ocsptest01.intra:19024/
+UID1 = 88001114
+validationStatus = EValidatedToAnchor
+revocationStatus = EOcspTransient
+isTrusted = true
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/trevocation/scripts/trevocationocsp_emulator.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,268 @@
+//
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Revocation tests...
+
+LOAD_SUITE tRevocation
+LOAD_SUITE tuiscriptadaptors
+LOAD_SUITE tSisRegistryTest
+
+/! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0047
+//! @SYMTestCaseDesc		Tries to install the sis with Ceritfied Sign check disabled.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid certified sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should not be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0047
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableCertifiedSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0047
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0047
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0048
+//! @SYMTestCaseDesc		Tries to install the sis with Ceritfied Sign check Enabled and with Valid Ceritfied Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid certified sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0048
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0048
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0048
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0048
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0049
+//! @SYMTestCaseDesc		Tries to install the sis with Ceritfied Sign check Enabled and with Revoked Ceritfied Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with revoked certified sign cert. 
+//! @SYMTestExpectedResults	Install should abort with error and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0049
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedSign
+RUN_TEST_STEP_RESULT -3 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0049
+RUN_TEST_STEP_RESULT -1 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0049
+
+/! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0050
+//! @SYMTestCaseDesc		Tries to install the sis with Expressed Sign check disabled.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid Expressed sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should not be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0050
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableExpSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0050
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0050
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0050
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0051
+//! @SYMTestCaseDesc		Tries to install the sis with Expressed Sign check Enabled and with Valid Expressed Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid Expressed sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0051
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableExpSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0051
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0051
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0051
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0052
+//! @SYMTestCaseDesc		Tries to install the sis with Expressed Sign check Enabled and with Revoked Expressed Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with revoked Expressed sign cert. 
+//! @SYMTestExpectedResults	Install should abort with error and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0052
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableExpSign
+RUN_TEST_STEP_RESULT -3 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0052
+RUN_TEST_STEP_RESULT -1 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0052
+
+/! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0053
+//! @SYMTestCaseDesc		Tries to install the sis with Self Sign check disabled.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid Self sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should not be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0053
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableSelfSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0053
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0053
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0053
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0054
+//! @SYMTestCaseDesc		Tries to install the sis with Self Sign check Enabled and with Valid Self Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid Self sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0054
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableSelfSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0054
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0054
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0054
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0055
+//! @SYMTestCaseDesc		Tries to install the sis with Self Sign check Enabled and with Revoked Self Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with revoked Self sign cert. 
+//! @SYMTestExpectedResults	Install should abort with error and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0055
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableSelfSign
+RUN_TEST_STEP_RESULT -3 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0055
+RUN_TEST_STEP_RESULT -1 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0055
+
+/! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0056
+//! @SYMTestCaseDesc		Tries to install the sis with VeriSign Sign check disabled.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid VeriSign sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should not be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0056
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableCertifiedVeriSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0056
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0056
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0056
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0057
+//! @SYMTestCaseDesc		Tries to install the sis with VeriSign Sign check Enabled and with Valid VeriSign Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid VeriSign sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0057
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedVeriExpSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0057
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0057
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0057
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0058
+//! @SYMTestCaseDesc		Tries to install the sis with VeriSign Sign check Enabled and with Revoked VeriSign Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with revoked VeriSign sign cert. 
+//! @SYMTestExpectedResults	Install should abort with error and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0058
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedVeriExpSign
+RUN_TEST_STEP_RESULT -3 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0058
+RUN_TEST_STEP_RESULT -1 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0058
+
+/! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0059
+//! @SYMTestCaseDesc		Tries to install the sis with VeriSign Sign check disabled.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid VeriSign sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error and ocsp check should not be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0059
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableExpSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableSelfSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableCertifiedSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepDisableCertifiedVeriSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0059
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0059
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0059
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0060
+//! @SYMTestCaseDesc		Tries to install the sis with VeriSign Sign check Enabled and with Valid VeriSign Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with valid VeriSign sign cert. 
+//! @SYMTestExpectedResults	Install should complete without any error/panic and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0060
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableExpSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableSelfSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedVeriExpSign
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0060
+RUN_TEST_STEP_RESULT 0 100 	tRevocation SISREGCHECK	z:\tswi\tRevocation\scripts\trevocation.ini  API-SEC-SWI-REVOCATION-I-0060
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0060
+
+
+//! @SYMTestCaseID		API-SEC-SWI-REVOCATION-I-0061
+//! @SYMTestCaseDesc		Tries to install the sis with VeriSign Sign check Enabled and with Revoked VeriSign Sign Certificate.
+//! @SYMDEF  			None
+//! @SYMTestPriority		High
+//! @SYMTestActions 		Tries to install the sis signed with revoked VeriSign sign cert. 
+//! @SYMTestExpectedResults	Install should abort with error and ocsp check should be performed.
+//! @SYMDevelopedForRelease 	SymTB10.1
+
+START_TESTCASE API-SEC-SWI-REVOCATION-I-0061
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableExpSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableSelfSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedSign
+RUN_TEST_STEP 100 tSisRegistryTest SetCenRepSetting z:\tswi\trevocation\scripts\trevocation.ini CenRepEnableCertifiedVeriExpSign
+RUN_TEST_STEP_RESULT -3 100 tuiscriptadaptors InstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0061
+RUN_TEST_STEP_RESULT -1 100 tuiscriptadaptors UninstallStep z:\tswi\trevocation\scripts\trevocation.ini API-SEC-SWI-REVOCATION-I-0047-U
+END_TESTCASE API-SEC-SWI-REVOCATION-I-0061
+
+// Ensure that SWIS shuts down after the above tests to make sure heap checks run
+RUN_TEST_STEP 5 tuiscriptadaptors SwisNotRunning
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/trevocation/scripts/trevocationocsp_emulator_post.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,18 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+REM Copy the files required to run the script
+copy \epoc32\release\winscw\udeb\z\tswi\trevocation\data\swicertstore.dat	\epoc32\release\winscw\udeb\z\resource\swicertstore.dat
+copy \epoc32\release\winscw\udeb\z\tswi\trevocation\data\swicertstore.dat	\epoc32\release\winscw\urel\z\resource\swicertstore.dat
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/trevocation/scripts/trevocationocsp_emulator_pre.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+REM Copy the files required to run the script
+copy \epoc32\release\winscw\udeb\z\resource\swicertstore.dat 		\epoc32\release\winscw\udeb\z\tswi\trevocation\data\swicertstore.dat
+copy \epoc32\winscw\c\tswi\trevocation\swicertstore.dat		\epoc32\release\winscw\udeb\z\resource\swicertstore.dat
+copy \epoc32\winscw\c\tswi\trevocation\swicertstore.dat		\epoc32\release\winscw\urel\z\resource\swicertstore.dat
--- a/installationservices/swi/test/trevocation/signFiles.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/trevocation/signFiles.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
 @rem under the terms of the License "Eclipse Public License v1.0"
@@ -29,6 +29,17 @@
 REM Sign with certificate A 
 signsis sisInteg\%PLATFORM%\ocsprevocation.sis      sisInteg\%PLATFORM%\ocsprevocation.tmp %CERT_PATH%\ocsp\responder1\certTrev2.cert.pem %CERT_PATH%\ocsp\responder1\certTrev2.key.pem
 
+REM Sign with Express / Certified and VeriSign certs  
+signsis sisInteg\%PLATFORM%\certifiedsignedval.sis			sisInteg\%PLATFORM%\certifiedsignedval.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsCertifiedSignValidCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsCertifiedSignValidPvtKey.key
+signsis sisInteg\%PLATFORM%\certifiedsignedVeriSignval.sis 		sisInteg\%PLATFORM%\certifiedsignedVeriSignval.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsCertifiedVeriSignValidCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsCertifiedVeriSignValidPvtKey.key
+signsis sisInteg\%PLATFORM%\expresssignedval.sis			sisInteg\%PLATFORM%\expresssignedval.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsExpressValidCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsExpressValidPvtKey.key
+signsis sisInteg\%PLATFORM%\allsignedval.sis				sisInteg\%PLATFORM%\allsignedval.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsAllSignValidCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsAllSignValidPvtKey.key
+signsis sisInteg\%PLATFORM%\selfsignedval.sis				sisInteg\%PLATFORM%\selfsignedval.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsSelfSignValidCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\AppInsSelfSignValidPvtKey.key
+signsis sisInteg\%PLATFORM%\certifiedsignedrev.sis			sisInteg\%PLATFORM%\certifiedsignedrev.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsCertifiedRevokedCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsCertifiedRevokedPvtKey.key
+signsis sisInteg\%PLATFORM%\certifiedsignedVeriSignrev.sis 		sisInteg\%PLATFORM%\certifiedsignedVeriSignrev.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsCertifiedVeriSignRevokedCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsCertifiedVeriSignRevokedPvtKey.key
+signsis sisInteg\%PLATFORM%\expresssignedrev.sis			sisInteg\%PLATFORM%\expresssignedrev.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsExpressRevokedCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsExpressRevokedPvtKey.key
+signsis sisInteg\%PLATFORM%\allsignedrev.sis				sisInteg\%PLATFORM%\allsignedrev.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsAllSignRevokedCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsAllSignRevokedPvtKey.key
+signsis sisInteg\%PLATFORM%\selfsignedrev.sis				sisInteg\%PLATFORM%\selfsignedrev.tmp %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsSelfSignRevokedCert.pem %CERT_PATH%\ocsp\expressandcertifiedsignedCert\Revoked\AppInsSelfSignRevokedPvtKey.key
 
 REM overwrite the original sis files
 cd sisInteg\%PLATFORM%
@@ -37,6 +48,16 @@
 move ocsp_03.tmp ocsp_03.sis
 move ocsp_04.tmp ocsp_04.sis
 move ocsprevocation.tmp		 ocsprevocation.sis
+move certifiedsignedval.tmp	 certifiedsignedval.sis
+move certifiedsignedVeriSignval.tmp certifiedsignedVeriSignval.sis
+move expresssignedval.tmp		 expresssignedval.sis
+move allsignedval.tmp		 allsignedval.sis
+move selfsignedval.tmp		 selfsignedval.sis
+move certifiedsignedrev.tmp	 certifiedsignedrev.sis
+move certifiedsignedVeriSignrev.tmp certifiedsignedVeriSignrev.sis
+move expresssignedrev.tmp		 expresssignedrev.sis
+move allsignedrev.tmp		 allsignedrev.sis
+move selfsignedrev.tmp		 selfsignedrev.sis
 
 REM Return to current directory
 cd ..\..
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/allsignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/allsignedval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedverisignrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/certifiedsignedverisignval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/expresssignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/expresssignedval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/selfsignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/armv5/selfsignedval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/allsignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/allsignedval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedverisignrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/certifiedsignedverisignval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/expresssignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/expresssignedval.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/selfsignedrev.sis has changed
Binary file installationservices/swi/test/trevocation/sisInteg/winscw/selfsignedval.sis has changed
Binary file installationservices/swi/test/trevocation/swicertstore.dat has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/dependentonsample.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; This test file tests dependencies. It is the base package which is upgraded in the tests.
+
+;Languages
+&EN
+
+;Header
+#{"dependentonsample"}, (0x88001110), 1, 2, 3,TYPE=SA
+
+%{"Vendor"}
+:"Unique Vendor Name"
+
+(0x80000001), 4, 5, 6, {"Simple"}
+
+"files\option1.txt"-"!:\Documents\InstTest\dependentonsample.txt";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/embedselfsign.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; A SISX file, with 1 embedded self signed SISX files
+
+;Languages
+&EN
+
+;Header
+#{"embedselfsign"}, (0x8000AB05), 1, 2, 3
+
+%{"Vendor"}
+:"Unique Vendor Name"
+
+;Embedded component
+@"files\2-2selfsigneddata.SIS",(0x8000A005)
+
+;Ordinary file to selected drive
+"text\backlight.txt"-"!:\Documents\def053177\backlight.txt"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/embedspsainsp.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+&EN
+
+; This SIS file simply SA upgrades its twin in testexes that embeds a ROM upgrade.
+; This SIS file has no embedded packages.
+
+#{"embed ROM exe eclipse SP to embed SA"}, (0x802730A5), 2, 2, 5, TYPE=SP
+%{"Crypto Services"}
+:"Crypto Services"
+
+@"embedspsa.sis", (0x802730A5)
+
+"embedspsa.pkg"-"c:\embed\sourcesa.pkg"
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/filebapu.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,23 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+
+&EN
+
+#{"File Base Package"}, (0xA0000A93), 1, 3, 5, TYPE=PU
+:"Crypto Services"
+%{"Crypto Services"}
+
+; Delivers no files. Just a test base package.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/files/2-2selfsigneddata.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,26 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+
+&EN
+
+#{"2.2 Self Signed, Installing data to public areas of the device"},(0x8000A005),1,2,3
+
+%{"Symbian Software Ltd."}
+
+:"Symbian Software Ltd."
+
+"files\option1.txt"-"c:\tswi\tautomaticsigning\install\2-2data.txt"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/filesp4.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+&EN
+
+; This SIS file simply SA upgrades its twin in testexes that embeds a ROM upgrade.
+; This SIS file has no embedded packages.
+
+#{"embed ROM exe eclipse SP to embed SA"}, (0x88001112), 2, 2, 5, TYPE=SA
+%{"Crypto Services dummy"}
+:"Crypto Services dummy"
+
+@"filebapu.sis", (0xA0000A93)
+@"filesp2.sis", (0xA0000A93)
+
+
+
+
+
--- a/installationservices/swi/test/tsisfile/data/makeall.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisfile/data/makeall.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
 @rem under the terms of the License "Eclipse Public License v1.0"
@@ -24,6 +24,8 @@
 if not exist \epoc32\winscw\c\system\install 		 mkdir \epoc32\winscw\c\system\install
 if not exist \epoc32\winscw\c\PlatformTest	 	 mkdir \epoc32\winscw\c\PlatformTest
 
+call /epoc32/tools/createsis create -pass 1234 files\2-2selfsigneddata.pkg
+
 ECHO Running makesis on all package files and copying them to their destination
 perl -S makeandsign.pl
 
--- a/installationservices/swi/test/tsisfile/data/signedsis/Howto generate certificate chains.txt	Fri Mar 19 09:33:35 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-This file replaces the old generate_certs.bat, which provided incorrect information.
-
-To generate certificate chains using the existing roots, you must issue some subset of the following commands:
-
-For DSA Key pairs, first generate a set of DSA key parameters:
-# openssl dsaparam -out dsaparam.pem 512
-
-Next, generate a certificate request: (this assumes you are using one of the existing config files)
-
-For DSA Certificates:
-# openssl req -newkey dsa:dsaparams.pem -nodes -out dsa.req -keyout dsa.key -config dsa.config -days 3650
-
-For RSA Certificates:
-# openssl req -newkey rsa:512 -nodes -out rsa.req -keyout rsa.key -config rsa.config -days 3650
-
-Finally, generate a signed certificate from the request:
-
-# openssl x509 -req -in <request file> -out cert.cer -CA <signing certificate> -CAKey <signing key> -CASerial cert.srl -CAcreateserial -days 3650 -extfile <config file> -extensions v3_ca
-
-For intermediate certificates for use in SWIS, the extensions must be present as defined in this config section:
-
-[v3_ca]
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid:always,issuer:always
-basicConstraints=critical,CA:TRUE, pathlen:5
-keyUsage=critical,keyCertSign
-
-If these extensions are not present, and installation signed with the resulting certificate as anything other than the end entity will fail.
\ No newline at end of file
--- a/installationservices/swi/test/tsisfile/data/signedsis/SymbianTestRootCADiffSerial/How to  create root certficate.txt	Fri Mar 19 09:33:35 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-# To create a RSA root cerificate need to following two steps:
-
-1. Create a private key for the CA:
-
-openssl req -nodes -newkey rsa:1024 -keyout <key file> -out <CA req file> -config <config file>
-The config file is input parameter, and should be present in advance.
-
-Example: openssl req -nodes -newkey rsa:1024 -keyout cakey.pem -out careq.pem -config rsa.config
-
-2. Create the CA certificate:
-
-openssl x509 -req -in <CA req> -extfile <config file> -extensions v3_ca -signkey <key file> -out <CA cert file>  -days 3650
-
-Example: openssl x509 -req -in careq.pem -extfile rsa.config -extensions v3_ca -signkey cakey.pem -out cacert.pem  -days 3650
-
--- a/installationservices/swi/test/tsisfile/data/signedsis/sucert/How to  create root certficate.txt	Fri Mar 19 09:33:35 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-# To create a RSA root cerificate need to following two steps:
-
-1. Create a private key for the CA:
-
-openssl req -nodes -newkey rsa:1024 -keyout <key file> -out <CA req file> -config <config file>
-The config file is input parameter, and should be present in advance.
-
-Example: openssl req -nodes -newkey rsa:1024 -keyout cakey.pem -out careq.pem -config rsa.config
-
-2. Create the CA certificate:
-
-openssl x509 -req -in <CA req> -extfile <config file> -extensions v3_ca -signkey <key file> -out <CA cert file>  -days 3650
-
-Example: openssl x509 -req -in careq.pem -extfile rsa.config -extensions v3_ca -signkey cakey.pem -out cacert.pem  -days 3650
-
-
-1. 
-
-openssl req -nodes -newkey rsa:1024 -keyout cakey.pem -out careq.pem -config rsa.config
-
-
-2.
-
-openssl x509 -req -in careq.pem -extfile rsa.config -extensions v3_ca -signkey cakey.pem -out symbiantestallcapabilitiesca.pem  -days 3650
\ No newline at end of file
--- a/installationservices/swi/test/tsisfile/data/signedsis/symbiantestallcapabilitiesca/How to  create root certficate.txt	Fri Mar 19 09:33:35 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-# To create a RSA root cerificate need to following two steps:
-
-1. Create a private key for the CA:
-
-openssl req -nodes -newkey rsa:1024 -keyout <key file> -out <CA req file> -config <config file>
-The config file is input parameter, and should be present in advance.
-
-Example: openssl req -nodes -newkey rsa:1024 -keyout cakey.pem -out careq.pem -config rsa.config
-
-2. Create the CA certificate:
-
-openssl x509 -req -in <CA req> -extfile <config file> -extensions v3_ca -signkey <key file> -out <CA cert file>  -days 3650
-
-Example: openssl x509 -req -in careq.pem -extfile rsa.config -extensions v3_ca -signkey cakey.pem -out cacert.pem  -days 3650
-
-
-1. 
-
-openssl req -nodes -newkey rsa:1024 -keyout cakey.pem -out careq.pem -config rsa.config
-
-
-2.
-
-openssl x509 -req -in careq.pem -extfile rsa.config -extensions v3_ca -signkey cakey.pem -out symbiantestallcapabilitiesca.pem  -days 3650
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/uembed18uid.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,35 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; A SISX file, with 3 embedded SISX files
+
+;Languages
+&EN
+
+;Header
+#{"embed 16 uids"}, (0x88001113), 1, 2, 3
+
+%{"Vendor"}
+:"Unique Vendor Name"
+
+;Embedded component
+@"testdependencies_embeddedinsis4.sis",(0x811118FF)
+@"devlangsup_embedded.sis",(0x88000102)
+@"testembed2lvl.sis",(0x8000001C)
+@"3datafiles.sis",(0xA0000206)
+@"053177c_6.sis",(0x81115016)
+
+;Ordinary file to selected drive
+"text\cpu.txt"-"!:\Documents\def053177\cpu1.txt"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tsisfile/data/umultilevelembed.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,30 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+&EN
+
+; This SIS file simply SA upgrades its twin in testexes that embeds a ROM upgrade.
+; This SIS file has no embedded packages.
+
+#{"it embeds 2 pkg and they embed 2 pkg each "}, (0x88001111), 1, 1, 1, TYPE=SA
+%{"Crypto Services"}
+:"Crypto Services"
+
+@"testdependencies_embeddedinsis4.sis",(0x811118FF)
+@"053177c_6.sis",(0x81115016)
+
+"embedspsa.pkg"-"c:\embed\sourcesa.pkg"
+
+
--- a/installationservices/swi/test/tsishelper/tsishelperserver.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsishelper/tsishelperserver.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -48,5 +48,8 @@
 LIBRARY			testexecutelogclient.lib
 LIBRARY			sishelper.lib
 LIBRARY			flogger.lib
-LIBRARY 			estor.lib
+LIBRARY 		estor.lib
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+LIBRARY scrclient.lib
+#endif
 SMPSAFE
--- a/installationservices/swi/test/tsisregistrytest/Scripts/removeregistrytestdata.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest/Scripts/removeregistrytestdata.script	Fri Apr 16 15:05:20 2010 +0300
@@ -193,7 +193,7 @@
 
 START_TESTCASE API-SEC-SISREGISTRYREMOVETESTDATA-0011
 
-RUN_TEST_STEP 2000 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini u_1500files
+RUN_TEST_STEP 4000 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini u_1500files
 
 END_TESTCASE API-SEC-SISREGISTRYREMOVETESTDATA-0011
 
--- a/installationservices/swi/test/tsisregistrytest/sessionstep.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest/sessionstep.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -45,6 +45,8 @@
 #include "hashcontainer.h"
 #include "sisregistryproperty.h"
 
+#include <centralrepository.h>
+
 const TInt KDefaultBufferSize		= 2048;
 /////////////////////////////////////////////////////////////////////
 // defs, Constants used by test steps
@@ -52,6 +54,8 @@
 
 _LIT(KNoUid, "nouid");
 _LIT(KUid, "uid");
+_LIT(KCenRepKey, "cenrepkey");
+_LIT(KCenRepValue, "cenrepvalue");
 _LIT(KDrivebitmapcount, "drivebitmapcout");
 _LIT(KSid, "sid");
 _LIT(KPackage, "package");
@@ -678,6 +682,59 @@
 	}
 	
 /////////////////////////////////////////////////////////////////////
+// CSetCenRepSettingStep - Set Central Reposatory Value
+/////////////////////////////////////////////////////////////////////
+CSetCenRepSettingStep::CSetCenRepSettingStep()
+    {
+    SetTestStepName(KSetCenRepSetting);
+    }
+
+TVerdict CSetCenRepSettingStep::doTestStepL()
+    {        
+    SetTestStepResult(EPass);
+    TUid repUid;
+    if(!GetUidFromConfig(ConfigSection(), KUid, repUid))
+        {
+        ERR_PRINTF1(_L("Package UID is missing in the configuration file!"));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+    
+    TInt cenRepKey;
+    if(!GetIntFromConfig(ConfigSection(), KCenRepKey, cenRepKey))
+        {
+        ERR_PRINTF1(_L("Central Reposatory Key is missing in the configuration file!"));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+    
+    TInt cenRepValue;
+    if(!GetIntFromConfig(ConfigSection(), KCenRepValue, cenRepValue))
+        {
+        ERR_PRINTF1(_L("Central Reposatory Value is missing in the configuration file!"));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+    
+    CRepository* rep = CRepository::NewLC(repUid);
+    TInt err = rep->Set(cenRepKey, cenRepValue);
+        
+    if( err == KErrNone )
+    {
+        INFO_PRINTF4(_L("Setting Central Reposatory  0x%08x  , key = %d, value = %d"),repUid,cenRepKey,cenRepValue);
+    }
+    else
+    {
+        SetTestStepResult(EFail);
+        ERR_PRINTF4(_L("Failed Setting Central Reposatory  0x%08x  , key = %d, value = %d"),repUid,cenRepKey,cenRepValue);
+    }
+    
+    CleanupStack::PopAndDestroy(rep); 
+    return TestStepResult();
+    }
+
+
+/////////////////////////////////////////////////////////////////////
 // CIsPackageInstalledStep - checks if packages are registered
 /////////////////////////////////////////////////////////////////////
 
--- a/installationservices/swi/test/tsisregistrytest/sessionstep.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest/sessionstep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -67,6 +67,14 @@
 	virtual TVerdict doTestStepL();
 	};
 
+// Set Central Reposatory Value 
+class CSetCenRepSettingStep : public CSisRegistrySessionStep
+    {
+public:
+    CSetCenRepSettingStep();
+    virtual TVerdict doTestStepL();
+    };
+
 // Check filename for sid
 class CSidFileStep : public CSisRegistrySessionStep
 	{
--- a/installationservices/swi/test/tsisregistrytest/tsisregistrytest.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest/tsisregistrytest.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -126,6 +126,10 @@
 		{
 		name = new CInRomNonRemovablePackage;
 		}
+    if (strippedStepName == KSetCenRepSetting)
+        {
+        name = new CSetCenRepSettingStep; 
+        }
 	if (strippedStepName == KInstalledDrives)
 		{
 		name = new CInstalledDrives;
--- a/installationservices/swi/test/tsisregistrytest/tsisregistrytest.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest/tsisregistrytest.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -70,4 +70,5 @@
 LIBRARY		swidataprovider.lib
 LIBRARY		sisxfile.lib 
 LIBRARY		scrclient.lib
+LIBRARY 	centralrepository.lib
 SMPSAFE
--- a/installationservices/swi/test/tsisregistrytest/tsisregistryteststep.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest/tsisregistryteststep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -27,6 +27,7 @@
 #include <test/testexecutestepbase.h>
 
 // Step names
+_LIT(KSetCenRepSetting, "SetCenRepSetting");
 _LIT(KInstalledUids, "InstalledUids");
 _LIT(KInstalledPackages, "InstalledPackages");
 _LIT(KRemovablePackages, "RemovablePackages");
--- a/installationservices/swi/test/tsisregistrytest_legacy/Scripts/tsisregistrytest.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest_legacy/Scripts/tsisregistrytest.script	Fri Apr 16 15:05:20 2010 +0300
@@ -221,7 +221,7 @@
 END_TESTCASE API-SEC-SISREGISTRY-B-0010
 
 //! @file
-//! @SYMTstCaseID		API-SEC-SISREGISTRY-B-0011
+//! @SYMTestCaseID		API-SEC-SISREGISTRY-B-0011
 //! @SYMTestCaseDesc		Gets the Registry Files(reg, clt and hash) for the package
 //! @SYMTestPriority		Medium
 //! @SYMTestActions		Installs the PU package over existing SA and Requests the Regisrty files.
@@ -278,7 +278,7 @@
 END_TESTCASE API-SEC-SISREGISTRY-B-0014
 
 
-//! @fie
+//! @file
 //! @SYMTestCaseID		API-SEC-SISREGISTRY-B-0015
 //! @SYMTestCaseDesc		Gets the Registry Files(reg, clt and hash) for the package.
 //! @SYMTestPriority		Medium
--- a/installationservices/swi/test/tsisregistrytest_legacy/sessionstep.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest_legacy/sessionstep.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -21,7 +21,8 @@
  @test
  @internalTechnology
 */
- 
+
+#include <e32svr.h>
 #include <test/testexecutelog.h>
 #include <test/testexecutestepbase.h>
 #include "sessionstep.h"
@@ -37,6 +38,7 @@
 #include "sisregistrylog.h"
 #include <s32file.h>
 
+#include <centralrepository.h>
 
 /////////////////////////////////////////////////////////////////////
 // defs, Constants used by test steps
@@ -44,6 +46,8 @@
 
 _LIT(KNoUid, "nouid");
 _LIT(KUid, "uid");
+_LIT(KCenRepKey, "cenrepkey");
+_LIT(KCenRepValue, "cenrepvalue");
 _LIT(KDrivebitmapcount, "drivebitmapcout");
 _LIT(KSid, "sid");
 _LIT(KPackage, "package");
@@ -653,6 +657,60 @@
 	return TestStepResult();
 	}
 	
+
+/////////////////////////////////////////////////////////////////////
+// CSetCenRepSettingStep - Set Central Reposatory Value
+/////////////////////////////////////////////////////////////////////
+CSetCenRepSettingStep::CSetCenRepSettingStep()
+    {
+    SetTestStepName(KSetCenRepSetting);
+    }
+
+TVerdict CSetCenRepSettingStep::doTestStepL()
+    {        
+    SetTestStepResult(EPass);
+    TUid repUid;
+    if(!GetUidFromConfig(ConfigSection(), KUid, repUid))
+        {
+        ERR_PRINTF1(_L("Package UID is missing in the configuration file!"));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+    
+    TInt cenRepKey;
+    if(!GetIntFromConfig(ConfigSection(), KCenRepKey, cenRepKey))
+        {
+        ERR_PRINTF1(_L("Central Reposatory Key is missing in the configuration file!"));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+    
+    TInt cenRepValue;
+    if(!GetIntFromConfig(ConfigSection(), KCenRepValue, cenRepValue))
+        {
+        ERR_PRINTF1(_L("Central Reposatory Value is missing in the configuration file!"));
+        SetTestStepResult(EFail);
+        return TestStepResult();
+        }
+    
+    CRepository* rep = CRepository::NewLC(repUid);
+    TInt err = rep->Set(cenRepKey, cenRepValue);
+        
+    if( err == KErrNone )
+    {
+        INFO_PRINTF4(_L("Setting Central Reposatory  0x%08x  , key = %d, value = %d"),repUid,cenRepKey,cenRepValue);
+    }
+    else
+    {
+        SetTestStepResult(EFail);
+        ERR_PRINTF4(_L("Failed Setting Central Reposatory  0x%08x  , key = %d, value = %d"),repUid,cenRepKey,cenRepValue);
+    }
+    
+    CleanupStack::PopAndDestroy(rep); 
+    return TestStepResult();
+    }
+
+
 /////////////////////////////////////////////////////////////////////
 // CIsPackageInstalledStep - checks if packages are registered
 /////////////////////////////////////////////////////////////////////
--- a/installationservices/swi/test/tsisregistrytest_legacy/sessionstep.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest_legacy/sessionstep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -56,6 +56,14 @@
 	virtual TVerdict doTestStepL();
 	};
 
+// Set Central Reposatory Value 
+class CSetCenRepSettingStep : public CSisRegistrySessionStep
+    {
+public:
+    CSetCenRepSettingStep();
+    virtual TVerdict doTestStepL();
+    };
+
 // Check filename for sid
 class CSidFileStep : public CSisRegistrySessionStep
 	{
--- a/installationservices/swi/test/tsisregistrytest_legacy/tsisregistrytest.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest_legacy/tsisregistrytest.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -108,6 +108,10 @@
 		{
 		name = new CInRomNonRemovablePackage;
 		}
+    if (aStepName == KSetCenRepSetting)
+        {
+        name = new CSetCenRepSettingStep; 
+        }
 	if (aStepName == KInstalledDrives)
 		{
 		name = new CInstalledDrives;
--- a/installationservices/swi/test/tsisregistrytest_legacy/tsisregistrytest.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest_legacy/tsisregistrytest.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -58,4 +58,5 @@
 LIBRARY     testutilclientswi.lib
 LIBRARY		x509.lib
 LIBRARY     estor.lib 
+LIBRARY 	centralrepository.lib
 SMPSAFE
--- a/installationservices/swi/test/tsisregistrytest_legacy/tsisregistryteststep.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tsisregistrytest_legacy/tsisregistryteststep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -27,6 +27,7 @@
 #include <test/testexecutestepbase.h>
 
 // Step names
+_LIT(KSetCenRepSetting, "SetCenRepSetting");
 _LIT(KInstalledUids, "InstalledUids");
 _LIT(KInstalledPackages, "InstalledPackages");
 _LIT(KRemovablePackages, "RemovablePackages");
--- a/installationservices/swi/test/tswiobserver/refswiobsplugin/group/refswiobsplugin.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tswiobserver/refswiobsplugin/group/refswiobsplugin.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -29,7 +29,6 @@
 
 USERINCLUDE   ../inc
 USERINCLUDE   ../../../../inc
-USERINCLUDE   ../../../../../../../../mw/appinstall/installationservices/swi/inc
 
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 OS_LAYER_ESTLIB_SYSTEMINCLUDE  
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate1_post.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate1_post.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -18,3 +18,11 @@
 del /s /f /q \epoc32\release\winscw\udeb\z\system\install\fota_stub_v1.sis
 del /s /f /q \epoc32\release\winscw\urel\z\system\install\fota_stub_v1.sis
 
+del /s /f /q \epoc32\release\winscw\udeb\z\system\install\fotaupdatestubapp1.sis
+del /s /f /q \epoc32\release\winscw\urel\z\system\install\fotaupdatestubapp1.sis
+
+del /s /f /q \epoc32\release\winscw\udeb\z\private\10003a3f\apps\fotaupdatestubapp1_reg.rsc
+del /s /f /q \epoc32\release\winscw\urel\z\private\10003a3f\apps\fotaupdatestubapp1_reg.rsc
+
+del /s /f /q \epoc32\release\winscw\udeb\z\private\10003a3f\apps\fotaupdateapp1_reg.rsc
+del /s /f /q \epoc32\release\winscw\urel\z\private\10003a3f\apps\fotaupdateapp1_reg.rsc
\ No newline at end of file
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate1_pre.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate1_pre.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
 @rem under the terms of the License "Eclipse Public License v1.0"
@@ -18,5 +18,14 @@
 xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fota_stub_v1.sis \epoc32\release\winscw\udeb\z\system\install\
 xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fota_stub_v1.sis \epoc32\release\winscw\urel\z\system\install\
 
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdateapp1_reg.rsc \epoc32\release\winscw\udeb\z\private\10003a3f\apps\
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdateapp1_reg.rsc \epoc32\release\winscw\urel\z\private\10003a3f\apps\
+
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdatestubapp1_reg.rsc \epoc32\release\winscw\udeb\z\private\10003a3f\apps\
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdatestubapp1_reg.rsc \epoc32\release\winscw\urel\z\private\10003a3f\apps\
+
+xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fotaupdatestubapp1.sis \epoc32\release\winscw\udeb\z\system\install\
+xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fotaupdatestubapp1.sis \epoc32\release\winscw\urel\z\system\install\
+
 rem cleanup anything from previous tests.
 del /s /f /q \epoc32\winscw\c\sys\install\sisregistry\
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate2_post.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate2_post.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2009 -2010 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
 @rem under the terms of the License "Eclipse Public License v1.0"
@@ -21,3 +21,11 @@
 del /s /f /q \epoc32\release\winscw\urel\z\resource\versions\sw.txt
 del /s /f /q \epoc32\release\winscw\udeb\z\resource\versions\sw.txt
 
+del /s /f /q \epoc32\release\winscw\udeb\z\private\10003a3f\apps\fotaupdateapp2_reg.rsc
+del /s /f /q \epoc32\release\winscw\urel\z\private\10003a3f\apps\fotaupdateapp2_reg.rsc
+
+del /s /f /q \epoc32\release\winscw\udeb\z\private\10003a3f\apps\fotaupdatestubapp2_reg.rsc
+del /s /f /q \epoc32\release\winscw\urel\z\private\10003a3f\apps\fotaupdatestubapp2_reg.rsc
+
+del /s /f /q \epoc32\release\winscw\udeb\z\system\install\fotaupdatestubapp2.sis
+del /s /f /q \epoc32\release\winscw\urel\z\system\install\fotaupdatestubapp2.sis
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate2_pre.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/testfotaupdate2_pre.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
 @rem under the terms of the License "Eclipse Public License v1.0"
@@ -18,5 +18,14 @@
 xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fota_stub_v2.sis \epoc32\release\winscw\udeb\z\system\install\
 xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fota_stub_v2.sis \epoc32\release\winscw\urel\z\system\install\
 
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdateapp2_reg.rsc \epoc32\release\winscw\udeb\z\private\10003a3f\apps\
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdateapp2_reg.rsc \epoc32\release\winscw\urel\z\private\10003a3f\apps\
+
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdatestubapp2_reg.rsc \epoc32\release\winscw\udeb\z\private\10003a3f\apps\
+xcopy /Q /Y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\fotaupdatestubapp2_reg.rsc  \epoc32\release\winscw\urel\z\private\10003a3f\apps\
+
+xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fotaupdatestubapp2.sis \epoc32\release\winscw\udeb\z\system\install\
+xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\fotaupdatestubapp2.sis \epoc32\release\winscw\urel\z\system\install\
+
 xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\sw.txt 		\epoc32\release\winscw\urel\z\resource\versions\
 xcopy /Q /Y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\sw.txt 		\epoc32\release\winscw\udeb\z\resource\versions\
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_post.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,40 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+del /s /f /q \epoc32\release\winscw\udeb\z\sys\bin\swiappregintegration_base01.exe
+del /s /f /q \epoc32\release\winscw\udeb\z\private\10003a3f\import\apps\swiappregintegration_base01_reg.rsc
+del /s /f /q \epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_loc.rsc
+del /s /f /q \epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_rsc.mbm
+del /s /f /q \epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_loc.r01
+del /s /f /q \epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_01.mbm
+del /s /f /q \epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_loc.r02
+del /s /f /q \epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_02.mbm
+
+del /s /f /q \epoc32\release\winscw\urel\z\sys\bin\swiappregintegration_base01.exe
+del /s /f /q \epoc32\release\winscw\urel\z\private\10003a3f\import\apps\swiappregintegration_base01_reg.rsc
+del /s /f /q \epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_loc.rsc
+del /s /f /q \epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_rsc.mbm
+del /s /f /q \epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_loc.r01
+del /s /f /q \epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_01.mbm
+del /s /f /q \epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_loc.r02
+del /s /f /q \epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_02.mbm
+
+del /s /f /q \epoc32\release\winscw\udeb\z\system\install\swiappregintegration_base01_stub.sis
+del /s /f /q \epoc32\release\winscw\urel\z\system\install\swiappregintegration_base01_stub.sis
+
+del /s /f /q \epoc32\winscw\c\sys\install
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/batchfiles/tswiappregintegration_pre.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,47 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+rem Copy the list of files to Z in winscw
+md \epoc32\release\winscw\udeb\z\private\10003a3f\import\apps
+md \epoc32\release\winscw\urel\z\private\10003a3f\import\apps
+copy /y \epoc32\release\winscw\udeb\swiappregintegration_base01.exe									\epoc32\release\winscw\udeb\z\sys\bin\swiappregintegration_base01.exe
+copy /y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_reg.rsc	\epoc32\release\winscw\udeb\z\private\10003a3f\import\apps\swiappregintegration_base01_reg.rsc
+copy /y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.rsc	\epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_loc.rsc
+copy /y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm			\epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_rsc.mbm
+copy /y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r01	\epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_loc.r01
+copy /y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm			\epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_01.mbm
+copy /y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r02	\epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_loc.r02
+copy /y \epoc32\release\winscw\udeb\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm			\epoc32\release\winscw\udeb\z\resource\apps\swiappregintegration_base01_02.mbm
+
+copy /y \epoc32\release\winscw\urel\swiappregintegration_base01.exe									\epoc32\release\winscw\urel\z\sys\bin\swiappregintegration_base01.exe
+copy /y \epoc32\release\winscw\urel\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_reg.rsc	\epoc32\release\winscw\urel\z\private\10003a3f\import\apps\swiappregintegration_base01_reg.rsc
+copy /y \epoc32\release\winscw\urel\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.rsc	\epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_loc.rsc
+copy /y \epoc32\release\winscw\urel\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm			\epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_rsc.mbm
+copy /y \epoc32\release\winscw\urel\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r01	\epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_loc.r01
+copy /y \epoc32\release\winscw\urel\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm			\epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_01.mbm
+copy /y \epoc32\release\winscw\urel\z\tswi\tuiscriptadaptors\data\swiappregintegration_base01\swiappregintegration_base01_loc.r02	\epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_loc.r02
+copy /y \epoc32\release\winscw\urel\z\tswi\tuiscriptadaptors\data\swiappregintegration01\swiappregintegration.mbm			\epoc32\release\winscw\urel\z\resource\apps\swiappregintegration_base01_02.mbm
+
+rem Copy the stub sis file
+
+copy /y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\swiappregintegration_base01_stub.sis \epoc32\release\winscw\udeb\z\system\install\swiappregintegration_base01_stub.sis
+copy /y \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\swiappregintegration_base01_stub.sis \epoc32\release\winscw\urel\z\system\install\swiappregintegration_base01_stub.sis
+
+del /s /f /q \epoc32\winscw\c\sys\install
+del /s /f /q \epoc32\winscw\c\sys\bin
+del /s /f /q \epoc32\winscw\c\sys\hash
+del /s /f /q \epoc32\winscw\c\resource\apps
+del /s /f /q \epoc32\winscw\c\private\10003a3f\import\apps
\ No newline at end of file
Binary file installationservices/swi/test/tuiscriptadaptors/scripts/fotaupdatestubapp1.sis has changed
Binary file installationservices/swi/test/tuiscriptadaptors/scripts/fotaupdatestubapp2.sis has changed
Binary file installationservices/swi/test/tuiscriptadaptors/scripts/swiappregintegration_base01_stub.sis has changed
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/testdevicelanguages.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/testdevicelanguages.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -1043,3 +1043,150 @@
 
 [langauge_to_german]
 language=03
+
+[defineProperty]
+DefineProperty=true
+
+[API-INST-PAS-SWI-0001]
+sis=z:\tswi\tsis\data\equivalent_language_sa.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=1
+PublishedUidValue0=88000108
+
+[API-INST-PAS-SWI-0001-A]
+sis=z:\tswi\tsis\data\equivalent_language_sp.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=1
+PublishedUidValue0=88000108
+
+[API-INST-PAS-SWI-0001-Uninstall]
+uid=88000108
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[API-INST-PAS-SWI-0001-Uninstall-A]
+uid=88000108
+vendorName=Vendor
+packageName=Equivalent_SP_EN
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[API-INST-PAS-SWI-0002]
+sis=z:\tswi\tsis\data\embedspsainsp.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=1
+PublishedUidValue0=802730A5
+
+[API-INST-PAS-SWI-0002-Uninstall]
+uid=802730A5
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[API-INST-PAS-SWI-0003]
+sis=z:\tswi\tsis\data\053177c_7.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=8
+PublishedUidValue0=81115017
+PublishedUidValue1=81115016
+PublishedUidValue2=81115015
+PublishedUidValue3=81115014
+PublishedUidValue4=81115013
+PublishedUidValue5=81115012
+PublishedUidValue6=81115011
+PublishedUidValue7=81115000
+
+[API-INST-PAS-SWI-0003-Uninstall]
+uid=81115017
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[API-INST-PAS-SWI-0004]
+sis=z:\tswi\tsis\data\testembed1lvl.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=1
+PublishedUidValue0=8000001B
+
+[API-INST-PAS-SWI-0004-A]
+sis=z:\tswi\tsis\data\dependentonsample.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=2
+PublishedUidValue0=88001110
+PublishedUidValue1=80000001
+
+[API-INST-PAS-SWI-0004-Uninstall-A]
+uid=8000001B
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[API-INST-PAS-SWI-0004-Uninstall-B]
+uid=88001110
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+
+
+[API-INST-PAS-SWI-0005]
+sis=z:\tswi\tsis\data\umultilevelembed.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=11
+PublishedUidValue0=88001111
+PublishedUidValue1=811118FF
+PublishedUidValue2=81115016
+PublishedUidValue3=811111FE
+PublishedUidValue4=811111FF
+PublishedUidValue5=81115015
+PublishedUidValue6=81115014
+PublishedUidValue7=81115013
+PublishedUidValue8=81115012
+PublishedUidValue9=81115011
+PublishedUidValue10=81115000
+
+[API-INST-PAS-SWI-0005-Uninstall]
+uid=88001111
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+
+[API-INST-PAS-SWI-0006]
+sis=z:\tswi\tsis\data\filebase.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=1
+PublishedUidValue0=A0000A93
+
+[API-INST-PAS-SWI-0006]
+sis=z:\tswi\tsis\data\filebase.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=1
+PublishedUidValue0=A0000A93
+
+[API-INST-PAS-SWI-0006-A]
+sis=z:\tswi\tsis\data\filesp4.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=2
+PublishedUidValue0=88001112
+PublishedUidValue1=A0000A93
+
+
+[API-INST-PAS-SWI-0006-Uninstall]
+uid=88001112
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[API-INST-PAS-SWI-0007]
+sis=z:\tswi\tsis\data\uembed18uid.sis
+script=z:\tswi\tuiscriptadaptors\scripts\simple.xml
+PublishedUidCount=18
+PublishedUidValue0=88001113
+PublishedUidValue1=811118FF
+PublishedUidValue2=88000102
+PublishedUidValue3=8000001C
+PublishedUidValue4=A0000206
+PublishedUidValue5=81115016
+PublishedUidValue6=811111FE
+PublishedUidValue7=811111FF
+PublishedUidValue8=88000101
+PublishedUidValue9=8000001B
+PublishedUidValue10=80000002
+PublishedUidValue11=81115015
+PublishedUidValue12=80000001
+PublishedUidValue13=81115014
+PublishedUidValue14=81115013
+PublishedUidValue15=81115012
+PublishedUidValue16=81115011
+PublishedUidValue17=81115000
+
+[API-INST-PAS-SWI-0007-Uninstall]
+uid=88001113
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/testdevicelanguages.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/testdevicelanguages.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -599,9 +599,116 @@
 RUN_TEST_STEP 100 tSisRegistryTest IsPackageInstalled z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini equ_package_info_english_am
 // Uninstall  
 RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini uninstall_base_bf_sg_sr_sa_options
+// Always set the language back to English, as tscr test cases assume that device is in english lang
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
 END_TESTCASE API-INST-PREQ2525-SWI-0009
 
 START_TESTCASE API-INST-PREQ2525-SWI-0010
 // Negative test to verify -ve language passed will not cause any crash 
 RUN_TEST_STEP !Error=-3 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini pass_negative_language_id
 END_TESTCASE API-INST-PREQ2525-SWI-0010
+
+
+//! @SYMTestCaseID   		API-INST-PAS-SWI-0001
+//! @SYMTestCaseDesc 		Install SA package  , check for published uid , Install SP , check for published uid
+
+START_TESTCASE API-INST-PAS-SWI-0001
+
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAugStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001-Uninstall-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001-Uninstall
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0001
+
+END_TESTCASE API-INST-PAS-SWI-0001
+
+//! @SYMTestCaseID   		API-INST-PAS-SWI-0002
+//! @SYMTestCaseDesc 		Install SA embedding SP package , check for published uid
+
+//START_TESTCASE API-INST-PAS-SWI-0002
+
+//RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+//RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0002
+//RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0002
+//RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0002-Uninstall
+//END_TESTCASE API-INST-PAS-SWI-0002
+
+//! @SYMTestCaseID   		API-INST-PAS-SWI-0003
+//! @SYMTestCaseDesc 		Install 8 level of embeded package , check for published uid
+
+START_TESTCASE API-INST-PAS-SWI-0003
+
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0003
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0003
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0003-Uninstall
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0003
+END_TESTCASE API-INST-PAS-SWI-0003
+
+
+//! @SYMTestCaseID   		API-INST-PAS-SWI-0004
+//! @SYMTestCaseDesc 		Install 3 packages A,B and C . B depends on A and C embed A , uninstall C and check for published uid  RemoveOnlyWithLastDependent = true
+
+START_TESTCASE API-INST-PAS-SWI-0004
+
+
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0004
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0004-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0004-Uninstall-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0004
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0004-Uninstall-B
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0004-A
+END_TESTCASE API-INST-PAS-SWI-0004
+
+
+//! @SYMTestCaseID   		API-INST-PAS-SWI-0005
+//! @SYMTestCaseDesc 		Install mutli level dependency , Install A which embeds B and C , Both B and C further embeds xyz.... 
+
+START_TESTCASE API-INST-PAS-SWI-0005
+
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0005
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0005
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0005-Uninstall
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0005
+END_TESTCASE API-INST-PAS-SWI-0005
+
+
+//! @SYMTestCaseID   		API-INST-PAS-SWI-0006
+//! @SYMTestCaseDesc 		Install SA , install another SA which embeds a PU and  SP of first SA
+
+START_TESTCASE API-INST-PAS-SWI-0006
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0006
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0006-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0006-A
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0006-Uninstall
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0006-A
+END_TESTCASE API-INST-PAS-SWI-0006
+
+
+//! @SYMTestCaseID   		API-INST-PAS-SWI-0007
+//! @SYMTestCaseDesc 		Install sis file which embeds 17 sis file in it , Negative test to hit buffer overflow condition in secutils.dll
+
+START_TESTCASE API-INST-PAS-SWI-0007
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors InstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0007
+RUN_TEST_STEP !Result=Fail	100 tuiscriptadaptors		GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0007
+RUN_TEST_STEP 100 tuiscriptadaptors	GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini defineProperty
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallAsyncStep z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0007-Uninstall
+RUN_TEST_STEP !Result=Fail	100 tuiscriptadaptors		GetPublishedUidArrayStep	z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini API-INST-PAS-SWI-0007
+END_TESTCASE API-INST-PAS-SWI-0007
+
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -7,3 +7,113 @@
 uid-01=88000112
 package-01=fota
 vendor-01=Vendor2
+
+[app_info_fota_v1]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = A000F56C
+AppRegEntriesConfigCount=1
+configsection0 = app_info_fota_v1_data
+
+[app_info_fota_v1_data]
+AppUid=A000F56C
+AppFile=Z:\sys\bin\fota.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=0
+
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=0
+PropertiesCount=0
+
+[app_info_fota_v2]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = A000F56C
+AppRegEntriesConfigCount=1
+configsection0 = app_info_fota_v2_data
+
+[app_info_fota_v2_data]
+AppUid=A000F56C
+AppFile=Z:\sys\bin\fota.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Apps
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=0
+
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=0
+PropertiesCount=0
+
+[stubapp_info_fota_v1]
+uid-01=2002E5E7
+package-01=fota
+vendor-01=Vendor1
+
+[stubapp_info_fota_v2]
+uid-01=2002E5E7
+package-01=fota
+vendor-01=Vendor2
+
+[stubapp_scr_info_fota_v1]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = 2002E5E7
+AppRegEntriesConfigCount=1
+configsection0 = stubapp_info_fota_v1_data
+
+[stubapp_info_fota_v1_data]
+AppUid=2002E5E7
+AppFile=Z:\sys\bin\T_groupname.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group1
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=0
+
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=0
+PropertiesCount=0
+
+[stubapp_scr_info_fota_v2]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = 2002E5E7
+AppRegEntriesConfigCount=1
+configsection0 = stubapp_info_fota_v2_data
+
+[stubapp_info_fota_v2_data]
+AppUid=2002E5E7
+AppFile=Z:\sys\bin\T_groupname.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group2
+DefaultScreenNumber=0
+AppOpaqueDataInfoCount=0
+
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=0
+PropertiesCount=0
\ No newline at end of file
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate1.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate1.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -18,6 +18,7 @@
 PRINT Run SWI FOTA Update tests
 LOAD_SUITE tuiscriptadaptors
 LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
 
 //! @SYMTestCaseID INST-REG-FOTA-0001
 //! @SYMTestCaseDesc Tests F/W update scenario
@@ -27,4 +28,26 @@
 //! @SYMTestExpectedResults Registry is updated with latest stub info
 START_TESTCASE FotaTest1
 RUN_TEST_STEP 100 tSisRegistryTest IsPackageInstalled z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini package_info_fota_v1
-END_TESTCASE FotaTest1
\ No newline at end of file
+END_TESTCASE FotaTest1
+
+
+//! @SYMTestCaseID INST-REG-FOTA-0003
+//! @SYMTestCaseDesc Tests F/W update scenario for application registration resource files
+//! @SYMREQ PREQ1835
+//! @SYMTestPriority High
+//! @SYMTestActions Tests F/W update scenario for application registration resource files
+//! @SYMTestExpectedResults Scr db is updated with latest app info
+START_TESTCASE FotaTest3
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini app_info_fota_v1
+END_TESTCASE FotaTest3
+
+//! @SYMTestCaseID INST-REG-FOTA-0004
+//! @SYMTestCaseDesc Tests F/W update scenario for application registration resource files in stub
+//! @SYMREQ PREQ1835
+//! @SYMTestPriority High
+//! @SYMTestActions Tests F/W update scenario for application registration resource files in stub
+//! @SYMTestExpectedResults Registry is updated with latest stub info
+START_TESTCASE FotaTest4
+RUN_TEST_STEP 100 tSisRegistryTest IsPackageInstalled z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini stubapp_info_fota_v1
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini stubapp_scr_info_fota_v1
+END_TESTCASE FotaTest4
\ No newline at end of file
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate2.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/testfotaupdate2.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -18,6 +18,7 @@
 PRINT Run SWI FOTA Update tests
 LOAD_SUITE tuiscriptadaptors
 LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
 
 //! @SYMTestCaseID INST-REG-FOTA-0002
 //! @SYMTestCaseDesc Tests F/W update scenario
@@ -27,4 +28,26 @@
 //! @SYMTestExpectedResults Registry is updated with latest stub info
 START_TESTCASE FotaTest2
 RUN_TEST_STEP 100 tSisRegistryTest IsPackageInstalled z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini package_info_fota_v2
-END_TESTCASE FotaTest2
\ No newline at end of file
+END_TESTCASE FotaTest2
+
+
+//! @SYMTestCaseID INST-REG-FOTA-0005
+//! @SYMTestCaseDesc Tests F/W update scenario for application registration resource files
+//! @SYMREQ PREQ1835
+//! @SYMTestPriority High
+//! @SYMTestActions Tests F/W update scenario for application registration resource files
+//! @SYMTestExpectedResults SCR db is updated with latest app info
+START_TESTCASE FotaTest5
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini app_info_fota_v2
+END_TESTCASE FotaTest5
+
+//! @SYMTestCaseID INST-REG-FOTA-0006
+//! @SYMTestCaseDesc Tests F/W update scenario for application registration resource files in stub
+//! @SYMREQ PREQ1835
+//! @SYMTestPriority High
+//! @SYMTestActions Tests F/W update scenario for application registration resource files in stub
+//! @SYMTestExpectedResults Registry is updated with latest stub info
+START_TESTCASE FotaTest6
+RUN_TEST_STEP 100 tSisRegistryTest IsPackageInstalled z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini stubapp_info_fota_v2
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\testfotaupdate.ini stubapp_scr_info_fota_v2
+END_TESTCASE FotaTest6
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/tswiappregintegration.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,896 @@
+
+[swiappregintegration_case01]
+sis=z:\tswi\tsis\data\swiappregintegration01.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=03
+devicelanguage2=24
+
+[u_swiappregintegration_case01]
+uid=80010002
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[swiappregintegration_case01_EN]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_case01_EN_data
+CompareWithDb=True
+
+[swiappregintegration_case01_IF]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_case01_IF_data
+CompareWithDb=True
+
+[swiappregintegration_case01_RSC]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_case01_RSC_data
+CompareWithDb=True
+
+[swiappregintegration_case01_EN_data]
+AppUid=90000003
+AppFile=C:\sys\bin\swiappregintegration.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+
+OwnedFileCount=2
+FileName0=c:\temp\AppNameTempFile.txt
+FileName1=c:\temp\AppName.txt
+
+ServiceInfoCount=3
+ServiceUid0=10208DCA
+ServiceOpaqueDataInfoCount0=0
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+ServiceUid1=01020304
+ServiceOpaqueDataInfoCount1=0
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+ServiceUid2=02030405
+ServiceOpaqueDataInfoCount2=0
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+LocAppLanguage0=1
+LocShortCaption0=HW_EN
+LocCaption0=HelloWorld_EN
+LocNumberOfAppIcons0=11
+LocIconFileName0=C:\resource\apps\swiappregintegration01_01.mbm
+LocGroupName0=Group_EN
+
+ViewDataCount0=2
+VwUid0=1234
+VwScreenMode0=1
+VwCaption0=View_01_EN
+VwNumberOfAppIcons0=12
+VwIconFileName0=C:\resource\apps\swiappregintegration01_01.mbm
+VwUid1=1235
+VwScreenMode1=2
+VwCaption1=View_02_EN
+VwIconFileName1=C:\resource\apps\swiappregintegration01_01.mbm
+VwNumberOfAppIcons1=13
+
+PropertiesCount=0
+
+[swiappregintegration_case01_IF_data]
+AppUid=90000003
+AppFile=C:\sys\bin\swiappregintegration.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+
+OwnedFileCount=2
+FileName0=c:\temp\AppNameTempFile.txt
+FileName1=c:\temp\AppName.txt
+
+ServiceInfoCount=3
+ServiceUid0=10208DCA
+ServiceOpaqueDataInfoCount0=0
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+ServiceUid1=01020304
+ServiceOpaqueDataInfoCount1=0
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+ServiceUid2=02030405
+ServiceOpaqueDataInfoCount2=0
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+LocAppLanguage0=24
+LocShortCaption0=HW_IF
+LocCaption0=HelloWorld_IF
+LocNumberOfAppIcons0=17
+LocIconFileName0=C:\resource\apps\swiappregintegration01_24.mbm
+LocGroupName0=Group_IF
+
+ViewDataCount0=2
+VwUid0=1238
+VwScreenMode0=5
+VwCaption0=View_01_IF
+VwNumberOfAppIcons0=18
+VwIconFileName0=C:\resource\apps\swiappregintegration01_24.mbm
+VwUid1=1239
+VwScreenMode1=6
+VwCaption1=View_02_IF
+VwIconFileName1=C:\resource\apps\swiappregintegration01_24.mbm
+VwNumberOfAppIcons1=19
+
+PropertiesCount=0
+
+[swiappregintegration_case01_RSC_data]
+AppUid=90000003
+AppFile=C:\sys\bin\swiappregintegration.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=0
+AppOpaqueData0=Non-localised_resource
+
+OwnedFileCount=2
+FileName0=c:\temp\AppNameTempFile.txt
+FileName1=c:\temp\AppName.txt
+
+ServiceInfoCount=3
+ServiceUid0=10208DCA
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+ServiceOpaqueDataInfoCount0=0
+ServiceUid1=01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=Non-localised_service_uid_01020304
+ServiceUid2=02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+ServiceOpaqueDataInfoCount2=1
+ServiceOpaqueLocale1=0
+ServiceOpaqueData1=Non-localised_service_uid_02030405
+
+LocalizableAppInfoCount=1
+LocAppLanguage0=0
+LocShortCaption0=HW_RSC
+LocCaption0=HelloWorld_RSC
+LocNumberOfAppIcons0=20
+LocIconFileName0=C:\resource\apps\swiappregintegration01_rsc.mbm
+LocGroupName0=Group_RSC
+
+ViewDataCount0=2
+VwUid0=1240
+VwScreenMode0=7
+VwCaption0=View_01_RSC
+VwNumberOfAppIcons0=21
+VwIconFileName0=C:\resource\apps\swiappregintegration01_rsc.mbm
+VwUid1=1241
+VwScreenMode1=8
+VwCaption1=View_02_RSC
+VwIconFileName1=C:\resource\apps\swiappregintegration01_rsc.mbm
+VwNumberOfAppIcons1=22
+
+PropertiesCount=0
+
+
+[swiappregintegration_base01_EN_data]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=1
+LocShortCaption0=HW_Base01_EN
+LocCaption0=HelloWorld_Base01_EN
+LocNumberOfAppIcons0=123
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_01.mbm
+LocGroupName0=Group_Base01_EN
+PropertiesCount=0
+
+
+[swiappregintegration_base01_FR_data]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=2
+LocShortCaption0=HW_Base01_FR
+LocCaption0=HelloWorld_Base01_FR
+LocNumberOfAppIcons0=124
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_02.mbm
+LocGroupName0=Group_Base01_FR
+PropertiesCount=0
+
+
+[swiappregintegration_base01_GE_data]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=3
+LocShortCaption0=HW_Base01_GE
+LocCaption0=HelloWorld_Base01_GE
+LocNumberOfAppIcons0=125
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_03.mbm
+LocGroupName0=Group_Base01_GE
+PropertiesCount=0
+
+
+[swiappregintegration_base01_RSC_data]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=0
+LocShortCaption0=HW_Base01_RSC
+LocCaption0=HelloWorld_Base01_RSC
+LocNumberOfAppIcons0=127
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_rsc.mbm
+LocGroupName0=Group_Base01_RSC
+PropertiesCount=0
+
+[swiappregintegration_base01_FR_2_data]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=2
+LocShortCaption0=HW_Base01_FR_2
+LocCaption0=HelloWorld_Base01_FR_2
+LocNumberOfAppIcons0=126
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_02.mbm
+LocGroupName0=Group_Base01_FR2
+PropertiesCount=0
+
+
+[swiappregintegration_case02_EN_data]
+AppUid=90000005
+AppFile=C:\sys\bin\swiappregintegration02.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppGroup02
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=10208DCA
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc/txt
+ServiceDataTypePriority1=0
+ServiceDataType1=doc/pdf
+ServiceOpaqueDataInfoCount0=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=1
+LocShortCaption0=HW_App2_EN
+LocCaption0=HelloWorld_App2_EN
+LocNumberOfAppIcons0=19
+LocIconFileName0=C:\resource\apps\swiappregintegration02_01.mbm
+PropertiesCount=0
+
+
+[swiappregintegration_case02_RSC_data]
+AppUid=90000005
+AppFile=C:\sys\bin\swiappregintegration02.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppGroup02
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=10208DCA
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc/txt
+ServiceDataTypePriority1=0
+ServiceDataType1=doc/pdf
+ServiceOpaqueDataInfoCount0=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=0
+LocShortCaption0=HW_App2_RSC
+LocCaption0=HelloWorld_App2_RSC
+LocNumberOfAppIcons0=29
+LocIconFileName0=C:\resource\apps\swiappregintegration02_rsc.mbm
+PropertiesCount=0
+
+[swiappregintegration03_IF]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration03_IF_DATA
+CompareWithDb=True
+
+[swiappregintegration03_RSC]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration03_RSC_DATA
+CompareWithDb=True
+
+[swiappregintegration03_IF_DATA]
+AppUid=90000006
+AppFile=C:\sys\bin\swiappregintegration03.exe
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=24
+AppOpaqueData0=IF Localised text App
+ServiceInfoCount=2
+ServiceUid0=01020305
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg3
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif3
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=24
+ServiceOpaqueData0=IF Localised text for service UID 0x01020305
+ServiceUid1=10208DCA
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=doc/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=doc/gif2
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale1=24
+ServiceOpaqueData1=IF Localised text for service UID 0x10208DCA
+LocalizableAppInfoCount=1
+LocAppLanguage0=24
+LocShortCaption0=C03_IF
+LocCaption0=Case03_IF
+LocNumberOfAppIcons0=112
+LocIconFileName0=C:\Icon\swiappregintegration03_24.mbm
+LocalizableAppInfoCount=1
+OwnedFileCount=0
+PropertiesCount=0
+
+[swiappregintegration03_RSC_DATA]
+AppUid=90000006
+AppFile=C:\sys\bin\swiappregintegration03.exe
+OwnedFileCount=0
+ServiceInfoCount=2
+ServiceUid0=01020305
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg3
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif3
+ServiceOpaqueDataInfoCount0=1
+ServiceOpaqueLocale0=0
+ServiceOpaqueData0=RSC Localised text for service UID 0x01020305
+ServiceUid1=10208DCA
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=doc/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=doc/gif2
+ServiceOpaqueDataInfoCount1=1
+ServiceOpaqueLocale1=0
+ServiceOpaqueData1=RSC Localised text for service UID 0x10208DCA
+LocalizableAppInfoCount=1
+LocAppLanguage0=0
+LocShortCaption0=C03_RSC
+LocCaption0=Case03_RSC
+LocNumberOfAppIcons0=113
+LocIconFileName0=C:\Icon\swiappregintegration03_rsc.mbm
+AppOpaqueDataInfoCount=1
+AppOpaqueLocale0=0
+AppOpaqueData0=RSC Localised text App
+PropertiesCount=0
+
+
+[swiappregintegration_base01]
+sis=z:\tswi\tsis\data\swiappregintegration_base01.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=02
+CompareWithDb=True
+
+[u_swiappregintegration_base01]
+uid=80010003
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[swiappregintegration_base02]
+sis=z:\tswi\tsis\data\swiappregintegration_base02.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=02
+devicelanguage2=03
+
+[swiappregintegration_base02_ru]
+sis=z:\tswi\tsis\data\swiappregintegration_base02_ru_root5.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=02
+devicelanguage2=03
+CompareWithDb=True
+
+[u_swiappregintegration_base02]
+uid=80010003
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[swiappregintegration_base01_sp]
+sis=z:\tswi\tsis\data\swiappregintegration_base01_sp.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=03
+CompareWithDb=True
+
+[swiappregintegration_case02_EN]
+AppRegEntriesConfigCount=2
+configsection0 = swiappregintegration_base01_EN_data
+configsection1 = swiappregintegration_case02_EN_data
+CompareWithDb=True
+
+[swiappregintegration_case02_FR]
+AppRegEntriesConfigCount=2
+configsection0 = swiappregintegration_base01_FR_2_data
+configsection1 = swiappregintegration_case02_RSC_data
+CompareWithDb=True
+
+[swiappregintegration_case02_GE]
+AppRegEntriesConfigCount=2
+configsection0 = swiappregintegration_base01_GE_data
+configsection1 = swiappregintegration_case02_RSC_data
+CompareWithDb=True
+
+[swiappregintegration_case02_EN_REV]
+AppRegEntriesConfigCount=2
+configsection1 = swiappregintegration_base01_EN_data
+configsection0 = swiappregintegration_case02_EN_data
+CompareWithDb=True
+
+[swiappregintegration_case02_FR_REV]
+AppRegEntriesConfigCount=2
+configsection1 = swiappregintegration_base01_FR_2_data
+configsection0 = swiappregintegration_case02_RSC_data
+CompareWithDb=True
+
+[swiappregintegration_case02_GE_REV]
+AppRegEntriesConfigCount=2
+configsection1 = swiappregintegration_base01_GE_data
+configsection0 = swiappregintegration_case02_RSC_data
+CompareWithDb=True
+
+[swiappregintegration_base01_pu]
+sis=z:\tswi\tsis\data\swiappregintegration_base01_pu.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=02
+devicelanguage2=03
+CompareWithDb=True
+
+[swiappregintegration_base01_EN]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = 90000004
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_base01_EN_data
+CompareWithDb=True
+
+[swiappregintegration_base01_EN_base]
+Locale  = 01
+NoOfEntries=1
+AppRegAppUidCount=1
+AppRegAppUid0 = 90000004
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_base01_EN_data_base
+CompareWithDb=True
+
+[swiappregintegration_base01_EN_data_base]
+AppUid=90000004
+AppFile=Z:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=1
+LocShortCaption0=HW_Base01_EN
+LocCaption0=HelloWorld_Base01_EN
+LocNumberOfAppIcons0=123
+LocIconFileName0=z:\resource\apps\swiappregintegration_base01_01.mbm
+LocGroupName0=Group_Base01_EN
+PropertiesCount=0
+
+[swiappregintegration_base01_No_Eclipsing_EN]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_base01_No_Eclipsing_EN_data_base
+CompareWithDb=True
+
+[swiappregintegration_base01_No_Eclipsing_EN_data_base]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=1
+LocShortCaption0=HW_Base01_EN
+LocCaption0=HelloWorld_Base01_EN
+LocNumberOfAppIcons0=123
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_01.mbm
+LocGroupName0=Group_Base01_EN
+PropertiesCount=0
+
+[swiappregintegration_base01_FR]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_base01_FR_data_base
+CompareWithDb=True
+
+[swiappregintegration_base01_FR_data_base]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=2
+LocShortCaption0=HW_Base01_FR
+LocCaption0=HelloWorld_Base01_FR
+LocNumberOfAppIcons0=124
+LocIconFileName0=z:\resource\apps\swiappregintegration_base01_02.mbm
+LocGroupName0=Group_Base01_FR
+PropertiesCount=0
+
+
+[swiappregintegration_base01_No_Eclipsing_FR]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_base01_No_Eclipsing_FR_data_base
+CompareWithDb=True
+
+[swiappregintegration_base01_No_Eclipsing_FR_data_base]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=2
+LocShortCaption0=HW_Base01_FR
+LocCaption0=HelloWorld_Base01_FR
+LocNumberOfAppIcons0=124
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_02.mbm
+LocGroupName0=Group_Base01_FR
+PropertiesCount=0
+
+[swiappregintegration_base01_RSC]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_base01_RSC_data_base
+CompareWithDb=True
+
+[swiappregintegration_base01_RSC_data_base]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=0
+LocShortCaption0=HW_Base01_RSC
+LocCaption0=HelloWorld_Base01_RSC
+LocNumberOfAppIcons0=127
+LocIconFileName0=z:\resource\apps\swiappregintegration_base01_rsc.mbm
+LocGroupName0=Group_Base01_RSC
+PropertiesCount=0
+
+[swiappregintegration_base01_No_Eclipsing_RSC]
+AppRegEntriesConfigCount=1
+configsection0 = swiappregintegration_base01_No_Eclipsing_RSC_data_base
+CompareWithDb=True
+
+[swiappregintegration_base01_No_Eclipsing_RSC_data_base]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=0
+LocShortCaption0=HW_Base01_RSC
+LocCaption0=HelloWorld_Base01_RSC
+LocNumberOfAppIcons0=127
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_rsc.mbm
+LocGroupName0=Group_Base01_RSC
+PropertiesCount=0
+
+[swiappregintegration_case02_EN_romupgrade]
+AppRegEntriesConfigCount=2
+configsection0 = swiappregintegration_base01_EN_data_romupgrade
+configsection1 = swiappregintegration_case02_EN_data_romupgrade
+CompareWithDb=True
+
+[swiappregintegration_base01_EN_data_romupgrade]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=1
+LocShortCaption0=HW_Base01_EN
+LocCaption0=HelloWorld_Base01_EN
+LocNumberOfAppIcons0=123
+LocIconFileName0=z:\resource\apps\swiappregintegration_base01_01.mbm
+LocGroupName0=Group_Base01_EN
+PropertiesCount=0
+
+[swiappregintegration_case02_EN_data_romupgrade]
+AppUid=90000005
+AppFile=C:\sys\bin\swiappregintegration02.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppGroup02
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=10208DCA
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc/txt
+ServiceDataTypePriority1=0
+ServiceDataType1=doc/pdf
+ServiceOpaqueDataInfoCount0=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=1
+LocShortCaption0=HW_App2_EN
+LocCaption0=HelloWorld_App2_EN
+LocNumberOfAppIcons0=19
+LocIconFileName0=C:\resource\apps\swiappregintegration02_01.mbm
+PropertiesCount=0
+
+[swiappregintegration_case02_FR_romupgrade]
+AppRegEntriesConfigCount=2
+configsection0 = swiappregintegration_base01_FR_2_data_romupgrade
+configsection1 = swiappregintegration_case02_RSC_data_romupgrade
+CompareWithDb=True
+
+[swiappregintegration_base01_FR_2_data_romupgrade]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=2
+LocShortCaption0=HW_Base01_FR_2
+LocCaption0=HelloWorld_Base01_FR_2
+LocNumberOfAppIcons0=126
+LocIconFileName0=z:\resource\apps\swiappregintegration_base01_02.mbm
+LocGroupName0=Group_Base01_FR2
+PropertiesCount=0
+
+[swiappregintegration_case02_RSC_data_romupgrade]
+AppUid=90000005
+AppFile=C:\sys\bin\swiappregintegration02.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppGroup02
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=1
+ServiceUid0=10208DCA
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=doc/txt
+ServiceDataTypePriority1=0
+ServiceDataType1=doc/pdf
+ServiceOpaqueDataInfoCount0=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=0
+LocShortCaption0=HW_App2_RSC
+LocCaption0=HelloWorld_App2_RSC
+LocNumberOfAppIcons0=29
+LocIconFileName0=C:\resource\apps\swiappregintegration02_rsc.mbm
+PropertiesCount=0
+
+[swiappregintegration_case02_GE_romupgrade]
+AppRegEntriesConfigCount=2
+configsection0 = swiappregintegration_base01_GE_data_romupgrade
+configsection1 = swiappregintegration_case02_RSC_data_romupgrade
+CompareWithDb=True
+
+[swiappregintegration_base01_GE_data_romupgrade]
+AppUid=90000004
+AppFile=C:\sys\bin\swiappregintegration_base01.exe
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Group_Base01
+DefaultScreenNumber=2
+AppOpaqueDataInfoCount=0
+OwnedFileCount=0
+ServiceInfoCount=0
+LocalizableAppInfoCount=1
+LocAppLanguage0=3
+LocShortCaption0=HW_Base01_GE
+LocCaption0=HelloWorld_Base01_GE
+LocNumberOfAppIcons0=125
+LocIconFileName0=C:\resource\apps\swiappregintegration_base01_03.mbm
+LocGroupName0=Group_Base01_GE
+PropertiesCount=0
+
+[swiappregintegration03]
+sis=z:\tswi\tsis\data\swiappregintegration03_opaque.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=24
+CompareWithDb=True
+
+[u_swiappregintegration03]
+uid=80010006
+script=z:\tswi\tuiscriptadaptors\scripts\uninstall.xml
+
+[swiappregintegration_case04_noappfile]
+sis=z:\tswi\tsis\data\swiappregintegration04_noappfile.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=02
+CompareWithDb=True
+
+[swiappregintegration_case04_noappuid]
+sis=z:\tswi\tsis\data\swiappregintegration04_noappuid.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=02
+CompareWithDb=True
+
+[swiappregintegration_case04_wronguid2]
+sis=z:\tswi\tsis\data\swiappregintegration04_wronguid2.sis
+script=z:\tswi\tuiscriptadaptors\scripts\devlangsel.xml
+devicelanguage0=01
+devicelanguage1=02
+CompareWithDb=True
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/tswiappregintegration.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,155 @@
+//
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// SWI integreation test cases for appreg parsing
+//
+
+PRINT Run all SWI integreation test cases for appreg parsing
+LOAD_SUITE tuiscriptadaptors
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+LOAD_SUITE tscr
+
+// Delete the SCR Database file
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tscr\tscr_appreginfo.ini db_file 
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0001
+//! @SYMTestCaseDesc	Installs a SIS file having complete appregistration data for EN, GE and IF
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		Installs a SIS file having complete appregistration data
+//! @SYMTestExpectedResults	File installs sucessfully
+START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0001
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case01
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case01_EN
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case01_IF
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_spanish
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case01_RSC
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case01_EN
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini u_swiappregintegration_case01
+END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0001
+
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0002
+//! @SYMTestCaseDesc	Upgrades an existing SA pacakge with an SA having new application and new details for FR and GE
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		Installs a SIS file having complete appregistration data
+//! @SYMTestExpectedResults	File installs sucessfully
+START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0002
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01
+
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01_No_Eclipsing_EN
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01_No_Eclipsing_FR
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01_No_Eclipsing_RSC
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base02
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_EN
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_FR
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_GE
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_EN
+
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini u_swiappregintegration_base01
+END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0002
+
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0003
+//! @SYMTestCaseDesc	Upgrades an existing SA pacakge with an SP having new application and new details for GE
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		Installs a SIS file having complete appregistration data
+//! @SYMTestExpectedResults	File installs sucessfully
+START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0003
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01
+
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01_sp
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_GE
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_EN
+
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini u_swiappregintegration_base01
+END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0003
+
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0004
+//! @SYMTestCaseDesc	Upgrades an existing SA pacakge with an PU having new application and new details for FR and GE
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		Installs a SIS file having complete appregistration data
+//! @SYMTestExpectedResults	File installs sucessfully
+START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0004
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01
+
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01_pu
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_FR
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_GE
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_EN
+
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini u_swiappregintegration_base01
+END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0004
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0005
+//! @SYMTestCaseDesc	Installs an SA pacakge having an application with registration resource file with localized opaque data
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		Installs a SIS file having complete appregistration data
+//! @SYMTestExpectedResults	File installs sucessfully
+START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0005
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration03
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration03_RSC
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration03_IF
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini u_swiappregintegration03
+END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0005
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0006
+//! @SYMTestCaseDesc	Installs a package containg an app with registration resouce file which has no appfile name
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		
+//! @SYMTestExpectedResults	Sis installation fails
+//START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0006
+//RUN_TEST_STEP_RESULT -20 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case04_noappfile
+//END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0006
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0007
+//! @SYMTestCaseDesc	Installs a package containg an app with registration resouce file which has no application uid
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		
+//! @SYMTestExpectedResults	Sis installation fails
+//START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0007
+//RUN_TEST_STEP_RESULT -20 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case04_noappuid
+//END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0007
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-INTEGRATION-0008
+//! @SYMTestCaseDesc	Installs a package having some resource file but not application registration resource file
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		
+//! @SYMTestExpectedResults	Sis installation fails
+//START_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0008
+//RUN_TEST_STEP_RESULT -20 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case04_wronguid2
+//END_TESTCASE APPINSTALL-SWI-APPREG-INTEGRATION-0008
+
+// Ensure that SWIS shuts down after the above tests to make sure heap checks run
+RUN_TEST_STEP 5 tuiscriptadaptors SwisNotRunning
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/tswiappregintegration_stub.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,45 @@
+//
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// SWI integreation test cases for appreg parsing
+//
+
+PRINT Run all SWI integreation test cases for appreg parsing
+LOAD_SUITE tuiscriptadaptors
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+//! @SYMTestCaseID		APPINSTALL-SWI-APPREG-STUB-0001
+//! @SYMTestCaseDesc	Upgrades an existing ROM pacakge with an SA,RU having new application and new details for FR and GE
+//! @SYMTestPriority	Medium
+//! @SYMTestActions		Installs a SIS file having complete appregistration data
+//! @SYMTestExpectedResults	File installs sucessfully
+START_TESTCASE APPINSTALL-SWI-APPREG-STUB-0001
+// Check for the app reg entires from ROM, base_01 is present in ROM
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01_EN_base
+// Upgarde the ROM based package with an SA,RU
+RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base02_ru
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_EN_romupgrade
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_FR_romupgrade
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_GE_romupgrade
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_case02_EN_romupgrade
+// Uninstall the ROM Upgrade
+RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini u_swiappregintegration_base01
+// Going back to the base version in ROM
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.ini swiappregintegration_base01_EN_base
+END_TESTCASE APPINSTALL-SWI-APPREG-STUB-0001
--- a/installationservices/swi/test/tuiscriptadaptors/scripts/tuiscriptadaptors_winscw.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/scripts/tuiscriptadaptors_winscw.script	Fri Apr 16 15:05:20 2010 +0300
@@ -23,13 +23,12 @@
 //! @SYMDEF			DEF094747
 //! @SYMTestPriority		Medium
 //! @SYMTestActions		Install a SIS file , which would otherwise throw User::11 panic due to "Unique Vendor Name" exceeding descriptor's max length during AppendFormatList operation. 
-//! @SYMTestExpectedResults	The SIS file installs successfully.
+//! @SYMTestExpectedResults	The SIS file doesn't install successfully. Throws -6 as the descriptor is exceeding length
 //! @SYMDevelopedForRelease	Argus
 
 START_TESTCASE API-SEC-DEF094747-0001
 
-RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini handle_BufferOverflow1
-RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini u_handle_BufferOverflow1
+RUN_TEST_STEP_RESULT -6 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini handle_BufferOverflow1
 
 END_TESTCASE API-SEC-DEF094747-0001
 
@@ -39,13 +38,12 @@
 //! @SYMDEF			DEF094747
 //! @SYMTestPriority		Medium
 //! @SYMTestActions		Install a SIS file , which would throw User::11 panic due to "Package Name" exceeding descriptor's max length during AppendFormatList operation. 
-//! @SYMTestExpectedResults	The SIS file installs successfully.
+//! @SYMTestExpectedResults	The SIS file doesn't install successfully. Throws -6 as the descriptor is exceeding length
 //! @SYMDevelopedForRelease	Argus
 
 START_TESTCASE API-SEC-DEF094747-0002
 
-RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini handle_BufferOverflow2
-RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini u_handle_BufferOverflow2
+RUN_TEST_STEP_RESULT -6 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini handle_BufferOverflow2
 
 END_TESTCASE API-SEC-DEF094747-0002
 
@@ -55,13 +53,12 @@
 //! @SYMDEF			DEF094747
 //! @SYMTestPriority		Medium
 //! @SYMTestActions		Install a SIS file , which would otherwise throw User::11 panic due to "Vendor Name" exceeding descriptor's max length during AppendFormatList operation.
-//! @SYMTestExpectedResults	The SIS file installs successfully.
+//! @SYMTestExpectedResults	The SIS file doesn't install successfully. Throws -6 as the descriptor is exceeding length
 //! @SYMDevelopedForRelease	Argus
 
 START_TESTCASE API-SEC-DEF094747-0003
 
-RUN_TEST_STEP 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini handle_BufferOverflow3
-RUN_TEST_STEP 100 tuiscriptadaptors UninstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini u_handle_BufferOverflow3
+RUN_TEST_STEP_RESULT -6 100 tuiscriptadaptors InstallStep z:\tswi\tuiscriptadaptors\scripts\tuiscriptadaptors.ini handle_BufferOverflow3
 
 END_TESTCASE API-SEC-DEF094747-0003
 
--- a/installationservices/swi/test/tuiscriptadaptors/tswisserver.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/tswisserver.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -233,6 +233,8 @@
 		testStep = new CSwisUninstallPkgsStep(CSwisUninstallPkgsStep::ERemovePkgs);
 	else if (aStepName == KSwisGetPackageDetails)	// Get Package Details
 		testStep = new CSwisUninstallPkgsStep(CSwisUninstallPkgsStep::EPkgDetails);
+	else if (aStepName == KSwisGetPublishedUidArrayStep)  // Get Published Package Uid's Array
+	        testStep = new CSwisCheckPublishUidStep();
 	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	else if (aStepName == KCheckSCRFieldStep)	// Check the SCR components' 'Origin Verified', 'Known Revoked', 'DRM Ptotected' field values.
 		testStep = new CCheckScrFieldStep();
--- a/installationservices/swi/test/tuiscriptadaptors/tswisstep.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/tswisstep.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -40,6 +40,7 @@
 #include "pkgremover.h"
 #include "pkgremovererrors.h"
 #include "sisregistryaccess_client.h"
+#include <swi/swiutils.h>
 
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include <usif/scr/scr.h>
@@ -2629,6 +2630,139 @@
 	return TestStepResult();
 	}
 
+
+//
+// CSwisCheckPublishUidStep
+//
+
+CSwisCheckPublishUidStep::CSwisCheckPublishUidStep()
+    {
+    // Call base class method to set up the human readable name for logging
+    SetTestStepName(KSwisGetPublishedUidArrayStep);
+    }
+      
+/**
+ * Override of base class virtual. Prepares for the test run of SWIS
+ * @return TVerdict code
+ */
+TVerdict CSwisCheckPublishUidStep::doTestStepPreambleL()
+    {
+    INFO_PRINTF1(_L("CSwisCheckPublishUidStep::doTestStepPreambleL"));
+    _LIT(KDefineProperty, "DefineProperty");
+    iJustDefineProperty=EFalse;
+    if (GetBoolFromConfig(ConfigSection(),KDefineProperty,iJustDefineProperty) )
+        {
+        if(iJustDefineProperty)
+            {
+            INFO_PRINTF1(_L("CSwisCheckPublishUidStep is running in define Mode..just define the property"));
+            return TestStepResult();
+            }
+        }
+    
+	_LIT(KPublishedUidCount, "PublishedUidCount");
+	_LIT(KPublishedUidValue, "PublishedUidValue");
+	TInt expectedUidCount;
+	TBuf<20> publishedUidParam;
+	
+	if (!GetIntFromConfig(ConfigSection(),KPublishedUidCount,expectedUidCount))
+		{
+        ERR_PRINTF1(_L("No uid mentioned in .ini"));
+		return TestStepResult();
+		}
+
+	iExpectedUidList[0].iUid = expectedUidCount;
+	if(expectedUidCount>=KTestMaxUidCount-1)
+	    {
+        ERR_PRINTF1(_L("The buffer available holds upto 15 Uids"));
+        return TestStepResult();
+	    }
+	
+	for (TInt i=0; i<iExpectedUidList[0].iUid; i++)
+		{
+        TInt uid;
+		publishedUidParam = KPublishedUidValue;
+		GenerateIndexedAttributeNameL(publishedUidParam, i);
+		if (!GetHexFromConfig(ConfigSection(), publishedUidParam, uid))
+			{
+   			ERR_PRINTF1(_L("Missing uid"));
+			continue;
+   			}
+		TUid pkgUid;
+		pkgUid.iUid=uid;
+		iExpectedUidList[i+1]= pkgUid;
+		}
+    return TestStepResult();
+    }
+	
+void CSwisCheckPublishUidStep::GenerateIndexedAttributeNameL(TDes& aInitialAttributeName, TInt aIndex)
+	{
+	const TInt MAX_INT_STR_LEN = 8;
+	TBuf<MAX_INT_STR_LEN> integerAppendStr;
+	integerAppendStr.Format(_L("%d"), aIndex);
+	aInitialAttributeName.Append(integerAppendStr);
+	}
+
+
+TVerdict CSwisCheckPublishUidStep::doTestStepL()
+    {
+    INFO_PRINTF1(KSwisGetPublishedUidArrayStep);
+    TInt err=0;
+    if(iJustDefineProperty)
+        {
+         err = RProperty::Define(KUidSystemCategory, KSWIUidsCurrentlyBeingProcessed, RProperty::EByteArray);
+        if (err != KErrNone && err != KErrAlreadyExists)
+            User::Leave(err);
+        return TestStepResult();
+        }
+      
+    TUid expUid;
+    TInt expCount;
+    RArray<TUid> retrivedUidList;
+    CleanupClosePushL(retrivedUidList);
+    expCount=iExpectedUidList[0].iUid;
+    if(KErrNone!=GetAllUids(retrivedUidList))
+        {
+        ERR_PRINTF1(_L("Failed to read all uids "));
+        SetTestStepResult(EFail);
+        CleanupStack::PopAndDestroy(&retrivedUidList);
+        return TestStepResult();
+        }
+    if (expCount!=retrivedUidList.Count())
+        {
+        ERR_PRINTF3(_L("expected and read count is not same , expected count is %d  read count is %d"),expCount, retrivedUidList.Count());
+        SetTestStepResult(EFail);
+        CleanupStack::PopAndDestroy(&retrivedUidList);
+        return TestStepResult();
+        }
+	for(TInt i=0;i<expCount;i++)
+        {
+        expUid=iExpectedUidList[i+1];
+        INFO_PRINTF2(_L("Expected package uid %x"), expUid.iUid);
+        if (retrivedUidList.Find(expUid)==KErrNotFound)
+            {
+            ERR_PRINTF3(_L("Expected uid %x is not found and return code for retrivedUidList.Find is %d "), expUid.iUid,err);
+            SetTestStepResult(EFail);
+            }
+        }
+    CleanupStack::PopAndDestroy(&retrivedUidList);
+    return TestStepResult();
+    }
+
+TVerdict CSwisCheckPublishUidStep::doTestStepPostambleL()
+    {
+    if(!iJustDefineProperty)
+           {
+        TInt err = RProperty::Delete(KUidSystemCategory,KSWIUidsCurrentlyBeingProcessed);
+        if(err != KErrNone)
+            {
+            ERR_PRINTF1(_L("Not able to delete property "));
+            }
+           return TestStepResult();
+           }
+           
+    return TestStepResult();
+    }
+
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 /**
  * Override of base class pure virtual
--- a/installationservices/swi/test/tuiscriptadaptors/tswisstep.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/tswisstep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -369,6 +369,7 @@
 _LIT(KSwisListUninstallPkgsStep, "ListUninstallPkgsStep");
 _LIT(KSwisRemoveUninstallPkgsStep, "RemoveUninstallPkgsStep");
 _LIT(KSwisGetPackageDetails, "GetPackageDetails");
+_LIT(KSwisGetPublishedUidArrayStep, "GetPublishedUidArrayStep");
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 _LIT(KCheckSCRFieldStep, "CheckSCRFieldStep");
 _LIT(KCheckSCRCompPropertyStep, "CheckSCRCompPropertyStep");
@@ -490,4 +491,26 @@
 #endif
 	};
 	
+/**
+ * Check Published Uid test step class
+ * @test
+ * @internalComponent
+ */
+const TInt KTestMaxUidCount=20; //One more than the maximum number of Uids that the array, publishing the Uids, holds
+class CSwisCheckPublishUidStep : public CSwisTestStep
+    {
+public:
+    CSwisCheckPublishUidStep();
+    virtual TVerdict doTestStepPreambleL();
+    virtual TVerdict doTestStepPostambleL();
+    virtual TVerdict doTestStepL();
+
+private:
+	void GenerateIndexedAttributeNameL(TDes& aInitialAttributeName, TInt aIndex);
+	
+private:
+TUid iExpectedUidList[KTestMaxUidCount];    //An array whose first element holds the number of uids in the subsequent indices of the array, followed by the the list of uids that are being published.
+TBool iJustDefineProperty;
+	};
+
 #endif // __TSWISSTEP_H__
--- a/installationservices/swi/test/tuiscriptadaptors/tuiscriptadaptors.mmh	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swi/test/tuiscriptadaptors/tuiscriptadaptors.mmh	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -60,6 +60,7 @@
 library 		charconv.lib
 library			pkgremover.lib
 library         	inetprotutil.lib
+library			swiutils.lib
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 LIBRARY 		scrclient.lib
 #endif
Binary file installationservices/swiconfig/conf/appinstallconfig.confml has changed
Binary file installationservices/swiconfig/conf/appinstallconfig_2002cff6.crml has changed
--- a/installationservices/swiconfig/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swiconfig/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -32,6 +32,13 @@
 ../swi/swipolicy.ini /epoc32/release/winscw/udeb/z/system/data/swipolicy.ini
 ../swi/swipolicy.ini /epoc32/release/winscw/urel/z/system/data/swipolicy.ini
 ../swi/swipolicy.ini /epoc32/data/z/system/data/swipolicy.ini
+../swi/2002cff6.txt /epoc32/release/winscw/udeb/z/private/10202be9/2002cff6.txt
+../swi/2002cff6.txt /epoc32/release/winscw/urel/z/private/10202be9/2002cff6.txt
+../swi/2002cff6.txt /epoc32/data/z/system/data/2002cff6.txt
+
+// ConfML Files
+../conf/appinstallconfig.confml            OS_LAYER_EXPORTS_CONFML(appinstallconfig.confml)
+../conf/appinstallconfig_2002cff6.crml	 OS_LAYER_EXPORTS_CRML(appinstallconfig_2002cff6.crml)
 #endif
 
 ../swi/swiconfig.iby /epoc32/rom/include/swiconfig.iby
@@ -51,6 +58,11 @@
 ../usif/scr/scr.db /epoc32/release/winscw/urel/z/sys/install/scr/provisioned/scr.db
 // Export iby file for SifLauncher configuration
 ../usif/siflauncher/siflauncherconfig.iby /epoc32/rom/include/siflauncherconfig.iby
+
+//Exporting SCR's Cenrep configuration file to EPOC.
+../usif/scr/10285bc0.txt /epoc32/release/winscw/udeb/z/private/10202be9/10285bc0.txt
+../usif/scr/10285bc0.txt /epoc32/release/winscw/urel/z/private/10202be9/10285bc0.txt
+
 #endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 PRJ_TESTEXPORTS
--- a/installationservices/swiconfig/group/install_config.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swiconfig/group/install_config.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	install_config
 source  	\sf\mw\appinstall\installationservices\swiconfig
 binary  	\sf\mw\appinstall\installationservices\swiconfig\group all
Binary file installationservices/swiconfig/swi/2002cff6.txt has changed
--- a/installationservices/swiconfig/swi/swiconfig.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swiconfig/swi/swiconfig.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -19,6 +19,7 @@
 #define __SWICONFIG_IBY__
 
 data = EPOCROOT##epoc32\data\z\system\data\swipolicy.ini \system\data\swipolicy.ini
+data = EPOCROOT##epoc32\data\z\system\data\2002cff6.txt \private\10202be9\2002cff6.txt
 data = EPOCROOT##epoc32\data\z\system\data\sisregistry_5.3.txt \system\data\sisregistry_5.3.txt
 data = MULTI_LINGUIFY(RSC ZRESOURCE\Errors\swierrors Resource\Errors\swierrors)
 
Binary file installationservices/swiconfig/usif/scr/10285bc0.txt has changed
Binary file installationservices/swiconfig/usif/scr/scr.db has changed
Binary file installationservices/swiconfig/usif/scr/update_db_production.xml has changed
--- a/installationservices/swidevicetools/group/security_switools_device.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swidevicetools/group/security_switools_device.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_switools_device
 source	\sf\mw\appinstall\installationservices\swidevicetools
 binary	\sf\mw\appinstall\installationservices\swidevicetools\group	all
--- a/installationservices/swinstallationfw/bwins/siftransportu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/bwins/siftransportu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -1,73 +1,82 @@
 EXPORTS
-	?PrepareResultsForIpcL@COpaqueNamedParams@Usif@@QAEXAAVTIpcArgs@@H@Z @ 1 NONAME ; void Usif::COpaqueNamedParams::PrepareResultsForIpcL(class TIpcArgs &, int)
-	?HasCapability@TSecurityContext@Usif@@QBEHW4TCapability@@@Z @ 2 NONAME ; int Usif::TSecurityContext::HasCapability(enum TCapability) const
-	?NewL@CComponentInfo@Usif@@SAPAV12@XZ @ 3 NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewL(void)
-	?CancelOperation@RSifTransportClient@Usif@@QAEXXZ @ 4 NONAME ; void Usif::RSifTransportClient::CancelOperation(void)
-	??0TTransportTaskParams@Usif@@QAE@XZ @ 5 NONAME ; Usif::TTransportTaskParams::TTransportTaskParams(void)
-	?HasCapabilityL@TSecurityContext@Usif@@QBEXW4TCapability@@@Z @ 6 NONAME ; void Usif::TSecurityContext::HasCapabilityL(enum TCapability) const
-	?Authenticity@CNode@CComponentInfo@Usif@@QBE?AW4TAuthenticity@3@XZ @ 7 NONAME ; enum Usif::TAuthenticity Usif::CComponentInfo::CNode::Authenticity(void) const
-	?SetRootNodeAsChildL@CComponentInfo@Usif@@QAEXAAVCNode@12@@Z @ 8 NONAME ; void Usif::CComponentInfo::SetRootNodeAsChildL(class Usif::CComponentInfo::CNode &)
-	?Activate@RSifTransportClient@Usif@@QAEXHAAVTRequestStatus@@@Z @ 9 NONAME ; void Usif::RSifTransportClient::Activate(int, class TRequestStatus &)
-	?NewSifTransportServerLC@CSifTransportServer@Usif@@SAPAVCScsServer@@XZ @ 10 NONAME ; class CScsServer * Usif::CSifTransportServer::NewSifTransportServerLC(void)
-	?NewLC@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 11 NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewLC(void)
-	?Uninstall@RSifTransportClient@Usif@@QAEXHAAVTRequestStatus@@H@Z @ 12 NONAME ; void Usif::RSifTransportClient::Uninstall(int, class TRequestStatus &, int)
-	?InstallStatus@CNode@CComponentInfo@Usif@@QBE?AW4TInstallStatus@3@XZ @ 13 NONAME ; enum Usif::TInstallStatus Usif::CComponentInfo::CNode::InstallStatus(void) const
-	?Cleanup@COpaqueNamedParams@Usif@@QAEXXZ @ 14 NONAME ; void Usif::COpaqueNamedParams::Cleanup(void)
-	??0RSifTransportClient@Usif@@QAE@XZ @ 15 NONAME ; Usif::RSifTransportClient::RSifTransportClient(void)
-	?CountL@COpaqueNamedParams@Usif@@QBEHXZ @ 16 NONAME ; int Usif::COpaqueNamedParams::CountL(void) const
-	?SecurityContext@CSifTransportTask@Usif@@IBEPBVTSecurityContext@2@XZ @ 17 NONAME ; class Usif::TSecurityContext const * Usif::CSifTransportTask::SecurityContext(void) const
-	?RootNodeL@CComponentInfo@Usif@@QBEABVCNode@12@XZ @ 18 NONAME ; class Usif::CComponentInfo::CNode const & Usif::CComponentInfo::RootNodeL(void) const
-	??1CNode@CComponentInfo@Usif@@UAE@XZ @ 19 NONAME ; Usif::CComponentInfo::CNode::~CNode(void)
-	?GetComponentInfo@RSifTransportClient@Usif@@QAEXABVTDesC16@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 20 NONAME ; void Usif::RSifTransportClient::GetComponentInfo(class TDesC16 const &, class Usif::CComponentInfo &, class TRequestStatus &)
-	?Deactivate@RSifTransportClient@Usif@@QAEXHAAVTRequestStatus@@@Z @ 21 NONAME ; void Usif::RSifTransportClient::Deactivate(int, class TRequestStatus &)
-	?Install@RSifTransportClient@Usif@@QAEXAAVRFile@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 22 NONAME ; void Usif::RSifTransportClient::Install(class RFile &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
-	?ExternalizeL@COpaqueNamedParams@Usif@@QBEXAAVRWriteStream@@@Z @ 23 NONAME ; void Usif::COpaqueNamedParams::ExternalizeL(class RWriteStream &) const
-	?FileHandle@CSifTransportTask@Usif@@IAEPAVRFile@@XZ @ 24 NONAME ; class RFile * Usif::CSifTransportTask::FileHandle(void)
-	?Vendor@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 25 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Vendor(void) const
-	?ComponentName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 26 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::ComponentName(void) const
-	?NewLC@CNode@CComponentInfo@Usif@@SAPAV123@ABVTDesC16@@000W4TScomoState@3@W4TInstallStatus@3@H0W4TAuthenticity@3@ABVTCapabilitySet@@HHPAV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@@Z @ 27 NONAME ; class Usif::CComponentInfo::CNode * Usif::CComponentInfo::CNode::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum Usif::TScomoState, enum Usif::TInstallStatus, int, class TDesC16 const &, enum Usif::TAuthenticity, class TCapabilitySet const &, int, class RPointerArray<class Usif::CComponentInfo::CNode> *)
-	??0TSecurityContext@Usif@@AAE@ABVRMessage2@@@Z @ 28 NONAME ; Usif::TSecurityContext::TSecurityContext(class RMessage2 const &)
-	??1COpaqueNamedParams@Usif@@UAE@XZ @ 29 NONAME ; Usif::COpaqueNamedParams::~COpaqueNamedParams(void)
-	?SoftwareTypeName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 30 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::SoftwareTypeName(void) const
-	?UserGrantableCaps@CNode@CComponentInfo@Usif@@QBEABVTCapabilitySet@@XZ @ 31 NONAME ; class TCapabilitySet const & Usif::CComponentInfo::CNode::UserGrantableCaps(void) const
-	?CancelImpl@CSifTransportTask@Usif@@MAEXXZ @ 32 NONAME ; void Usif::CSifTransportTask::CancelImpl(void)
-	?CustomResults@CSifTransportTask@Usif@@IAEPAVCOpaqueNamedParams@2@XZ @ 33 NONAME ; class Usif::COpaqueNamedParams * Usif::CSifTransportTask::CustomResults(void)
-	?IntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@@Z @ 34 NONAME ; int Usif::COpaqueNamedParams::IntByNameL(class TDesC16 const &) const
-	?Install@RSifTransportClient@Usif@@QAEXAAVRFile@@AAVTRequestStatus@@H@Z @ 35 NONAME ; void Usif::RSifTransportClient::Install(class RFile &, class TRequestStatus &, int)
-	?StringByNameL@COpaqueNamedParams@Usif@@QBEABVTDesC16@@ABV3@@Z @ 36 NONAME ; class TDesC16 const & Usif::COpaqueNamedParams::StringByNameL(class TDesC16 const &) const
-	??0CSifTransportTask@Usif@@IAE@AAUTTransportTaskParams@1@H@Z @ 37 NONAME ; Usif::CSifTransportTask::CSifTransportTask(struct Usif::TTransportTaskParams &, int)
-	??1CSifTransportTask@Usif@@MAE@XZ @ 38 NONAME ; Usif::CSifTransportTask::~CSifTransportTask(void)
-	?ScomoState@CNode@CComponentInfo@Usif@@QBE?AW4TScomoState@3@XZ @ 39 NONAME ; enum Usif::TScomoState Usif::CComponentInfo::CNode::ScomoState(void) const
-	?AddIntL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@H@Z @ 40 NONAME ; void Usif::COpaqueNamedParams::AddIntL(class TDesC16 const &, int)
-	?Install@RSifTransportClient@Usif@@QAEXABVTDesC16@@AAVTRequestStatus@@H@Z @ 41 NONAME ; void Usif::RSifTransportClient::Install(class TDesC16 const &, class TRequestStatus &, int)
-	?Children@CNode@CComponentInfo@Usif@@QBEABV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@XZ @ 42 NONAME ; class RPointerArray<class Usif::CComponentInfo::CNode> const & Usif::CComponentInfo::CNode::Children(void) const
-	?FileName@CSifTransportTask@Usif@@IBEPBVTDesC16@@XZ @ 43 NONAME ; class TDesC16 const * Usif::CSifTransportTask::FileName(void) const
-	?Uninstall@RSifTransportClient@Usif@@QAEXHABVCOpaqueNamedParams@2@AAV32@AAVTRequestStatus@@H@Z @ 44 NONAME ; void Usif::RSifTransportClient::Uninstall(int, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
-	?PrepareForIpcL@CComponentInfo@Usif@@QAEXAAVTIpcArgs@@H@Z @ 45 NONAME ; void Usif::CComponentInfo::PrepareForIpcL(class TIpcArgs &, int)
-	?GetComponentInfo@RSifTransportClient@Usif@@QAEXAAVRFile@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 46 NONAME ; void Usif::RSifTransportClient::GetComponentInfo(class RFile &, class Usif::CComponentInfo &, class TRequestStatus &)
-	?NewLC@CComponentInfo@Usif@@SAPAV12@XZ @ 47 NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewLC(void)
-	?GetIntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@AAH@Z @ 48 NONAME ; int Usif::COpaqueNamedParams::GetIntByNameL(class TDesC16 const &, int &) const
-	?SetRootNodeL@CComponentInfo@Usif@@QAEXPAVCNode@12@@Z @ 49 NONAME ; void Usif::CComponentInfo::SetRootNodeL(class Usif::CComponentInfo::CNode *)
-	?CustomArguments@CSifTransportTask@Usif@@IBEPBVCOpaqueNamedParams@2@XZ @ 50 NONAME ; class Usif::COpaqueNamedParams const * Usif::CSifTransportTask::CustomArguments(void) const
-	?GetNamesL@COpaqueNamedParams@Usif@@QBEXAAV?$RPointerArray@VHBufC16@@@@@Z @ 51 NONAME ; void Usif::COpaqueNamedParams::GetNamesL(class RPointerArray<class HBufC16> &) const
-	?MaxInstalledSize@CNode@CComponentInfo@Usif@@QBEHXZ @ 52 NONAME ; int Usif::CComponentInfo::CNode::MaxInstalledSize(void) const
-	?Version@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 53 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Version(void) const
-	?RequestStatus@CSifTransportTask@Usif@@IAEPAVTRequestStatus@@XZ @ 54 NONAME ; class TRequestStatus * Usif::CSifTransportTask::RequestStatus(void)
-	?Install@RSifTransportClient@Usif@@QAEXABVTDesC16@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 55 NONAME ; void Usif::RSifTransportClient::Install(class TDesC16 const &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
-	?AddStringL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@0@Z @ 56 NONAME ; void Usif::COpaqueNamedParams::AddStringL(class TDesC16 const &, class TDesC16 const &)
-	?ExternalizeL@CComponentInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 57 NONAME ; void Usif::CComponentInfo::ExternalizeL(class RWriteStream &) const
-	?AddChildL@CNode@CComponentInfo@Usif@@QAEXPAV123@@Z @ 58 NONAME ; void Usif::CComponentInfo::CNode::AddChildL(class Usif::CComponentInfo::CNode *)
-	?ComponentId@CNode@CComponentInfo@Usif@@QBEHXZ @ 59 NONAME ; int Usif::CComponentInfo::CNode::ComponentId(void) const
-	?ComponentId@CSifTransportTask@Usif@@IBEHXZ @ 60 NONAME ; int Usif::CSifTransportTask::ComponentId(void) const
-	?StartTransportServer@Usif@@YAHABVTDesC16@@ABVTVersion@@P6APAVCSifTransportTask@1@W4TTaskType@TransportTaskFactory@1@AAUTTransportTaskParams@1@@ZH@Z @ 61 NONAME ; int Usif::StartTransportServer(class TDesC16 const &, class TVersion const &, class Usif::CSifTransportTask * (*)(enum Usif::TransportTaskFactory::TTaskType, struct Usif::TTransportTaskParams &), int)
-	?Close@RSifTransportClient@Usif@@QAEXXZ @ 62 NONAME ; void Usif::RSifTransportClient::Close(void)
-	?SecureId@TSecurityContext@Usif@@QBE?AVTSecureId@@XZ @ 63 NONAME ; class TSecureId Usif::TSecurityContext::SecureId(void) const
-	?NewL@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 64 NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewL(void)
-	?Connect@RSifTransportClient@Usif@@QAEHABVTDesC16@@ABVTVersion@@0VTUid@@@Z @ 65 NONAME ; int Usif::RSifTransportClient::Connect(class TDesC16 const &, class TVersion const &, class TDesC16 const &, class TUid)
-	??1CComponentInfo@Usif@@UAE@XZ @ 66 NONAME ; Usif::CComponentInfo::~CComponentInfo(void)
-	?GlobalComponentId@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 67 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::GlobalComponentId(void) const
-	?ComponentInfo@CSifTransportTask@Usif@@IAEPAVCComponentInfo@2@XZ @ 68 NONAME ; class Usif::CComponentInfo * Usif::CSifTransportTask::ComponentInfo(void)
-	?InternalizeL@COpaqueNamedParams@Usif@@QAEXAAVRReadStream@@@Z @ 69 NONAME ; void Usif::COpaqueNamedParams::InternalizeL(class RReadStream &)
-	?PrepareArgumentsForIpcL@COpaqueNamedParams@Usif@@QBEXAAVTIpcArgs@@H@Z @ 70 NONAME ; void Usif::COpaqueNamedParams::PrepareArgumentsForIpcL(class TIpcArgs &, int) const
-	?HasExecutable@CNode@CComponentInfo@Usif@@QBEHXZ @ 71 NONAME ; int Usif::CComponentInfo::CNode::HasExecutable(void) const
+	?PrepareResultsForIpcL@COpaqueNamedParams@Usif@@QAEXAAVTIpcArgs@@H@Z @ 1  NONAME ; void Usif::COpaqueNamedParams::PrepareResultsForIpcL(class TIpcArgs &, int)
+	?HasCapability@TSecurityContext@Usif@@QBEHW4TCapability@@@Z @ 2  NONAME ; int Usif::TSecurityContext::HasCapability(enum TCapability) const
+	?NewL@CComponentInfo@Usif@@SAPAV12@XZ @ 3  NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewL(void)
+	?CancelOperation@RSifTransportClient@Usif@@QAEXXZ @ 4  NONAME ; void Usif::RSifTransportClient::CancelOperation(void)
+	??0TTransportTaskParams@Usif@@QAE@XZ @ 5  NONAME ; Usif::TTransportTaskParams::TTransportTaskParams(void)
+	?HasCapabilityL@TSecurityContext@Usif@@QBEXW4TCapability@@@Z @ 6  NONAME ; void Usif::TSecurityContext::HasCapabilityL(enum TCapability) const
+	?Authenticity@CNode@CComponentInfo@Usif@@QBE?AW4TAuthenticity@3@XZ @ 7  NONAME ; enum Usif::TAuthenticity Usif::CComponentInfo::CNode::Authenticity(void) const
+	?SetRootNodeAsChildL@CComponentInfo@Usif@@QAEXAAVCNode@12@@Z @ 8  NONAME ; void Usif::CComponentInfo::SetRootNodeAsChildL(class Usif::CComponentInfo::CNode &)
+	?Activate@RSifTransportClient@Usif@@QAEXHAAVTRequestStatus@@@Z @ 9  NONAME ; void Usif::RSifTransportClient::Activate(int, class TRequestStatus &)
+	?NewSifTransportServerLC@CSifTransportServer@Usif@@SAPAVCScsServer@@XZ @ 10  NONAME ; class CScsServer * Usif::CSifTransportServer::NewSifTransportServerLC(void)
+	?NewLC@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 11  NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewLC(void)
+	?Uninstall@RSifTransportClient@Usif@@QAEXHAAVTRequestStatus@@H@Z @ 12  NONAME ; void Usif::RSifTransportClient::Uninstall(int, class TRequestStatus &, int)
+	?InstallStatus@CNode@CComponentInfo@Usif@@QBE?AW4TInstallStatus@3@XZ @ 13  NONAME ; enum Usif::TInstallStatus Usif::CComponentInfo::CNode::InstallStatus(void) const
+	?Cleanup@COpaqueNamedParams@Usif@@QAEXXZ @ 14  NONAME ; void Usif::COpaqueNamedParams::Cleanup(void)
+	??0RSifTransportClient@Usif@@QAE@XZ @ 15  NONAME ; Usif::RSifTransportClient::RSifTransportClient(void)
+	?CountL@COpaqueNamedParams@Usif@@QBEHXZ @ 16  NONAME ; int Usif::COpaqueNamedParams::CountL(void) const
+	?SecurityContext@CSifTransportTask@Usif@@IBEPBVTSecurityContext@2@XZ @ 17  NONAME ; class Usif::TSecurityContext const * Usif::CSifTransportTask::SecurityContext(void) const
+	?RootNodeL@CComponentInfo@Usif@@QBEABVCNode@12@XZ @ 18  NONAME ; class Usif::CComponentInfo::CNode const & Usif::CComponentInfo::RootNodeL(void) const
+	??1CNode@CComponentInfo@Usif@@UAE@XZ @ 19  NONAME ; Usif::CComponentInfo::CNode::~CNode(void)
+	?GetComponentInfo@RSifTransportClient@Usif@@QAEXABVTDesC16@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 20  NONAME ; void Usif::RSifTransportClient::GetComponentInfo(class TDesC16 const &, class Usif::CComponentInfo &, class TRequestStatus &)
+	?Deactivate@RSifTransportClient@Usif@@QAEXHAAVTRequestStatus@@@Z @ 21  NONAME ; void Usif::RSifTransportClient::Deactivate(int, class TRequestStatus &)
+	?Install@RSifTransportClient@Usif@@QAEXAAVRFile@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 22  NONAME ; void Usif::RSifTransportClient::Install(class RFile &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
+	?ExternalizeL@COpaqueNamedParams@Usif@@QBEXAAVRWriteStream@@@Z @ 23  NONAME ; void Usif::COpaqueNamedParams::ExternalizeL(class RWriteStream &) const
+	?FileHandle@CSifTransportTask@Usif@@IAEPAVRFile@@XZ @ 24  NONAME ; class RFile * Usif::CSifTransportTask::FileHandle(void)
+	?Vendor@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 25  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Vendor(void) const
+	?ComponentName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 26  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::ComponentName(void) const
+	?NewLC@CNode@CComponentInfo@Usif@@SAPAV123@ABVTDesC16@@000W4TScomoState@3@W4TInstallStatus@3@H0W4TAuthenticity@3@ABVTCapabilitySet@@HHHPAV?$RPointerArray@VCApplicationInfo@CComponentInfo@Usif@@@@PAV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@@Z @ 27  NONAME ; class Usif::CComponentInfo::CNode * Usif::CComponentInfo::CNode::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum Usif::TScomoState, enum Usif::TInstallStatus, int, class TDesC16 const &, enum Usif::TAuthenticity, class TCapabilitySet const &, int, int, int, class RPointerArray<class Usif::CComponentInfo::CApplicationInfo> *, class RPointerArray<class Usif::CComponentInfo::CNode> *)
+	??0TSecurityContext@Usif@@AAE@ABVRMessage2@@@Z @ 28  NONAME ; Usif::TSecurityContext::TSecurityContext(class RMessage2 const &)
+	??1COpaqueNamedParams@Usif@@UAE@XZ @ 29  NONAME ; Usif::COpaqueNamedParams::~COpaqueNamedParams(void)
+	?SoftwareTypeName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 30  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::SoftwareTypeName(void) const
+	?UserGrantableCaps@CNode@CComponentInfo@Usif@@QBEABVTCapabilitySet@@XZ @ 31  NONAME ; class TCapabilitySet const & Usif::CComponentInfo::CNode::UserGrantableCaps(void) const
+	?CancelImpl@CSifTransportTask@Usif@@MAEXXZ @ 32  NONAME ; void Usif::CSifTransportTask::CancelImpl(void)
+	?CustomResults@CSifTransportTask@Usif@@IAEPAVCOpaqueNamedParams@2@XZ @ 33  NONAME ; class Usif::COpaqueNamedParams * Usif::CSifTransportTask::CustomResults(void)
+	?IntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@@Z @ 34  NONAME ; int Usif::COpaqueNamedParams::IntByNameL(class TDesC16 const &) const
+	?Install@RSifTransportClient@Usif@@QAEXAAVRFile@@AAVTRequestStatus@@H@Z @ 35  NONAME ; void Usif::RSifTransportClient::Install(class RFile &, class TRequestStatus &, int)
+	?StringByNameL@COpaqueNamedParams@Usif@@QBEABVTDesC16@@ABV3@@Z @ 36  NONAME ; class TDesC16 const & Usif::COpaqueNamedParams::StringByNameL(class TDesC16 const &) const
+	??0CSifTransportTask@Usif@@IAE@AAUTTransportTaskParams@1@H@Z @ 37  NONAME ; Usif::CSifTransportTask::CSifTransportTask(struct Usif::TTransportTaskParams &, int)
+	??1CSifTransportTask@Usif@@MAE@XZ @ 38  NONAME ; Usif::CSifTransportTask::~CSifTransportTask(void)
+	?ScomoState@CNode@CComponentInfo@Usif@@QBE?AW4TScomoState@3@XZ @ 39  NONAME ; enum Usif::TScomoState Usif::CComponentInfo::CNode::ScomoState(void) const
+	?AddIntL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@H@Z @ 40  NONAME ; void Usif::COpaqueNamedParams::AddIntL(class TDesC16 const &, int)
+	?Install@RSifTransportClient@Usif@@QAEXABVTDesC16@@AAVTRequestStatus@@H@Z @ 41  NONAME ; void Usif::RSifTransportClient::Install(class TDesC16 const &, class TRequestStatus &, int)
+	?Children@CNode@CComponentInfo@Usif@@QBEABV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@XZ @ 42  NONAME ; class RPointerArray<class Usif::CComponentInfo::CNode> const & Usif::CComponentInfo::CNode::Children(void) const
+	?FileName@CSifTransportTask@Usif@@IBEPBVTDesC16@@XZ @ 43  NONAME ; class TDesC16 const * Usif::CSifTransportTask::FileName(void) const
+	?Uninstall@RSifTransportClient@Usif@@QAEXHABVCOpaqueNamedParams@2@AAV32@AAVTRequestStatus@@H@Z @ 44  NONAME ; void Usif::RSifTransportClient::Uninstall(int, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
+	?PrepareForIpcL@CComponentInfo@Usif@@QAEXAAVTIpcArgs@@H@Z @ 45  NONAME ; void Usif::CComponentInfo::PrepareForIpcL(class TIpcArgs &, int)
+	?GetComponentInfo@RSifTransportClient@Usif@@QAEXAAVRFile@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 46  NONAME ; void Usif::RSifTransportClient::GetComponentInfo(class RFile &, class Usif::CComponentInfo &, class TRequestStatus &)
+	?NewLC@CComponentInfo@Usif@@SAPAV12@XZ @ 47  NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewLC(void)
+	?GetIntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@AAH@Z @ 48  NONAME ; int Usif::COpaqueNamedParams::GetIntByNameL(class TDesC16 const &, int &) const
+	?SetRootNodeL@CComponentInfo@Usif@@QAEXPAVCNode@12@@Z @ 49  NONAME ; void Usif::CComponentInfo::SetRootNodeL(class Usif::CComponentInfo::CNode *)
+	?CustomArguments@CSifTransportTask@Usif@@IBEPBVCOpaqueNamedParams@2@XZ @ 50  NONAME ; class Usif::COpaqueNamedParams const * Usif::CSifTransportTask::CustomArguments(void) const
+	?GetNamesL@COpaqueNamedParams@Usif@@QBEXAAV?$RPointerArray@VHBufC16@@@@@Z @ 51  NONAME ; void Usif::COpaqueNamedParams::GetNamesL(class RPointerArray<class HBufC16> &) const
+	?MaxInstalledSize@CNode@CComponentInfo@Usif@@QBEHXZ @ 52  NONAME ; int Usif::CComponentInfo::CNode::MaxInstalledSize(void) const
+	?Version@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 53  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Version(void) const
+	?RequestStatus@CSifTransportTask@Usif@@IAEPAVTRequestStatus@@XZ @ 54  NONAME ; class TRequestStatus * Usif::CSifTransportTask::RequestStatus(void)
+	?Install@RSifTransportClient@Usif@@QAEXABVTDesC16@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 55  NONAME ; void Usif::RSifTransportClient::Install(class TDesC16 const &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
+	?AddStringL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@0@Z @ 56  NONAME ; void Usif::COpaqueNamedParams::AddStringL(class TDesC16 const &, class TDesC16 const &)
+	?ExternalizeL@CComponentInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 57  NONAME ; void Usif::CComponentInfo::ExternalizeL(class RWriteStream &) const
+	?AddChildL@CNode@CComponentInfo@Usif@@QAEXPAV123@@Z @ 58  NONAME ; void Usif::CComponentInfo::CNode::AddChildL(class Usif::CComponentInfo::CNode *)
+	?ComponentId@CNode@CComponentInfo@Usif@@QBEHXZ @ 59  NONAME ; int Usif::CComponentInfo::CNode::ComponentId(void) const
+	?ComponentId@CSifTransportTask@Usif@@IBEHXZ @ 60  NONAME ; int Usif::CSifTransportTask::ComponentId(void) const
+	?StartTransportServer@Usif@@YAHABVTDesC16@@ABVTVersion@@P6APAVCSifTransportTask@1@W4TTaskType@TransportTaskFactory@1@AAUTTransportTaskParams@1@@ZH@Z @ 61  NONAME ; int Usif::StartTransportServer(class TDesC16 const &, class TVersion const &, class Usif::CSifTransportTask * (*)(enum Usif::TransportTaskFactory::TTaskType, struct Usif::TTransportTaskParams &), int)
+	?Close@RSifTransportClient@Usif@@QAEXXZ @ 62  NONAME ; void Usif::RSifTransportClient::Close(void)
+	?SecureId@TSecurityContext@Usif@@QBE?AVTSecureId@@XZ @ 63  NONAME ; class TSecureId Usif::TSecurityContext::SecureId(void) const
+	?NewL@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 64  NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewL(void)
+	?Connect@RSifTransportClient@Usif@@QAEHABVTDesC16@@ABVTVersion@@0VTUid@@@Z @ 65  NONAME ; int Usif::RSifTransportClient::Connect(class TDesC16 const &, class TVersion const &, class TDesC16 const &, class TUid)
+	??1CComponentInfo@Usif@@UAE@XZ @ 66  NONAME ; Usif::CComponentInfo::~CComponentInfo(void)
+	?GlobalComponentId@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 67  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::GlobalComponentId(void) const
+	?ComponentInfo@CSifTransportTask@Usif@@IAEPAVCComponentInfo@2@XZ @ 68  NONAME ; class Usif::CComponentInfo * Usif::CSifTransportTask::ComponentInfo(void)
+	?InternalizeL@COpaqueNamedParams@Usif@@QAEXAAVRReadStream@@@Z @ 69  NONAME ; void Usif::COpaqueNamedParams::InternalizeL(class RReadStream &)
+	?PrepareArgumentsForIpcL@COpaqueNamedParams@Usif@@QBEXAAVTIpcArgs@@H@Z @ 70  NONAME ; void Usif::COpaqueNamedParams::PrepareArgumentsForIpcL(class TIpcArgs &, int) const
+	?HasExecutable@CNode@CComponentInfo@Usif@@QBEHXZ @ 71  NONAME ; int Usif::CComponentInfo::CNode::HasExecutable(void) const
+	?GroupName@CApplicationInfo@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 72  NONAME ; class TDesC16 const & Usif::CComponentInfo::CApplicationInfo::GroupName(void) const
+	?IconFileName@CApplicationInfo@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 73  NONAME ; class TDesC16 const & Usif::CComponentInfo::CApplicationInfo::IconFileName(void) const
+	?NewLC@CApplicationInfo@CComponentInfo@Usif@@SAPAV123@ABVTUid@@ABVTDesC16@@11@Z @ 74  NONAME ; class Usif::CComponentInfo::CApplicationInfo * Usif::CComponentInfo::CApplicationInfo::NewLC(class TUid const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?DriveSeletionRequired@CNode@CComponentInfo@Usif@@QBEHXZ @ 75  NONAME ; int Usif::CComponentInfo::CNode::DriveSeletionRequired(void) const
+	?AppUid@CApplicationInfo@CComponentInfo@Usif@@QBEABVTUid@@XZ @ 76  NONAME ; class TUid const & Usif::CComponentInfo::CApplicationInfo::AppUid(void) const
+	??1CApplicationInfo@CComponentInfo@Usif@@UAE@XZ @ 77  NONAME ; Usif::CComponentInfo::CApplicationInfo::~CApplicationInfo(void)
+	?Applications@CNode@CComponentInfo@Usif@@QBEABV?$RPointerArray@VCApplicationInfo@CComponentInfo@Usif@@@@XZ @ 78  NONAME ; class RPointerArray<class Usif::CComponentInfo::CApplicationInfo> const & Usif::CComponentInfo::CNode::Applications(void) const
+	?Name@CApplicationInfo@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 79  NONAME ; class TDesC16 const & Usif::CComponentInfo::CApplicationInfo::Name(void) const
+	
 
--- a/installationservices/swinstallationfw/bwins/sifu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/bwins/sifu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -1,59 +1,67 @@
 EXPORTS
-	?PrepareResultsForIpcL@COpaqueNamedParams@Usif@@QAEXAAVTIpcArgs@@H@Z @ 1 NONAME ; void Usif::COpaqueNamedParams::PrepareResultsForIpcL(class TIpcArgs &, int)
-	?HasCapability@TSecurityContext@Usif@@QBEHW4TCapability@@@Z @ 2 NONAME ; int Usif::TSecurityContext::HasCapability(enum TCapability) const
-	?SoftwareTypeName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 3 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::SoftwareTypeName(void) const
-	?NewL@CComponentInfo@Usif@@SAPAV12@XZ @ 4 NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewL(void)
-	?UserGrantableCaps@CNode@CComponentInfo@Usif@@QBEABVTCapabilitySet@@XZ @ 5 NONAME ; class TCapabilitySet const & Usif::CComponentInfo::CNode::UserGrantableCaps(void) const
-	?IntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@@Z @ 6 NONAME ; int Usif::COpaqueNamedParams::IntByNameL(class TDesC16 const &) const
-	?HasCapabilityL@TSecurityContext@Usif@@QBEXW4TCapability@@@Z @ 7 NONAME ; void Usif::TSecurityContext::HasCapabilityL(enum TCapability) const
-	?Close@RSoftwareInstall@Usif@@QAEXXZ @ 8 NONAME ; void Usif::RSoftwareInstall::Close(void)
-	?Authenticity@CNode@CComponentInfo@Usif@@QBE?AW4TAuthenticity@3@XZ @ 9 NONAME ; enum Usif::TAuthenticity Usif::CComponentInfo::CNode::Authenticity(void) const
-	?SetRootNodeAsChildL@CComponentInfo@Usif@@QAEXAAVCNode@12@@Z @ 10 NONAME ; void Usif::CComponentInfo::SetRootNodeAsChildL(class Usif::CComponentInfo::CNode &)
-	?Uninstall@RSoftwareInstall@Usif@@QAEXHAAVTRequestStatus@@H@Z @ 11 NONAME ; void Usif::RSoftwareInstall::Uninstall(int, class TRequestStatus &, int)
-	?StringByNameL@COpaqueNamedParams@Usif@@QBEABVTDesC16@@ABV3@@Z @ 12 NONAME ; class TDesC16 const & Usif::COpaqueNamedParams::StringByNameL(class TDesC16 const &) const
-	?ScomoState@CNode@CComponentInfo@Usif@@QBE?AW4TScomoState@3@XZ @ 13 NONAME ; enum Usif::TScomoState Usif::CComponentInfo::CNode::ScomoState(void) const
-	?Install@RSoftwareInstall@Usif@@QAEXABVTDesC16@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 14 NONAME ; void Usif::RSoftwareInstall::Install(class TDesC16 const &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
-	?AddIntL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@H@Z @ 15 NONAME ; void Usif::COpaqueNamedParams::AddIntL(class TDesC16 const &, int)
-	?NewLC@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 16 NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewLC(void)
-	?InstallStatus@CNode@CComponentInfo@Usif@@QBE?AW4TInstallStatus@3@XZ @ 17 NONAME ; enum Usif::TInstallStatus Usif::CComponentInfo::CNode::InstallStatus(void) const
-	?Children@CNode@CComponentInfo@Usif@@QBEABV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@XZ @ 18 NONAME ; class RPointerArray<class Usif::CComponentInfo::CNode> const & Usif::CComponentInfo::CNode::Children(void) const
-	?Cleanup@COpaqueNamedParams@Usif@@QAEXXZ @ 19 NONAME ; void Usif::COpaqueNamedParams::Cleanup(void)
-	?CancelOperation@RSoftwareInstall@Usif@@QAEXXZ @ 20 NONAME ; void Usif::RSoftwareInstall::CancelOperation(void)
-	?PrepareForIpcL@CComponentInfo@Usif@@QAEXAAVTIpcArgs@@H@Z @ 21 NONAME ; void Usif::CComponentInfo::PrepareForIpcL(class TIpcArgs &, int)
-	?NewLC@CComponentInfo@Usif@@SAPAV12@XZ @ 22 NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewLC(void)
-	?CountL@COpaqueNamedParams@Usif@@QBEHXZ @ 23 NONAME ; int Usif::COpaqueNamedParams::CountL(void) const
-	?SetRootNodeL@CComponentInfo@Usif@@QAEXPAVCNode@12@@Z @ 24 NONAME ; void Usif::CComponentInfo::SetRootNodeL(class Usif::CComponentInfo::CNode *)
-	?GetIntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@AAH@Z @ 25 NONAME ; int Usif::COpaqueNamedParams::GetIntByNameL(class TDesC16 const &, int &) const
-	?MaxInstalledSize@CNode@CComponentInfo@Usif@@QBEHXZ @ 26 NONAME ; int Usif::CComponentInfo::CNode::MaxInstalledSize(void) const
-	?GetNamesL@COpaqueNamedParams@Usif@@QBEXAAV?$RPointerArray@VHBufC16@@@@@Z @ 27 NONAME ; void Usif::COpaqueNamedParams::GetNamesL(class RPointerArray<class HBufC16> &) const
-	?Version@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 28 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Version(void) const
-	?RootNodeL@CComponentInfo@Usif@@QBEABVCNode@12@XZ @ 29 NONAME ; class Usif::CComponentInfo::CNode const & Usif::CComponentInfo::RootNodeL(void) const
-	??1CNode@CComponentInfo@Usif@@UAE@XZ @ 30 NONAME ; Usif::CComponentInfo::CNode::~CNode(void)
-	?GetComponentInfo@RSoftwareInstall@Usif@@QAEXABVTDesC16@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 31 NONAME ; void Usif::RSoftwareInstall::GetComponentInfo(class TDesC16 const &, class Usif::CComponentInfo &, class TRequestStatus &)
-	?Uninstall@RSoftwareInstall@Usif@@QAEXHABVCOpaqueNamedParams@2@AAV32@AAVTRequestStatus@@H@Z @ 32 NONAME ; void Usif::RSoftwareInstall::Uninstall(int, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
-	?Deactivate@RSoftwareInstall@Usif@@QAEXHAAVTRequestStatus@@@Z @ 33 NONAME ; void Usif::RSoftwareInstall::Deactivate(int, class TRequestStatus &)
-	?AddStringL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@0@Z @ 34 NONAME ; void Usif::COpaqueNamedParams::AddStringL(class TDesC16 const &, class TDesC16 const &)
-	?AddChildL@CNode@CComponentInfo@Usif@@QAEXPAV123@@Z @ 35 NONAME ; void Usif::CComponentInfo::CNode::AddChildL(class Usif::CComponentInfo::CNode *)
-	?ComponentId@CNode@CComponentInfo@Usif@@QBEHXZ @ 36 NONAME ; int Usif::CComponentInfo::CNode::ComponentId(void) const
-	?ExternalizeL@CComponentInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 37 NONAME ; void Usif::CComponentInfo::ExternalizeL(class RWriteStream &) const
-	??0RSoftwareInstall@Usif@@QAE@XZ @ 38 NONAME ; Usif::RSoftwareInstall::RSoftwareInstall(void)
-	?SecureId@TSecurityContext@Usif@@QBE?AVTSecureId@@XZ @ 39 NONAME ; class TSecureId Usif::TSecurityContext::SecureId(void) const
-	?Activate@RSoftwareInstall@Usif@@QAEXHAAVTRequestStatus@@@Z @ 40 NONAME ; void Usif::RSoftwareInstall::Activate(int, class TRequestStatus &)
-	?ExternalizeL@COpaqueNamedParams@Usif@@QBEXAAVRWriteStream@@@Z @ 41 NONAME ; void Usif::COpaqueNamedParams::ExternalizeL(class RWriteStream &) const
-	?Install@RSoftwareInstall@Usif@@QAEXABVTDesC16@@AAVTRequestStatus@@H@Z @ 42 NONAME ; void Usif::RSoftwareInstall::Install(class TDesC16 const &, class TRequestStatus &, int)
-	?Vendor@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 43 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Vendor(void) const
-	?NewL@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 44 NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewL(void)
-	?GetComponentInfo@RSoftwareInstall@Usif@@QAEXAAVRFile@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 45 NONAME ; void Usif::RSoftwareInstall::GetComponentInfo(class RFile &, class Usif::CComponentInfo &, class TRequestStatus &)
-	?ComponentName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 46 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::ComponentName(void) const
-	?Connect@RSoftwareInstall@Usif@@QAEHXZ @ 47 NONAME ; int Usif::RSoftwareInstall::Connect(void)
-	?Install@RSoftwareInstall@Usif@@QAEXAAVRFile@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 48 NONAME ; void Usif::RSoftwareInstall::Install(class RFile &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
-	??1CComponentInfo@Usif@@UAE@XZ @ 49 NONAME ; Usif::CComponentInfo::~CComponentInfo(void)
-	?NewLC@CNode@CComponentInfo@Usif@@SAPAV123@ABVTDesC16@@000W4TScomoState@3@W4TInstallStatus@3@H0W4TAuthenticity@3@ABVTCapabilitySet@@HHPAV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@@Z @ 50 NONAME ; class Usif::CComponentInfo::CNode * Usif::CComponentInfo::CNode::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum Usif::TScomoState, enum Usif::TInstallStatus, int, class TDesC16 const &, enum Usif::TAuthenticity, class TCapabilitySet const &, int, class RPointerArray<class Usif::CComponentInfo::CNode> *)
-	??0TSecurityContext@Usif@@AAE@ABVRMessage2@@@Z @ 51 NONAME ; Usif::TSecurityContext::TSecurityContext(class RMessage2 const &)
-	?GlobalComponentId@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 52 NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::GlobalComponentId(void) const
-	?PrepareArgumentsForIpcL@COpaqueNamedParams@Usif@@QBEXAAVTIpcArgs@@H@Z @ 53 NONAME ; void Usif::COpaqueNamedParams::PrepareArgumentsForIpcL(class TIpcArgs &, int) const
-	?InternalizeL@COpaqueNamedParams@Usif@@QAEXAAVRReadStream@@@Z @ 54 NONAME ; void Usif::COpaqueNamedParams::InternalizeL(class RReadStream &)
-	??1COpaqueNamedParams@Usif@@UAE@XZ @ 55 NONAME ; Usif::COpaqueNamedParams::~COpaqueNamedParams(void)
-	?Install@RSoftwareInstall@Usif@@QAEXAAVRFile@@AAVTRequestStatus@@H@Z @ 56 NONAME ; void Usif::RSoftwareInstall::Install(class RFile &, class TRequestStatus &, int)
-	?HasExecutable@CNode@CComponentInfo@Usif@@QBEHXZ @ 57 NONAME ; int Usif::CComponentInfo::CNode::HasExecutable(void) const
-
+	?PrepareResultsForIpcL@COpaqueNamedParams@Usif@@QAEXAAVTIpcArgs@@H@Z @ 1  NONAME ; void Usif::COpaqueNamedParams::PrepareResultsForIpcL(class TIpcArgs &, int)
+	?HasCapability@TSecurityContext@Usif@@QBEHW4TCapability@@@Z @ 2  NONAME ; int Usif::TSecurityContext::HasCapability(enum TCapability) const
+	?SoftwareTypeName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 3  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::SoftwareTypeName(void) const
+	?NewL@CComponentInfo@Usif@@SAPAV12@XZ @ 4  NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewL(void)
+	?UserGrantableCaps@CNode@CComponentInfo@Usif@@QBEABVTCapabilitySet@@XZ @ 5  NONAME ; class TCapabilitySet const & Usif::CComponentInfo::CNode::UserGrantableCaps(void) const
+	?IntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@@Z @ 6  NONAME ; int Usif::COpaqueNamedParams::IntByNameL(class TDesC16 const &) const
+	?HasCapabilityL@TSecurityContext@Usif@@QBEXW4TCapability@@@Z @ 7  NONAME ; void Usif::TSecurityContext::HasCapabilityL(enum TCapability) const
+	?Close@RSoftwareInstall@Usif@@QAEXXZ @ 8  NONAME ; void Usif::RSoftwareInstall::Close(void)
+	?Authenticity@CNode@CComponentInfo@Usif@@QBE?AW4TAuthenticity@3@XZ @ 9  NONAME ; enum Usif::TAuthenticity Usif::CComponentInfo::CNode::Authenticity(void) const
+	?SetRootNodeAsChildL@CComponentInfo@Usif@@QAEXAAVCNode@12@@Z @ 10  NONAME ; void Usif::CComponentInfo::SetRootNodeAsChildL(class Usif::CComponentInfo::CNode &)
+	?Uninstall@RSoftwareInstall@Usif@@QAEXHAAVTRequestStatus@@H@Z @ 11  NONAME ; void Usif::RSoftwareInstall::Uninstall(int, class TRequestStatus &, int)
+	?StringByNameL@COpaqueNamedParams@Usif@@QBEABVTDesC16@@ABV3@@Z @ 12  NONAME ; class TDesC16 const & Usif::COpaqueNamedParams::StringByNameL(class TDesC16 const &) const
+	?ScomoState@CNode@CComponentInfo@Usif@@QBE?AW4TScomoState@3@XZ @ 13  NONAME ; enum Usif::TScomoState Usif::CComponentInfo::CNode::ScomoState(void) const
+	?Install@RSoftwareInstall@Usif@@QAEXABVTDesC16@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 14  NONAME ; void Usif::RSoftwareInstall::Install(class TDesC16 const &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
+	?AddIntL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@H@Z @ 15  NONAME ; void Usif::COpaqueNamedParams::AddIntL(class TDesC16 const &, int)
+	?NewLC@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 16  NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewLC(void)
+	?InstallStatus@CNode@CComponentInfo@Usif@@QBE?AW4TInstallStatus@3@XZ @ 17  NONAME ; enum Usif::TInstallStatus Usif::CComponentInfo::CNode::InstallStatus(void) const
+	?Children@CNode@CComponentInfo@Usif@@QBEABV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@XZ @ 18  NONAME ; class RPointerArray<class Usif::CComponentInfo::CNode> const & Usif::CComponentInfo::CNode::Children(void) const
+	?Cleanup@COpaqueNamedParams@Usif@@QAEXXZ @ 19  NONAME ; void Usif::COpaqueNamedParams::Cleanup(void)
+	?CancelOperation@RSoftwareInstall@Usif@@QAEXXZ @ 20  NONAME ; void Usif::RSoftwareInstall::CancelOperation(void)
+	?PrepareForIpcL@CComponentInfo@Usif@@QAEXAAVTIpcArgs@@H@Z @ 21  NONAME ; void Usif::CComponentInfo::PrepareForIpcL(class TIpcArgs &, int)
+	?NewLC@CComponentInfo@Usif@@SAPAV12@XZ @ 22  NONAME ; class Usif::CComponentInfo * Usif::CComponentInfo::NewLC(void)
+	?CountL@COpaqueNamedParams@Usif@@QBEHXZ @ 23  NONAME ; int Usif::COpaqueNamedParams::CountL(void) const
+	?SetRootNodeL@CComponentInfo@Usif@@QAEXPAVCNode@12@@Z @ 24  NONAME ; void Usif::CComponentInfo::SetRootNodeL(class Usif::CComponentInfo::CNode *)
+	?GetIntByNameL@COpaqueNamedParams@Usif@@QBEHABVTDesC16@@AAH@Z @ 25  NONAME ; int Usif::COpaqueNamedParams::GetIntByNameL(class TDesC16 const &, int &) const
+	?MaxInstalledSize@CNode@CComponentInfo@Usif@@QBEHXZ @ 26  NONAME ; int Usif::CComponentInfo::CNode::MaxInstalledSize(void) const
+	?GetNamesL@COpaqueNamedParams@Usif@@QBEXAAV?$RPointerArray@VHBufC16@@@@@Z @ 27  NONAME ; void Usif::COpaqueNamedParams::GetNamesL(class RPointerArray<class HBufC16> &) const
+	?Version@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 28  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Version(void) const
+	?RootNodeL@CComponentInfo@Usif@@QBEABVCNode@12@XZ @ 29  NONAME ; class Usif::CComponentInfo::CNode const & Usif::CComponentInfo::RootNodeL(void) const
+	??1CNode@CComponentInfo@Usif@@UAE@XZ @ 30  NONAME ; Usif::CComponentInfo::CNode::~CNode(void)
+	?GetComponentInfo@RSoftwareInstall@Usif@@QAEXABVTDesC16@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 31  NONAME ; void Usif::RSoftwareInstall::GetComponentInfo(class TDesC16 const &, class Usif::CComponentInfo &, class TRequestStatus &)
+	?Uninstall@RSoftwareInstall@Usif@@QAEXHABVCOpaqueNamedParams@2@AAV32@AAVTRequestStatus@@H@Z @ 32  NONAME ; void Usif::RSoftwareInstall::Uninstall(int, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
+	?Deactivate@RSoftwareInstall@Usif@@QAEXHAAVTRequestStatus@@@Z @ 33  NONAME ; void Usif::RSoftwareInstall::Deactivate(int, class TRequestStatus &)
+	?AddStringL@COpaqueNamedParams@Usif@@QAEXABVTDesC16@@0@Z @ 34  NONAME ; void Usif::COpaqueNamedParams::AddStringL(class TDesC16 const &, class TDesC16 const &)
+	?AddChildL@CNode@CComponentInfo@Usif@@QAEXPAV123@@Z @ 35  NONAME ; void Usif::CComponentInfo::CNode::AddChildL(class Usif::CComponentInfo::CNode *)
+	?ComponentId@CNode@CComponentInfo@Usif@@QBEHXZ @ 36  NONAME ; int Usif::CComponentInfo::CNode::ComponentId(void) const
+	?ExternalizeL@CComponentInfo@Usif@@QBEXAAVRWriteStream@@@Z @ 37  NONAME ; void Usif::CComponentInfo::ExternalizeL(class RWriteStream &) const
+	??0RSoftwareInstall@Usif@@QAE@XZ @ 38  NONAME ; Usif::RSoftwareInstall::RSoftwareInstall(void)
+	?SecureId@TSecurityContext@Usif@@QBE?AVTSecureId@@XZ @ 39  NONAME ; class TSecureId Usif::TSecurityContext::SecureId(void) const
+	?Activate@RSoftwareInstall@Usif@@QAEXHAAVTRequestStatus@@@Z @ 40  NONAME ; void Usif::RSoftwareInstall::Activate(int, class TRequestStatus &)
+	?ExternalizeL@COpaqueNamedParams@Usif@@QBEXAAVRWriteStream@@@Z @ 41  NONAME ; void Usif::COpaqueNamedParams::ExternalizeL(class RWriteStream &) const
+	?Install@RSoftwareInstall@Usif@@QAEXABVTDesC16@@AAVTRequestStatus@@H@Z @ 42  NONAME ; void Usif::RSoftwareInstall::Install(class TDesC16 const &, class TRequestStatus &, int)
+	?Vendor@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 43  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::Vendor(void) const
+	?NewL@COpaqueNamedParams@Usif@@SAPAV12@XZ @ 44  NONAME ; class Usif::COpaqueNamedParams * Usif::COpaqueNamedParams::NewL(void)
+	?GetComponentInfo@RSoftwareInstall@Usif@@QAEXAAVRFile@@AAVCComponentInfo@2@AAVTRequestStatus@@@Z @ 45  NONAME ; void Usif::RSoftwareInstall::GetComponentInfo(class RFile &, class Usif::CComponentInfo &, class TRequestStatus &)
+	?ComponentName@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 46  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::ComponentName(void) const
+	?Connect@RSoftwareInstall@Usif@@QAEHXZ @ 47  NONAME ; int Usif::RSoftwareInstall::Connect(void)
+	?Install@RSoftwareInstall@Usif@@QAEXAAVRFile@@ABVCOpaqueNamedParams@2@AAV42@AAVTRequestStatus@@H@Z @ 48  NONAME ; void Usif::RSoftwareInstall::Install(class RFile &, class Usif::COpaqueNamedParams const &, class Usif::COpaqueNamedParams &, class TRequestStatus &, int)
+	??1CComponentInfo@Usif@@UAE@XZ @ 49  NONAME ; Usif::CComponentInfo::~CComponentInfo(void)
+	?NewLC@CNode@CComponentInfo@Usif@@SAPAV123@ABVTDesC16@@000W4TScomoState@3@W4TInstallStatus@3@H0W4TAuthenticity@3@ABVTCapabilitySet@@HHHPAV?$RPointerArray@VCApplicationInfo@CComponentInfo@Usif@@@@PAV?$RPointerArray@VCNode@CComponentInfo@Usif@@@@@Z @ 50  NONAME ; class Usif::CComponentInfo::CNode * Usif::CComponentInfo::CNode::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum Usif::TScomoState, enum Usif::TInstallStatus, int, class TDesC16 const &, enum Usif::TAuthenticity, class TCapabilitySet const &, int, int, int, class RPointerArray<class Usif::CComponentInfo::CApplicationInfo> *, class RPointerArray<class Usif::CComponentInfo::CNode> *)
+	??0TSecurityContext@Usif@@AAE@ABVRMessage2@@@Z @ 51  NONAME ; Usif::TSecurityContext::TSecurityContext(class RMessage2 const &)
+	?GlobalComponentId@CNode@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 52  NONAME ; class TDesC16 const & Usif::CComponentInfo::CNode::GlobalComponentId(void) const
+	?PrepareArgumentsForIpcL@COpaqueNamedParams@Usif@@QBEXAAVTIpcArgs@@H@Z @ 53  NONAME ; void Usif::COpaqueNamedParams::PrepareArgumentsForIpcL(class TIpcArgs &, int) const
+	?InternalizeL@COpaqueNamedParams@Usif@@QAEXAAVRReadStream@@@Z @ 54  NONAME ; void Usif::COpaqueNamedParams::InternalizeL(class RReadStream &)
+	??1COpaqueNamedParams@Usif@@UAE@XZ @ 55  NONAME ; Usif::COpaqueNamedParams::~COpaqueNamedParams(void)
+	?Install@RSoftwareInstall@Usif@@QAEXAAVRFile@@AAVTRequestStatus@@H@Z @ 56  NONAME ; void Usif::RSoftwareInstall::Install(class RFile &, class TRequestStatus &, int)
+	?HasExecutable@CNode@CComponentInfo@Usif@@QBEHXZ @ 57  NONAME ; int Usif::CComponentInfo::CNode::HasExecutable(void) const
+	?GroupName@CApplicationInfo@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 58  NONAME ; class TDesC16 const & Usif::CComponentInfo::CApplicationInfo::GroupName(void) const
+	?DriveSeletionRequired@CNode@CComponentInfo@Usif@@QBEHXZ @ 59  NONAME ; int Usif::CComponentInfo::CNode::DriveSeletionRequired(void) const
+	?IconFileName@CApplicationInfo@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 60  NONAME ; class TDesC16 const & Usif::CComponentInfo::CApplicationInfo::IconFileName(void) const
+	?AppUid@CApplicationInfo@CComponentInfo@Usif@@QBEABVTUid@@XZ @ 61  NONAME ; class TUid const & Usif::CComponentInfo::CApplicationInfo::AppUid(void) const
+	?NewLC@CApplicationInfo@CComponentInfo@Usif@@SAPAV123@ABVTUid@@ABVTDesC16@@11@Z @ 62  NONAME ; class Usif::CComponentInfo::CApplicationInfo * Usif::CComponentInfo::CApplicationInfo::NewLC(class TUid const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?Applications@CNode@CComponentInfo@Usif@@QBEABV?$RPointerArray@VCApplicationInfo@CComponentInfo@Usif@@@@XZ @ 63  NONAME ; class RPointerArray<class Usif::CComponentInfo::CApplicationInfo> const & Usif::CComponentInfo::CNode::Applications(void) const
+	??1CApplicationInfo@CComponentInfo@Usif@@UAE@XZ @ 64  NONAME ; Usif::CComponentInfo::CApplicationInfo::~CApplicationInfo(void)
+	?Name@CApplicationInfo@CComponentInfo@Usif@@QBEABVTDesC16@@XZ @ 65  NONAME ; class TDesC16 const & Usif::CComponentInfo::CApplicationInfo::Name(void) const
+	
--- a/installationservices/swinstallationfw/bwins/sifutilsu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/bwins/sifutilsu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,4 @@
 EXPORTS
 	?UninstallL@Usif@@YAXH@Z @ 1 NONAME ; void Usif::UninstallL(int)
+	?GenerateNewAppUidL@Usif@@YA?AVTUid@@XZ @ 2 NONAME ; class TUid Usif::GenerateNewAppUidL(void)
 
--- a/installationservices/swinstallationfw/common/inc/usifcommon.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/common/inc/usifcommon.h	Fri Apr 16 15:05:20 2010 +0300
@@ -43,20 +43,35 @@
 		};
 
 	/**
+		This enumeration defines the possible options for user dialogs. 
+		If EAllowed is selected then the response to the user option dialog is treated as 'Yes'
+		If ENotAllowed is selected then the response to the user option dialog is treated as 'No'
+		If EUserConfirm is selected then user option dialog is presented to the user.
+	*/
+	enum TSifPolicy
+		{
+		EAllowed		= 0,
+		ENotAllowed		= 1,
+		EUserConfirm	= 2
+		};
+
+	/**
 		TComponentId defines an instance of a software component in the Software Component Registry. Two different components cannot 
 		have the same id on the system, however, it is not global and different components may have the same component id
 		on separate devices.Please refer to @see GlobalId for a unique identifier for software components across different devices.
 	*/
 	typedef TInt TComponentId;
-
 	
 	/**
 		Pre-defined software type names for the Universal Software Install Framework. 
 		'native' stands for Symbian native components delivered in the SIS/SISX packages.
 		'java' stands for Java MIDlets.
+		'widget' stands for Widgets
 	*/
 	_LIT(KSoftwareTypeNative, "native");
 	_LIT(KSoftwareTypeJava, "java");
+	_LIT(KSoftwareTypeWidget, "widget");
+
 	
 	} // end namespace Usif
 
--- a/installationservices/swinstallationfw/common/inc/usiferror.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/common/inc/usiferror.h	Fri Apr 16 15:05:20 2010 +0300
@@ -26,6 +26,28 @@
 #ifndef USIFERROR_H
 #define USIFERROR_H
 
+
+namespace Usif
+	{
+
+		enum TErrorCategory {
+			ENone						= 0, // No Error
+			ELowMemory					= 1, // Low on RAM
+			ELowDiskSpace				= 2, // Low diskspace
+			ENetworkUnavailable			= 3, // Network not available
+			EInstallerBusy				= 4, // Installer is in use
+			ECorruptedPackage			= 5, // Package corrupt
+			EApplicationNotCompatible	= 6, // Not compatible
+			ESecurityError				= 7, // Security Error
+			EUnexpectedError			= 8, // Unexpected Error
+			EUserCancelled				= 9, // Install Cancelled
+			EUninstallationBlocked		= 10,// Uninstallation blocked
+			EUnknown					= 11 // Unknown error
+		};
+
+	}
+
+
 /** A general error in one of the Unified Installer Framework components. */
 const TInt KErrSifUnknown = -10300;
 
--- a/installationservices/swinstallationfw/eabi/siftransportu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/eabi/siftransportu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -3,7 +3,7 @@
 	_ZN4Usif14CComponentInfo14PrepareForIpcLER8TIpcArgsi @ 2 NONAME
 	_ZN4Usif14CComponentInfo19SetRootNodeAsChildLERNS0_5CNodeE @ 3 NONAME
 	_ZN4Usif14CComponentInfo4NewLEv @ 4 NONAME
-	_ZN4Usif14CComponentInfo5CNode5NewLCERK7TDesC16S4_S4_S4_NS_11TScomoStateENS_14TInstallStatusEiS4_NS_13TAuthenticityERK14TCapabilitySetiiP13RPointerArrayIS1_E @ 5 NONAME
+	_ZN4Usif14CComponentInfo5CNode5NewLCERK7TDesC16S4_S4_S4_NS_11TScomoStateENS_14TInstallStatusEiS4_NS_13TAuthenticityERK14TCapabilitySetiiiP13RPointerArrayINS0_16CApplicationInfoEEPSB_IS1_E @ 5 NONAME
 	_ZN4Usif14CComponentInfo5CNode9AddChildLEPS1_ @ 6 NONAME
 	_ZN4Usif14CComponentInfo5CNodeD0Ev @ 7 NONAME
 	_ZN4Usif14CComponentInfo5CNodeD1Ev @ 8 NONAME
@@ -95,4 +95,16 @@
 	_ZTVN4Usif20CSifTransportRequestE @ 94 NONAME
 	_ZTVN4Usif20CSifTransportSessionE @ 95 NONAME
 	_ZNK4Usif14CComponentInfo5CNode13HasExecutableEv @ 96 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfo5NewLCERK4TUidRK7TDesC16S7_S7_ @ 97 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfoD0Ev @ 98 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfoD1Ev @ 99 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfoD2Ev @ 100 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo12IconFileNameEv @ 101 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo4NameEv @ 102 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo6AppUidEv @ 103 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo9GroupNameEv @ 104 NONAME
+	_ZNK4Usif14CComponentInfo5CNode12ApplicationsEv @ 105 NONAME
+	_ZNK4Usif14CComponentInfo5CNode21DriveSeletionRequiredEv @ 106 NONAME
+	_ZTIN4Usif14CComponentInfo16CApplicationInfoE @ 107 NONAME
+	_ZTVN4Usif14CComponentInfo16CApplicationInfoE @ 108 NONAME
 
--- a/installationservices/swinstallationfw/eabi/sifu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/eabi/sifu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -3,7 +3,7 @@
 	_ZN4Usif14CComponentInfo14PrepareForIpcLER8TIpcArgsi @ 2 NONAME
 	_ZN4Usif14CComponentInfo19SetRootNodeAsChildLERNS0_5CNodeE @ 3 NONAME
 	_ZN4Usif14CComponentInfo4NewLEv @ 4 NONAME
-	_ZN4Usif14CComponentInfo5CNode5NewLCERK7TDesC16S4_S4_S4_NS_11TScomoStateENS_14TInstallStatusEiS4_NS_13TAuthenticityERK14TCapabilitySetiiP13RPointerArrayIS1_E @ 5 NONAME
+	_ZN4Usif14CComponentInfo5CNode5NewLCERK7TDesC16S4_S4_S4_NS_11TScomoStateENS_14TInstallStatusEiS4_NS_13TAuthenticityERK14TCapabilitySetiiiP13RPointerArrayINS0_16CApplicationInfoEEPSB_IS1_E @ 5 NONAME
 	_ZN4Usif14CComponentInfo5CNode9AddChildLEPS1_ @ 6 NONAME
 	_ZN4Usif14CComponentInfo5CNodeD0Ev @ 7 NONAME
 	_ZN4Usif14CComponentInfo5CNodeD1Ev @ 8 NONAME
@@ -70,4 +70,16 @@
 	_ZTVN4Usif14CComponentInfoE @ 69 NONAME
 	_ZTVN4Usif18COpaqueNamedParamsE @ 70 NONAME
 	_ZNK4Usif14CComponentInfo5CNode13HasExecutableEv @ 71 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfo5NewLCERK4TUidRK7TDesC16S7_S7_ @ 72 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfoD0Ev @ 73 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfoD1Ev @ 74 NONAME
+	_ZN4Usif14CComponentInfo16CApplicationInfoD2Ev @ 75 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo12IconFileNameEv @ 76 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo4NameEv @ 77 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo6AppUidEv @ 78 NONAME
+	_ZNK4Usif14CComponentInfo16CApplicationInfo9GroupNameEv @ 79 NONAME
+	_ZNK4Usif14CComponentInfo5CNode12ApplicationsEv @ 80 NONAME
+	_ZNK4Usif14CComponentInfo5CNode21DriveSeletionRequiredEv @ 81 NONAME
+	_ZTIN4Usif14CComponentInfo16CApplicationInfoE @ 82 NONAME
+	_ZTVN4Usif14CComponentInfo16CApplicationInfoE @ 83 NONAME
 
--- a/installationservices/swinstallationfw/eabi/sifutilsu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/eabi/sifutilsu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,4 @@
 EXPORTS
 	_ZN4Usif10UninstallLEi @ 1 NONAME
+	_ZN4Usif18GenerateNewAppUidLEv @ 2 NONAME
 
--- a/installationservices/swinstallationfw/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -58,11 +58,16 @@
 
 ../test/tusif/scripts/tsifswtypeintegration.ini			z:/tusif/tswtype/tsifswtypeintegration.ini
 ../test/tusif/scripts/tsifswtypeintegration.script		z:/tusif/tswtype/tsifswtypeintegration.script
-../test/tusif/scripts/data/test.siftestpkg				z:/tusif/tswtype/data/test.siftestpkg
-../test/tusif/scripts/data/swtypereginfo.xml				z:/tusif/tswtype/data/swtypereginfo.xml
+
+../test/tusif/scripts/tsif_appuidgen.script			z:/tusif/tsif/tsif_appuidgen.script
+../test/tusif/scripts/tsif_appuidgen.ini			z:/tusif/tsif/tsif_appuidgen.ini
+
+../test/tusif/scripts/data/test.siftestpkg			z:/tusif/tswtype/data/test.siftestpkg
+../test/tusif/scripts/data/swtypereginfo.xml			z:/tusif/tswtype/data/swtypereginfo.xml
+../test/tusif/scripts/data/corrupt_reg.rsc			z:/tusif/tsif/data/corrupt_reg.rsc
 
 // ROMKIT includes
-../inc/tsif.iby												/epoc32/rom/include/tsif.iby
+../inc/tsif.iby							/epoc32/rom/include/tsif.iby
 
 PRJ_MMPFILES
 
@@ -102,6 +107,8 @@
 ../test/tusif/group/sifintegusercapsbasepackage.mmp
 ../test/tusif/group/siftestintegrationlockfile.mmp
 ../test/tusif/group/sifintegsufficientusercaps.mmp
+../test/tusif/group/sifgetcompapparcinfotest.mmp
+../test/tusif/group/sifgetcompapparcinfotestmultilang.mmp
 // Creation of SIS files for SIF tests
 makefile ../test/tusif/group/siftest.makefile
 
--- a/installationservices/swinstallationfw/group/security_softwareinstallframework.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/group/security_softwareinstallframework.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_softwareinstallframework
 source	\sf\mw\appinstall\installationservices\swinstallationfw
 source	\sf\mw\appinstall\installationservices\swinstallationfw\test
--- a/installationservices/swinstallationfw/group/sifutils.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/group/sifutils.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -33,6 +33,7 @@
 SOURCE sifutils.cpp
 
 USERINCLUDE ../inc
+USERINCLUDE ../../swcomponentregistry/inc_private
 
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
--- a/installationservices/swinstallationfw/inc/sif.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/inc/sif.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
--- a/installationservices/swinstallationfw/inc/sifcommon.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/inc/sifcommon.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,545 +31,698 @@
 #include <usif/usifcommon.h>
 
 namespace Usif
-	{
+    {
 
-	/**
-		This enumeration defines the possible values of the status of an installation package. This status
-		can be obtained from a @see CComponentInfo object using the @see CComponentInfo::InstallStatusL()
-		method.
-	 */
-	enum TInstallStatus
-		{
-		ENewComponent,					///< New installation; the component is not present in the system
-		EUpgrade,						///< This is a valid upgrade of an existing component
-		EAlreadyInstalled,				///< Component with the same version is already installed
-		ENewerVersionAlreadyInstalled,	///< A newer version of the component is already installed
-		EInvalid						///< Package is not valid and cannot be installed, for example,
-										///< it may be an upgrade of an uninstalled component or the
-										///< package may be corrupt
-		};
+    /**
+        This enumeration defines the possible values of the status of an installation package. This status
+        can be obtained from a @see CComponentInfo object using the @see CComponentInfo::InstallStatusL()
+        method.
+     */
+    enum TInstallStatus
+        {
+        ENewComponent,                  ///< New installation; the component is not present in the system
+        EUpgrade,                       ///< This is a valid upgrade of an existing component
+        EAlreadyInstalled,              ///< Component with the same version is already installed
+        ENewerVersionAlreadyInstalled,  ///< A newer version of the component is already installed
+        EInvalid                        ///< Package is not valid and cannot be installed, for example,
+                                        ///< it may be an upgrade of an uninstalled component or the
+                                        ///< package may be corrupt
+        };
 
-	/**
-		This enumeration defines the possible values of the authenticity of an installation package. This authenticity
-		can be obtained from a @see CComponentInfo object using the @see CComponentInfo::Authenticity()
-		method.
-	 */
-	enum TAuthenticity
-		{
-		ENotAuthenticated,			///< Component could not be authenticated by the installer, e.g. unsigned or self-signed
-		EAuthenticated,				///< Component is authenticated
-		};
+    /**
+        This enumeration defines the possible values of the authenticity of an installation package. This authenticity
+        can be obtained from a @see CComponentInfo object using the @see CComponentInfo::Authenticity()
+        method.
+     */
+    enum TAuthenticity
+        {
+        ENotAuthenticated,          ///< Component could not be authenticated by the installer, e.g. unsigned or self-signed
+        EAuthenticated,             ///< Component is authenticated
+        };
 
-	/**
-		The TSecurityContext class allows SIF plug-ins to verify the capabilities and secure Ids of SIF clients.
-		For example, when a SIF client requests silent installation a SIF plug-in may verify that that the client
-		has the TrustedUI capability.
-	 */
-	class TSecurityContext
-		{
-	public:
-		/**
-			Checks if the SIF client has a given capability.
+    /**
+        The TSecurityContext class allows SIF plug-ins to verify the capabilities and secure Ids of SIF clients.
+        For example, when a SIF client requests silent installation a SIF plug-in may verify that that the client
+        has the TrustedUI capability.
+     */
+    class TSecurityContext
+        {
+    public:
+        /**
+            Checks if the SIF client has a given capability.
 
-			@param aCapability The capability to test.
-			@return ETrue if the SIF client has the capability, EFalse otherwise.
-		*/
-		IMPORT_C TBool HasCapability(TCapability aCapability) const;
+            @param aCapability The capability to test.
+            @return ETrue if the SIF client has the capability, EFalse otherwise.
+        */
+        IMPORT_C TBool HasCapability(TCapability aCapability) const;
 
-		/**
-			Checks if the SIF client has a given capability.
-
-			@param aCapability The capability to test.
-			@leave KErrPermissionDenied If the SIF client does not have the capability.
-		*/
-		IMPORT_C void HasCapabilityL(TCapability aCapability) const;
+        /**
+            Checks if the SIF client has a given capability.
 
-		/**
-			Returns the secure Id of a SIF client.
-		*/
-		IMPORT_C TSecureId SecureId() const;
+            @param aCapability The capability to test.
+            @leave KErrPermissionDenied If the SIF client does not have the capability.
+        */
+        IMPORT_C void HasCapabilityL(TCapability aCapability) const;
 
-	private:
-		friend class CSifTransportRequest;
-		IMPORT_C TSecurityContext(const RMessage2& aMessage);
-
-		const RMessagePtr2 iMsg;
-		};
+        /**
+            Returns the secure Id of a SIF client.
+        */
+        IMPORT_C TSecureId SecureId() const;
 
-	/**
-		This class provides information about a software package. Returned by RSoftwareInstall::GetComponentInfo()."
-	 */
-	class CComponentInfo : public CBase
-		{
-	public:
+    private:
+        friend class CSifTransportRequest;
+        IMPORT_C TSecurityContext(const RMessage2& aMessage);
+
+        const RMessagePtr2 iMsg;
+        };
 
-		class CNode : public CBase
-			{
-		public:
-			/**
-				Initializes the object with the details of a component.
+    /**
+        This class provides information about a software package. Returned by RSoftwareInstall::GetComponentInfo()."
+     */
+    class CComponentInfo : public CBase
+        {
+    public:
 
-				@param aSoftwareTypeName The name of the software type of a component.
-				@param aComponentName The name of a component.
-				@param aVersion The version of a component.
-				@param aVendor The name of a component vendor.
-				@param aScomoState The SCOMO state of a component.
-				@param TInstallStatus The installation status of a component.
-				@param aComponentId The Id of a component.
-				@param aGlobalComponentId The global Id of a component.
-				@param aAuthenticity The authenticity of a component.
-				@param aUserGrantableCaps User grantable capabilities of a component.
-				@param aHasExe Whether component has an executable.
-				@param aChildren Child nodes describing embedded components of a component. This method
-				passes the ownership of the child nodes to this new node and empties the aChildren array.
-				However, if the leave occurs the caller must delete the child nodes in the array.
-				@leave KErrOverflow it the total length of aName, aVersion and aVendor exceeds 512 characters.
-				@leave Or other system wide error code
-			*/
-			IMPORT_C static CNode* NewLC(const TDesC& aSoftwareTypeName, const TDesC& aComponentName,
-								const TDesC& aVersion, const TDesC& aVendor, TScomoState aScomoState,
-								TInstallStatus aInstallStatus, TComponentId aComponentId,
-								const TDesC& aGlobalComponentId, TAuthenticity aAuthenticity,
-								const TCapabilitySet& aUserGrantableCaps, TInt aMaxInstalledSize,
-								TBool aHasExe,
-								RPointerArray<CNode>* aChildren = NULL);
+        class CApplicationInfo : public CBase
+            {
+        public:
+            IMPORT_C static CApplicationInfo* NewLC(const TUid& aAppUid, const TDesC& aName, const TDesC& aGroupName, const TDesC& aIconFileName);
+            static CApplicationInfo* NewL(RReadStream& aStream);
+            void ExternalizeL(RWriteStream& aStream) const;
+                        
+            IMPORT_C const TUid& AppUid() const;
+            IMPORT_C const TDesC& Name() const;
+            IMPORT_C const TDesC& GroupName() const;
+            IMPORT_C const TDesC& IconFileName() const;                       
+            IMPORT_C virtual ~CApplicationInfo();
+                        
+        private:                  
+            CApplicationInfo();           
+            
+            TUid iAppUid; // Application UID
+            HBufC* iName; // Name of the application
+            HBufC* iGroupName; // Group folder name where the application will be present
+            HBufC* iIconFileName; // Full path of the icon file
+            };
+               
+        class CNode : public CBase
+            {
+        public:
+            /**
+                Initializes the object with the details of a component.
 
-			/**
-				Adds a child node to this node. This method passes the ownership of the child node
-				to this node so the caller must pop it from the cleanup stack but not delete.
-
-				@return The pointer to the child node to be added.
-				@leave System wide error code
-			*/
-			IMPORT_C void AddChildL(CNode* aChild);
-
-			/**
-				Returns the name of software type of a component.
-
-				@return The name of the software type of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C const TDesC& SoftwareTypeName() const;
-
-			/**
-				Returns the name of a component.
+                @param aSoftwareTypeName The name of the software type of a component.
+                @param aComponentName The name of a component.
+                @param aVersion The version of a component.
+                @param aVendor The name of a component vendor.
+                @param aScomoState The SCOMO state of a component.
+                @param TInstallStatus The installation status of a component.
+                @param aComponentId The Id of a component.
+                @param aGlobalComponentId The global Id of a component.
+                @param aAuthenticity The authenticity of a component.
+                @param aUserGrantableCaps User grantable capabilities of a component.
+                @param aHasExe Whether component has an executable.
+                @param aIsDriveSelectionRequired Whether drive selection is required or not.
+                @param aApplications Information of the applications in the package.
+                @param aChildren Child nodes describing embedded components of a component. This method
+                        passes the ownership of the child nodes to this new node and empties the aChildren array.
+                However, if the leave occurs the caller must delete the child nodes in the array.
+                @leave KErrOverflow it the total length of aName, aVersion and aVendor exceeds 512 characters.
+                @leave Or other system wide error code
+            */
+            IMPORT_C static CNode* NewLC(const TDesC& aSoftwareTypeName, const TDesC& aComponentName,
+                                const TDesC& aVersion, const TDesC& aVendor, TScomoState aScomoState,
+                                TInstallStatus aInstallStatus, TComponentId aComponentId,
+                                const TDesC& aGlobalComponentId, TAuthenticity aAuthenticity,
+                                const TCapabilitySet& aUserGrantableCaps, TInt aMaxInstalledSize,
+                                TBool aHasExe, TBool aIsDriveSelectionRequired, 
+                                RPointerArray<CApplicationInfo>* aApplications = NULL, 
+                                RPointerArray<CNode>* aChildren = NULL);
 
-				@return The name of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C const TDesC& ComponentName() const;
+            /**
+                Adds a child node to this node. This method passes the ownership of the child node
+                to this node so the caller must pop it from the cleanup stack but not delete.
 
-			/**
-				Returns the version of a component.
+                @return The pointer to the child node to be added.
+                @leave System wide error code
+            */
+            IMPORT_C void AddChildL(CNode* aChild);
+
+            /**
+                Returns the name of software type of a component.
 
-				@return The version of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C const TDesC& Version() const;
+                @return The name of the software type of a component.
+                @leave System wide error code
+            */
+            IMPORT_C const TDesC& SoftwareTypeName() const;
+
+            /**
+                Returns the name of a component.
 
-			/**
-				Returns the name of the component vendor.
+                @return The name of a component.
+                @leave System wide error code
+            */
+            IMPORT_C const TDesC& ComponentName() const;
 
-				@return The name of the component vendor.
-				@leave System wide error code
-			*/
-			IMPORT_C const TDesC& Vendor() const;
+            /**
+                Returns the version of a component.
 
-			/**
-				Returns the SCOMO state of a component. This has meaning only if the installStatus of the component
-				is not EInvalid or ENewComponent.
+                @return The version of a component.
+                @leave System wide error code
+            */
+            IMPORT_C const TDesC& Version() const;
 
-				@return The SCOMO state of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C TScomoState ScomoState() const;
+            /**
+                Returns the name of the component vendor.
 
-			/**
-				Returns the installation status of a component.
+                @return The name of the component vendor.
+                @leave System wide error code
+            */
+            IMPORT_C const TDesC& Vendor() const;
 
-				@return The installation status of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C TInstallStatus InstallStatus() const;
+            /**
+                Returns the SCOMO state of a component. This has meaning only if the installStatus of the component
+                is not EInvalid or ENewComponent.
+
+                @return The SCOMO state of a component.
+                @leave System wide error code
+            */
+            IMPORT_C TScomoState ScomoState() const;
 
-			/**
-				Returns the Id of a component.
+            /**
+                Returns the installation status of a component.
 
-				@return The Id of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C TComponentId ComponentId() const;
+                @return The installation status of a component.
+                @leave System wide error code
+            */
+            IMPORT_C TInstallStatus InstallStatus() const;
+
+            /**
+                Returns the Id of a component.
 
-			/**
-				Returns the global Id of a component.
+                @return The Id of a component.
+                @leave System wide error code
+            */
+            IMPORT_C TComponentId ComponentId() const;
 
-				@return The global Id of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C const TDesC& GlobalComponentId() const;
+            /**
+                Returns the global Id of a component.
 
-			/**
-				Returns the authenticity of a component.
+                @return The global Id of a component.
+                @leave System wide error code
+            */
+            IMPORT_C const TDesC& GlobalComponentId() const;
 
-				@return The authenticity of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C TAuthenticity Authenticity() const;
-
-			/**
-				Returns user capabilities required by a component.
+            /**
+                Returns the authenticity of a component.
 
-				@return The user grantable capabilities.
-				@leave System wide error code
-			*/
-			IMPORT_C const TCapabilitySet& UserGrantableCaps() const;
+                @return The authenticity of a component.
+                @leave System wide error code
+            */
+            IMPORT_C TAuthenticity Authenticity() const;
 
-			/**
-				Returns the maximum size of a component after installation.
+            /**
+                Returns user capabilities required by a component.
 
-				@return The maximum size of a component.
-				@leave System wide error code
-			*/
-			IMPORT_C TInt MaxInstalledSize() const;
+                @return The user grantable capabilities.
+                @leave System wide error code
+            */
+            IMPORT_C const TCapabilitySet& UserGrantableCaps() const;
+
+            /**
+                Returns the maximum size of a component after installation.
 
-			/**
-				Returns the array of CComponentInfo objects for the components embedded
-				in the component being queried.
+                @return The maximum size of a component.
+                @leave System wide error code
+            */
+            IMPORT_C TInt MaxInstalledSize() const;
 
-				@return The array of the embedded CComponentInfo objects.
-				@leave System wide error code
-			*/
-			IMPORT_C const RPointerArray<CNode>& Children() const;
+            /**
+                Returns the array of CComponentInfo objects for the components embedded
+                in the component being queried.
 
-			/**
-				Destructor.
-			*/
-			IMPORT_C virtual ~CNode();
-			/**
-				Returns the HasExecutable Flag which indicates whether the
-				component has an executable.
+                @return The array of the embedded CComponentInfo objects.
+                @leave System wide error code
+            */
+            IMPORT_C const RPointerArray<CNode>& Children() const;
 
-				@return The HasExecutable TBool Flag .
-			*/
-			IMPORT_C TBool HasExecutable() const;
+            /**
+                Destructor.
+            */
+            IMPORT_C virtual ~CNode();
+            /**
+                Returns the HasExecutable Flag which indicates whether the
+                component has an executable.
 
-		private:
-			friend class CComponentInfo;
-
-			CNode();
-			CNode& operator=(const CNode& other);
-			CNode(const CNode& other);
+                @return The HasExecutable TBool Flag .
+            */
+            IMPORT_C TBool HasExecutable() const;
+            
+            /**
+            Returns the IsDriveSelectionRequired Flag which indicates whether the
+            drive selection is required or not.
 
-			static CNode* NewL(RReadStream& aStream);
-			void ExternalizeL(RWriteStream& aStream) const;
+            @return The IsDriveSelectionRequired TBool Flag .
+            */
+            IMPORT_C TBool DriveSeletionRequired() const;
+            
+            /**
+            Returns the applications in the component being queried.
 
-			HBufC* iSoftwareTypeName;				///< The name of software type of the component
-			HBufC* iComponentName;					///< The name of the software component
-			HBufC* iVersion;						///< The Version of the software component 
-			HBufC* iVendor;							///< The of the vendor of the software component
-			HBufC* iGlobalComponentId;				///< The global id of the component if already installed
-			TScomoState iScomoState;				///< The SCOMO status of the component
-			TInstallStatus iInstallStatus;			///< Informs whether the component is already installed or upgradeable
-			TComponentId iComponentId;				///< The unique id of the component if already installed
-			TAuthenticity iAuthenticity;			///< The authenticity of the component
-			TCapabilitySet iUserGrantableCaps;		///< User grantable capabilities required be the component
-			TInt iMaxInstalledSize;					///< The maximum size of the component after installation
-			TBool iHasExe;							///< Indicates Whether the component has an executable
-			RCPointerArray<CNode> iChildren;		///< The array of components embedded in the component being queried
-			};
+            @return The array of the CApplicationInfo objects.
+            @leave System wide error code
+            */
+            IMPORT_C const RPointerArray<CApplicationInfo>& Applications() const;
 
-	public:
+        private:
+            friend class CComponentInfo;
 
-		/**
-			Creates a new instance of the CComponentInfo class.
+            CNode();
+            CNode& operator=(const CNode& other);
+            CNode(const CNode& other);
+
+            static CNode* NewL(RReadStream& aStream);
+            void ExternalizeL(RWriteStream& aStream) const;
 
-			@leave System wide error code
-		 */
-		IMPORT_C static CComponentInfo* NewL();
-
-		/**
-			Creates a new instance of the CComponentInfo class.
+            HBufC* iSoftwareTypeName;                           ///< The name of software type of the component
+            HBufC* iComponentName;                              ///< The name of the software component
+            HBufC* iVersion;                                    ///< The Version of the software component 
+            HBufC* iVendor;                                     ///< The of the vendor of the software component
+            HBufC* iGlobalComponentId;                          ///< The global id of the component if already installed
+            TScomoState iScomoState;                            ///< The SCOMO status of the component
+            TInstallStatus iInstallStatus;                      ///< Informs whether the component is already installed or upgradeable
+            TComponentId iComponentId;                          ///< The unique id of the component if already installed
+            TAuthenticity iAuthenticity;                        ///< The authenticity of the component
+            TCapabilitySet iUserGrantableCaps;                  ///< User grantable capabilities required be the component
+            TInt iMaxInstalledSize;                             ///< The maximum size of the component after installation
+            TBool iHasExe;                                      ///< Indicates Whether the component has an executable
+            TBool iIsDriveSelectionRequired;                    ///< Indicates Whether drive selection is required or not.
+            RCPointerArray<CApplicationInfo> iApplications;     ///< The array of application info of the component being queried
+            RCPointerArray<CNode> iChildren;                    ///< The array of components embedded in the component being queried            
+            };
 
-			@leave System wide error code
-		 */
-		IMPORT_C static CComponentInfo* NewLC();
+    public:
 
-		/**
-			Returns the root node of this CComponentInfo object.
-
-			@return The root node of this CComponentInfo object.
-			@leave System wide error code
-		 */
-		IMPORT_C const CNode& RootNodeL() const;
+        /**
+            Creates a new instance of the CComponentInfo class.
 
-		/**
-			Sets a node as the root node of this component info. This method passes the
-			ownership of the root node to this object so the caller must pop it from the
-			cleanup stack but not delete.
-			
-			@return The pointer to the root node to be set.
-			@leave System wide error code
-		 */
-		IMPORT_C void SetRootNodeL(CNode* aRootNode);
+            @leave System wide error code
+         */
+        IMPORT_C static CComponentInfo* NewL();
+
+        /**
+            Creates a new instance of the CComponentInfo class.
+
+            @leave System wide error code
+         */
+        IMPORT_C static CComponentInfo* NewLC();
+
+        /**
+            Returns the root node of this CComponentInfo object.
 
-		/**
-			Returns the pointer to the root node of this object. The caller takes the ownership
-			of this node and must delete it when no longer needed. After this call the CComponentInfo
-			object doesn't contain a root node. Hence, calling RootNodeL() results in the leave with
-			 KErrNotFound.
-			
-			@return The pointer to the root node.
-			@leave System wide error code
-		 */
-		IMPORT_C void SetRootNodeAsChildL(CNode& aParentNode);
+            @return The root node of this CComponentInfo object.
+            @leave System wide error code
+         */
+        IMPORT_C const CNode& RootNodeL() const;
 
-		/**
-			Externalises an object of this class to a write stream.
+        /**
+            Sets a node as the root node of this component info. This method passes the
+            ownership of the root node to this object so the caller must pop it from the
+            cleanup stack but not delete.
+            
+            @return The pointer to the root node to be set.
+            @leave System wide error code
+         */
+        IMPORT_C void SetRootNodeL(CNode* aRootNode);
 
-			@param aStream Stream to which the object should be externalised.
-			@leave System wide error code
-		 */
-		IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+        /**
+            Returns the pointer to the root node of this object. The caller takes the ownership
+            of this node and must delete it when no longer needed. After this call the CComponentInfo
+            object doesn't contain a root node. Hence, calling RootNodeL() results in the leave with
+             KErrNotFound.
+            
+            @return The pointer to the root node.
+            @leave System wide error code
+         */
+        IMPORT_C void SetRootNodeAsChildL(CNode& aParentNode);
 
-		/**
-			Allocates a buffer for serialized CComponentInfo and registers it in the @see TIpcArgs class.
-			The SIF server serializes a @see CComponentInfo object into this buffer.
+        /**
+            Externalises an object of this class to a write stream.
 
-			@param aIpcArgs Arguments to be sent to the SIF Server.
-			@param aIndex An index value that identifies the slot in the array of arguments into which
-			the argument value is to be placed. This must be a value in the range 0 to 3.
-			@leave System wide error code
-		*/
-		IMPORT_C void PrepareForIpcL(TIpcArgs& aIpcArgs, TInt aIndex);
+            @param aStream Stream to which the object should be externalised.
+            @leave System wide error code
+         */
+        IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 
-		/**
-			Destructor.
-		*/
-		IMPORT_C virtual ~CComponentInfo();
+        /**
+            Allocates a buffer for serialized CComponentInfo and registers it in the @see TIpcArgs class.
+            The SIF server serializes a @see CComponentInfo object into this buffer.
+
+            @param aIpcArgs Arguments to be sent to the SIF Server.
+            @param aIndex An index value that identifies the slot in the array of arguments into which
+            the argument value is to be placed. This must be a value in the range 0 to 3.
+            @leave System wide error code
+        */
+        IMPORT_C void PrepareForIpcL(TIpcArgs& aIpcArgs, TInt aIndex);
 
-	private:
-		CComponentInfo();
-		CComponentInfo& operator=(const CComponentInfo& other);
-		CComponentInfo(const CComponentInfo& other);
+        /**
+            Destructor.
+        */
+        IMPORT_C virtual ~CComponentInfo();
 
-		void InternalizeFromExternalBufferL() const;
-		void ConstInternalizeL(RReadStream& aStream) const;
-		void CleanupExternalBuffer() const;
+    private:
+        CComponentInfo();
+        CComponentInfo& operator=(const CComponentInfo& other);
+        CComponentInfo(const CComponentInfo& other);
 
-		CNode* iRootNode;
+        void InternalizeFromExternalBufferL() const;
+        void ConstInternalizeL(RReadStream& aStream) const;
+        void CleanupExternalBuffer() const;
 
-		mutable HBufC8* iExternalBuffer;
-		mutable TPtr8 iExternalBufferPtr;
-		mutable TBool iDeferredInternalization;
+        CNode* iRootNode;
+
+        mutable HBufC8* iExternalBuffer;
+        mutable TPtr8 iExternalBufferPtr;
+        mutable TBool iDeferredInternalization;
 
-		enum
-			{
-			// An arbitrary limit for the length of a single descriptor, for example aComponentName, aVersion or aVendor.
-			KMaxDescriptorLength = 256,
-			// An arbitrary limit for the total length of iSoftwareTypeName, iComponentName, iVersion, iVendor and iGlobalComponentId.
-			KMaxHeapBufLength = 2048,
-			// An arbitrary size of the internal buffer for sending the component info across the process boundary
-			KMaxComponentInfoStreamedSize = 2*KMaxHeapBufLength+6*sizeof(TInt)+sizeof(TInt8),
-			};
-		};
+        enum
+            {
+            // An arbitrary limit for the length of a single descriptor, for example aComponentName, aVersion or aVendor.
+            KMaxDescriptorLength = 256,
+            // An arbitrary limit for the total length of iSoftwareTypeName, iComponentName, iVersion, iVendor and iGlobalComponentId.
+            KMaxHeapBufLength = 2048,
+            // An arbitrary size of the internal buffer for sending the component info across the process boundary
+            KMaxComponentInfoStreamedSize = 2*KMaxHeapBufLength+6*sizeof(TInt)+sizeof(TInt8),
+            };
+        };
 
 
-	/**
-		The COpaqueNamedParams class is a container for integer and string values identified by name.
+    /**
+        The COpaqueNamedParams class is a container for integer and string values identified by name.
 
-		This class is designed for sending opaque params across the process boundary. For example, a SIF
-		client may use it to send custom arguments to the SIF server or receive custom results.
-	*/
-	class COpaqueNamedParams : public CBase
-		{
-	public:
-		/**
-			Creates a new instance of the COpaqueNamedParams class.
+        This class is designed for sending opaque params across the process boundary. For example, a SIF
+        client may use it to send custom arguments to the SIF server or receive custom results.
+    */
+    class COpaqueNamedParams : public CBase
+        {
+    public:
+        /**
+            Creates a new instance of the COpaqueNamedParams class.
 
-			@leave System wide error code
-		 */
-		IMPORT_C static COpaqueNamedParams* NewL();
+            @leave System wide error code
+         */
+        IMPORT_C static COpaqueNamedParams* NewL();
 
-		/**
-			Creates a new instance of the COpaqueNamedParams class.
+        /**
+            Creates a new instance of the COpaqueNamedParams class.
 
-			@leave System wide error code
-		 */
-		IMPORT_C static COpaqueNamedParams* NewLC();
+            @leave System wide error code
+         */
+        IMPORT_C static COpaqueNamedParams* NewLC();
 
-		/**
-			Externalises an object of this class to a write stream.
+        /**
+            Externalises an object of this class to a write stream.
 
-			@param aStream Stream to which the object should be externalised.
-			@leave System wide error code
-		 */
-		IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+            @param aStream Stream to which the object should be externalised.
+            @leave System wide error code
+         */
+        IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 
-		/**
-			Internalises an object of this class from a read stream.
+        /**
+            Internalises an object of this class from a read stream.
 
-			@param aStream Stream from which the object should be internalised.
-			@leave System wide error code
-		 */
-		IMPORT_C void InternalizeL(RReadStream& aStream);
+            @param aStream Stream from which the object should be internalised.
+            @leave System wide error code
+         */
+        IMPORT_C void InternalizeL(RReadStream& aStream);
 
-		/**
-			Allocates a buffer and serializes the params of this object into it. The buffer is registered
-			in the @see TIpcArgs class in order to be sent to the SIF Server.
+        /**
+            Allocates a buffer and serializes the params of this object into it. The buffer is registered
+            in the @see TIpcArgs class in order to be sent to the SIF Server.
 
-			@param aIpcArgs Ipc arguments to be sent to the SIF Server.
-			@param aIndex An index value that identifies the slot in the array of arguments into which
-			the argument value is to be placed. This must be a value in the range 0 to 3.
-			@leave System wide error code
-		*/
-		IMPORT_C void PrepareArgumentsForIpcL(TIpcArgs& aIpcArgs, TInt aIndex) const;
+            @param aIpcArgs Ipc arguments to be sent to the SIF Server.
+            @param aIndex An index value that identifies the slot in the array of arguments into which
+            the argument value is to be placed. This must be a value in the range 0 to 3.
+            @leave System wide error code
+        */
+        IMPORT_C void PrepareArgumentsForIpcL(TIpcArgs& aIpcArgs, TInt aIndex) const;
 
-		/**
-			Allocates a buffer for serialized opaque results and registers it in the TIpcArgs class.
-			The SIF server serializes opaque results into this buffer.
+        /**
+            Allocates a buffer for serialized opaque results and registers it in the TIpcArgs class.
+            The SIF server serializes opaque results into this buffer.
 
-			@param aIpcArgs Arguments to be sent to the SIF Server.
-			@param aIndex An index value that identifies the slot in the array of arguments into which
-			the argument value is to be placed. This must be a value in the range 0 to 3.
-			@leave System wide error code
-		*/
-		IMPORT_C void PrepareResultsForIpcL(TIpcArgs& aIpcArgs, TInt aIndex);
+            @param aIpcArgs Arguments to be sent to the SIF Server.
+            @param aIndex An index value that identifies the slot in the array of arguments into which
+            the argument value is to be placed. This must be a value in the range 0 to 3.
+            @leave System wide error code
+        */
+        IMPORT_C void PrepareResultsForIpcL(TIpcArgs& aIpcArgs, TInt aIndex);
 
-		/**
-			Returns the number of the opaque params added to this object.
-			@leave System wide error code
-		*/
-		IMPORT_C TInt CountL() const;
+        /**
+            Returns the number of the opaque params added to this object.
+            @leave System wide error code
+        */
+        IMPORT_C TInt CountL() const;
 
-		/**
-			Adds a string param to this object. If a param with the same name already exists it gets overwritten.
+        /**
+            Adds a string param to this object. If a param with the same name already exists it gets overwritten.
 
-			@param aName The name of the string param to be added.
-			@param aValue The value of the string param to be added.
-			@leave KErrOverflow if the size of the name or value of the string param being added exceeds 128 bytes or
-			the memory allocated for all the params added to this container exceeds 512 bytes.
-			@leave System wide error code
-		*/
-		IMPORT_C void AddStringL(const TDesC& aName, const TDesC& aValue);
+            @param aName The name of the string param to be added.
+            @param aValue The value of the string param to be added.
+            @leave KErrOverflow if the size of the name or value of the string param being added exceeds 128 bytes or
+            the memory allocated for all the params added to this container exceeds 512 bytes.
+            @leave System wide error code
+        */
+        IMPORT_C void AddStringL(const TDesC& aName, const TDesC& aValue);
 
-		/**
-			Adds an integer param to this object. If a param with the same name already exists it gets overwritten.
+        /**
+            Adds an integer param to this object. If a param with the same name already exists it gets overwritten.
 
-			@param aName The name of the integer param to be added.
-			@param aValue The value of the integer param to be added.
-			@leave KErrOverflow if the size of the name the integer param being added exceeds 128 bytes or
-			the memory allocated for all the params added to this container exceeds 512 bytes.
-			@leave System wide error code
-		*/
-		IMPORT_C void AddIntL(const TDesC& aName, TInt aValue);
+            @param aName The name of the integer param to be added.
+            @param aValue The value of the integer param to be added.
+            @leave KErrOverflow if the size of the name the integer param being added exceeds 128 bytes or
+            the memory allocated for all the params added to this container exceeds 512 bytes.
+            @leave System wide error code
+        */
+        IMPORT_C void AddIntL(const TDesC& aName, TInt aValue);
 
-		/**
-			Returns the list of the names of params added to the object.
+        /**
+            Returns the list of the names of params added to the object.
 
-			@param aNames The list of the names of params. The caller is responsible for the instantiation
-			and cleanup of RPointerArray<HBufC>. The caller must also destroy all the elements of aNames added
-			by this method.
-			@leave System wide error code
-		*/
-		IMPORT_C void GetNamesL(RPointerArray<HBufC>& aNames) const; 
+            @param aNames The list of the names of params. The caller is responsible for the instantiation
+            and cleanup of RPointerArray<HBufC>. The caller must also destroy all the elements of aNames added
+            by this method.
+            @leave System wide error code
+        */
+        IMPORT_C void GetNamesL(RPointerArray<HBufC>& aNames) const; 
 
-		/**
-			Gets a reference to the string param identified by aName.
+        /**
+            Gets a reference to the string param identified by aName.
 
-			@param aName The name of the string param to be obtained.
-			@return The value of the string param or KNullDesC if not found.
-			@leave System wide error code
-		*/
-		IMPORT_C const TDesC& StringByNameL(const TDesC& aName) const;
+            @param aName The name of the string param to be obtained.
+            @return The value of the string param or KNullDesC if not found.
+            @leave System wide error code
+        */
+        IMPORT_C const TDesC& StringByNameL(const TDesC& aName) const;
 
-		/**
-			Returns the integer param identified by aName.
+        /**
+            Returns the integer param identified by aName.
 
-			@param aName The name of the integer param to be obtained.
-			@param aValue The value of the integer param returned by this method.
-			@return Indicates if the requested param has been found.
-			@leave System wide error code
-		*/
-		IMPORT_C TBool GetIntByNameL(const TDesC& aName, TInt& aValue) const;
+            @param aName The name of the integer param to be obtained.
+            @param aValue The value of the integer param returned by this method.
+            @return Indicates if the requested param has been found.
+            @leave System wide error code
+        */
+        IMPORT_C TBool GetIntByNameL(const TDesC& aName, TInt& aValue) const;
 
-		/**
-			Returns the integer param identified by aName.
+        /**
+            Returns the integer param identified by aName.
 
-			@param aName The name of the integer param to be obtained.
-			@return The value of the integer param.
-			@leave KErrNotFound if not found
-			@leave Or other system-wide error code.
-		*/
-		IMPORT_C TInt IntByNameL(const TDesC& aName) const;
+            @param aName The name of the integer param to be obtained.
+            @return The value of the integer param.
+            @leave KErrNotFound if not found
+            @leave Or other system-wide error code.
+        */
+        IMPORT_C TInt IntByNameL(const TDesC& aName) const;
 
-		/**
-			Empties the container and frees all memory allocated to the params.
-		*/
-		IMPORT_C void Cleanup();
+        /**
+            Empties the container and frees all memory allocated to the params.
+        */
+        IMPORT_C void Cleanup();
 
-		/**
-			Destructor.
-		*/
-		IMPORT_C virtual ~COpaqueNamedParams();
+        /**
+            Destructor.
+        */
+        IMPORT_C virtual ~COpaqueNamedParams();
 
-	private:
-		COpaqueNamedParams();
-		COpaqueNamedParams& operator=(const COpaqueNamedParams& other);
-		COpaqueNamedParams(const COpaqueNamedParams& other);
-		
-		void InternalizeFromExternalBufferL() const;
-		void ConstInternalizeL(RReadStream& aStream) const;
-		void ConstCleanup() const;
-		void CleanupExternalBuffer() const;
-		void VerifyExternalizedSizeForNewParamL(TInt aNameSize, TInt aValueSize) const;
-		void VerifyExternalizedSizeForExistingParamL(TInt aOldValueSize, TInt aNewValueSize) const;
+    private:
+        COpaqueNamedParams();
+        COpaqueNamedParams& operator=(const COpaqueNamedParams& other);
+        COpaqueNamedParams(const COpaqueNamedParams& other);
+        
+        void InternalizeFromExternalBufferL() const;
+        void ConstInternalizeL(RReadStream& aStream) const;
+        void ConstCleanup() const;
+        void CleanupExternalBuffer() const;
+        void VerifyExternalizedSizeForNewParamL(TInt aNameSize, TInt aValueSize) const;
+        void VerifyExternalizedSizeForExistingParamL(TInt aOldValueSize, TInt aNewValueSize) const;
 
-		struct TItem
-			{
-			HBufC* iName;
-			HBufC* iValue;
-			};
-		RArray<TItem> iParams;
+        struct TItem
+            {
+            HBufC* iName;
+            HBufC* iValue;
+            };
+        RArray<TItem> iParams;
 
-		mutable HBufC8* iExternalBuffer;
-		mutable TPtr8 iExternalBufferPtr;
-		mutable TBool iDeferredInternalization;
-		mutable TInt iExternalizedSize;
+        mutable HBufC8* iExternalBuffer;
+        mutable TPtr8 iExternalBufferPtr;
+        mutable TBool iDeferredInternalization;
+        mutable TInt iExternalizedSize;
 
-		enum
-			{
-			// An arbitrary limit for the length of a single descriptor (the name or value of a param)
-			KMaxDescriptorLength = 128,
-			// An arbitrary size of the internal buffer for sending the component info across the process boundary
-			KMaxExternalizedSize = 512
-			};
+        enum
+            {
+            // An arbitrary limit for the length of a single descriptor (the name or value of a param)
+            KMaxDescriptorLength = 128,
+            // An arbitrary size of the internal buffer for sending the component info across the process boundary
+            KMaxExternalizedSize = 512
+            };
 
-		};
+        };
 
 	/**
 		Pre-defined opaque arguments and results:
-		"InstallInactive" - If provided in the opaque installation parameters, requests the installation of
+		"InstallInactive" - Yes/No 
+		If provided in the opaque installation parameters, requests the installation of
 		a component without activating it. Otherwise, components are activeted after installation by default.
-		"InstallSilently" - If provided in the opaque installation parameters, requests a silent installation,
+		
+		"InstallSilently" - Yes/No 
+		If provided in the opaque installation parameters, requests a silent installation,
 		i.e. one which avoids interaction with the user whenever possible. Please note that this may involve
 		additional security checks, and is not necessarily supported by all installers.
-		"ComponentId" - If returned in the custom results, provides the id of the newly added component
+
+		"Drive" -  Array of TUInt 
+		Preffered drive in the order of priority with zero index being the highest priority
+		
+		"Languages" - Array of TLanguage
+		List of languages to use
+		
+		"OCSPUrl" - TDesC
+		The OSCP responder's URL
+
+		"PerformOCSP" - TSifPolicy
+		Whether OCSP should be performed or not or Request user
+
+		"IgnoreOCSPWarnings" - TSifPolicy
+		Action in case of OCSP warnings 
+
+		"AllowUpgrade" - TSifPolicy
+		Allow an upgrade (if yes, upgrade the data as well) 
+
+		"InstallOptionalItems" - TSifPolicy
+		Install optional items in package 
+
+		"AllowUntrusted" - TSifPolicy
+		Check if installation of untrusted (uncertified) package is allowed 
+
+		"GrantCapabilities" - TSifPolicy
+		Whether to grant user capabilities 
+
+		"AllowAppShutdown" - TSifPolicy
+		Should we silently kill an application if needed 
+
+		"AllowAppBreakDependency" - TSifPolicy
+		Allow uninstall of dependent packages 
+
+		"AllowOverwrite" - TSifPolicy
+		Can files be overwritten 
+
+		"DisplayPackageInfo" - TSifPolicy
+		Whether to skip infos 
+
+		"AllowDownload" - TSifPolicy
+		Is it ok to download 
+
+		"UserName" - TDesC
+		UserName for Download request
+
+		"Password" - TDesC
+		Password for Download request
+
+		"SourceUrl" - TDesC
+		SourceUrl or Directory
+
+		"IAP" - TInt
+		Internet Access Point
+
+		"SNAP" -  TInt
+		Service Network Access Point, alternative to passing iap 
+
+  		"MimeType" -  TDesC
+		Represents MIME Type to be used during HTTP download
+
+  		"Charset" -  TDesC
+		Represents charset to be used during HTTP download 
+
+		"ComponentId" - Array of TUInt
+		If returned in the custom results, provides the id's of the newly added components
 		after an install. Please note that not all installers (i.e. SIF Plugins) may support this.
-		"ExtendedErrCode" - If returned in the custom results gives the extended error information, that is 
-		specific to a software component type.
+		Eg: Includes embedded sis packages component ID's as well for native installer
+
+		"ErrCategory" - TInt
+		If returned in the custom results gives the error category, that is defined by USIF
+
+		"ErrCode" - TInt
+		If returned in the custom results gives one of the USIF error code.
+		
+		"ExtendedErrCode" - TInt
+		If returned in the custom results gives the extended error information, that is specific to 
+		a software component type.
+
+		"ErrMessage" - TDesC
+		If returned in the custom results gives the localized error message
+
+		"ErrMessageDetails" - TDesC
+		If returned in the custom results gives the localized error message details about error
+
 	*/
 	_LIT(KSifInParam_InstallInactive, "InstallInactive");
 	_LIT(KSifInParam_InstallSilently, "InstallSilently");
-	_LIT(KSifOutParam_ComponentId, "ComponentId");
-	_LIT(KSifOutParam_ExtendedErrCode, "ExtendedErrCode");
+	_LIT(KSifInParam_Drive, "Drive");
+	_LIT(KSifInParam_Languages, "Languages");
+	_LIT(KSifInParam_OCSPUrl, "OCSPUrl");
+	_LIT(KSifInParam_PerformOCSP, "PerformOCSP");
+	_LIT(KSifInParam_IgnoreOCSPWarnings, "IgnoreOCSPWarnings");
+	_LIT(KSifInParam_AllowUpgrade, "AllowUpgrade");
+	_LIT(KSifInParam_InstallOptionalItems, "InstallOptionalItems");
+	_LIT(KSifInParam_AllowUntrusted, "AllowUntrusted");
+	_LIT(KSifInParam_GrantCapabilities, "GrantCapabilities");
+	_LIT(KSifInParam_AllowAppShutdown, "AllowAppShutdown");
+	_LIT(KSifInParam_AllowAppBreakDependency, "AllowAppBreakDependency");
+	_LIT(KSifInParam_AllowOverwrite, "AllowOverwrite");
+	_LIT(KSifInParam_DisplayPackageInfo, "DisplayPackageInfo");
+	_LIT(KSifInParam_AllowDownload, "AllowDownload");
+	_LIT(KSifInParam_UserName, "UserName");
+	_LIT(KSifInParam_Password, "Password");
+	_LIT(KSifInParam_SourceUrl, "SourceUrl");
+	_LIT(KSifInParam_IAP, "IAP");
+	_LIT(KSifInParam_SNAP, "SNAP");
+	_LIT(KSifInParam_MimeType, "MimeType");
+	_LIT(KSifInParam_Charset, "Charset");
 
-	/**
-		SIF Server Secure ID
-	
-		Installers should use this id to verify that installation requests come from the SIF Server.
-	*/
-	_LIT_SECURE_ID(KSifServerUid,0x10285BCB);
+	_LIT(KSifOutParam_ComponentId, "ComponentId");
+	_LIT(KSifOutParam_ErrCategory, "ErrCategory");
+	_LIT(KSifOutParam_ErrCode, "ErrCode");
+	_LIT(KSifOutParam_ExtendedErrCode, "ExtendedErrCode");
+	_LIT(KSifOutParam_ErrMessage, "ErrMessage");
+	_LIT(KSifOutParam_ErrMessageDetails, "ErrMessageDetails");
 
-	} // namespace Usif
+    /**
+        SIF Server Secure ID
+    
+        Installers should use this id to verify that installation requests come from the SIF Server.
+    */
+    _LIT_SECURE_ID(KSifServerUid,0x10285BCB);
+
+    } // namespace Usif
 
 #endif // USIF_SIF_COMMON_H
--- a/installationservices/swinstallationfw/inc/sifutils.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/inc/sifutils.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -25,18 +25,30 @@
 
 #ifndef SIFUTILS_H
 #define SIFUTILS_H
+#include <e32cmn.h> 
 
 namespace Usif
 	{
+	
 		/**
 			This function uninstalls a component by removing it from the SCR and deleting its files.
 			This is a synchronous API and therefore doesn't support cancellation. Hence, it is designated
-			for simple installers that don't require this functionlaity.
+			for simple installers that don't require this functionality.
 
 			@param aComponentId The id of a component to be uninstalled
 			@leave System wide error code
 		*/
 		IMPORT_C void UninstallL(TComponentId aComponentId);
+		
+		/**
+           Generate a new AppUid to be used to register non native applications.
+		   
+		   The cenrep file of SCR contains a list of AppUid ranges preallocated to non native apps.
+           This API can be used to request a new UID from these ranges.
+
+			@return an AppUid if available, else a null object is returned.
+		 */
+		IMPORT_C TUid GenerateNewAppUidL();
 	}
 
 #endif // SIFUTILS_H
--- a/installationservices/swinstallationfw/inc/tsif.iby	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/inc/tsif.iby	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -24,6 +24,9 @@
 define ZDRIVE \epoc32\data\Z
 define DATADRIVE \tusif\tsif\data
 
+//This is to be removed if SIFLauncher is added as part of production code
+#include "siflauncherconfig.iby"
+
 ECOM_PLUGIN(refnativeplugin.dll,10285BC3.rsc)
 ECOM_PLUGIN(testnonnativeplugin.dll,10285BD1.rsc)
 
@@ -31,6 +34,8 @@
 
 data=ZDRIVE\tusif\tsif\tsif.ini									\tusif\tsif\tsif.ini
 data=ZDRIVE\tusif\tsif\tsif.script								\tusif\tsif\tsif.script
+data=ZDRIVE\tusif\tsif\tsif_appuidgen.ini							\tusif\tsif\tsif_appuidgen.ini
+data=ZDRIVE\tusif\tsif\tsif_appuidgen.script							\tusif\tsif\tsif_appuidgen.script
 data=ZDRIVE\tusif\tsifintegration\tsifintegration.ini			\tusif\tsifintegration\tsifintegration.ini
 data=ZDRIVE\tusif\tsifintegration\tsifintegration.script		\tusif\tsifintegration\tsifintegration.script
 data=ZDRIVE\tusif\tsifintegration\data\compound.sifrefbinpkg	\tusif\tsifintegration\data\compound.sifrefbinpkg
@@ -57,7 +62,24 @@
 data=ABI_DIR\BUILD_DIR\sifintegrationtestmultiplefiles.sis			DATADRIVE\sifintegrationtestmultiplefiles.sis
 data=ABI_DIR\BUILD_DIR\sifintegrationtestextensionindifferentcase.sis		DATADRIVE\sifintegrationtestextensionindifferentcase.sis
 data=ABI_DIR\BUILD_DIR\sifintegrationtestwithonlydll.sis			DATADRIVE\sifintegrationtestwithonlydll.sis
-data=ABI_DIR\BUILD_DIR\sifintegsufficientusercaps.sis			DATADRIVE\sifintegsufficientusercaps.sis
+data=ABI_DIR\BUILD_DIR\sifintegsufficientusercaps.sis				DATADRIVE\sifintegsufficientusercaps.sis
+
+data=ABI_DIR\BUILD_DIR\sifintegrationtestbasewithdrivedialog.sis				DATADRIVE\sifintegrationtestbasewithdrivedialog.sis
+data=ABI_DIR\BUILD_DIR\sifintegrationtestupgradewithdrivedialog.sis				DATADRIVE\sifintegrationtestupgradewithdrivedialog.sis
+data=ABI_DIR\BUILD_DIR\embeddedinnerwithupgrade.sis						DATADRIVE\embeddedinnerwithupgrade.sis
+data=ABI_DIR\BUILD_DIR\embeddedinnerwithupgradeouterasbasewithdrivedialog.sis			DATADRIVE\embeddedinnerwithupgradeouterasbasewithdrivedialog.sis
+
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotest.sis					DATADRIVE\sifgetcompapparcinfotest.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestmultilang.sis				DATADRIVE\sifgetcompapparcinfotestmultilang.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestmultifiles.sis				DATADRIVE\sifgetcompapparcinfotestmultifiles.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestnonapparcrsc.sis				DATADRIVE\sifgetcompapparcinfotestnonapparcrsc.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestnonapparcpath.sis				DATADRIVE\sifgetcompapparcinfotestnonapparcpath.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestmultiapp.sis				DATADRIVE\sifgetcompapparcinfotestmultiapp.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestmultiapp_OneAppWithNonApparcRsc.sis 	DATADRIVE\sifgetcompapparcinfotestmultiapp_OneAppWithNonApparcRsc.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotest_corruptrsc.sis				DATADRIVE\sifgetcompapparcinfotest_corruptrsc.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestembedded_innerwithdifficon.sis		DATADRIVE\sifgetcompapparcinfotestembedded_innerwithdifficon.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotest_nolocale.sis				DATADRIVE\sifgetcompapparcinfotest_nolocale.sis
+data=ZDRIVE\tusif\tsif\data\sifgetcompapparcinfotestmultifiles_largeandsmallextn.sis		DATADRIVE\sifgetcompapparcinfotestmultifiles_largeandsmallextn.sis
 
 data=ZDRIVE\tusif\tswtype\data\sifswtypebase.sis				\tusif\tswtype\data\sifswtypebase.sis
 data=ZDRIVE\tusif\tswtype\data\sifswtypeupgrade.sis				\tusif\tswtype\data\sifswtypeupgrade.sis
--- a/installationservices/swinstallationfw/source/sifcommon.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/source/sifcommon.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -89,6 +89,106 @@
 
 // ##########################################################################################
 
+CComponentInfo::CApplicationInfo::CApplicationInfo()
+    {
+    }
+
+EXPORT_C CComponentInfo::CApplicationInfo::~CApplicationInfo()
+    {
+    delete iName;
+    delete iGroupName;
+    delete iIconFileName;
+    }
+
+EXPORT_C CComponentInfo::CApplicationInfo* CComponentInfo::CApplicationInfo::NewLC(const TUid& aAppUid, const TDesC& aName, const TDesC& aGroupName, const TDesC& aIconFileName)
+    {
+        _LIT(emptyString,"");
+        // Leave if aName, aGroupName or aIconFileName exceeds KMaxDescriptorLength
+       if ((&aName != NULL && aName.Length() > KMaxDescriptorLength) || 
+               (&aGroupName != NULL && aGroupName.Length() > KMaxDescriptorLength) ||
+               (&aIconFileName != NULL && aIconFileName.Length() > KMaxDescriptorLength))
+            {
+            User::Leave(KErrOverflow);
+            }
+        
+       CComponentInfo::CApplicationInfo* self = new (ELeave) CComponentInfo::CApplicationInfo();
+       CleanupStack::PushL(self);
+
+        self->iAppUid = aAppUid;  
+        if(&aName == NULL)
+            {
+            self->iName = emptyString().AllocL();
+            }
+        else
+            {
+            self->iName = aName.AllocL();
+            }
+   
+        if(&aGroupName == NULL)
+            {
+            self->iGroupName = emptyString().AllocL();
+            }
+        else
+            {
+            self->iGroupName = aGroupName.AllocL();
+            }
+        
+        if(&aIconFileName == NULL)
+            {
+            self->iIconFileName = emptyString().AllocL();
+            }
+        else
+            {
+            self->iIconFileName = aIconFileName.AllocL();
+            }     
+    
+        return self;
+    }
+
+EXPORT_C const TUid& CComponentInfo::CApplicationInfo::AppUid() const
+    {
+    return iAppUid;
+    }
+
+EXPORT_C const TDesC& CComponentInfo::CApplicationInfo::Name() const
+    {
+    return *iName;
+    }
+
+EXPORT_C const TDesC& CComponentInfo::CApplicationInfo::GroupName() const
+    {
+    return *iGroupName;
+    }
+
+EXPORT_C const TDesC& CComponentInfo::CApplicationInfo::IconFileName() const            
+    {
+    return *iIconFileName;
+    }
+
+CComponentInfo::CApplicationInfo* CComponentInfo::CApplicationInfo::NewL(RReadStream& aStream)
+    {    
+    CApplicationInfo* self = new (ELeave) CApplicationInfo();
+    CleanupStack::PushL(self);
+    
+    self->iAppUid = TUid::Uid(aStream.ReadInt32L());
+    self->iName = HBufC::NewL(aStream, KMaxDescriptorLength);
+    self->iGroupName = HBufC::NewL(aStream, KMaxDescriptorLength);
+    self->iIconFileName = HBufC::NewL(aStream, KMaxDescriptorLength);
+    
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+void CComponentInfo::CApplicationInfo::ExternalizeL(RWriteStream& aStream) const
+    {
+    aStream.WriteInt32L(iAppUid.iUid);    
+    aStream << *iName;
+    aStream << *iGroupName;
+    aStream << *iIconFileName;
+    }
+            
+// ##########################################################################################
+
 CComponentInfo::CNode::CNode() : iAuthenticity(ENotAuthenticated)
 	{
 	iUserGrantableCaps.SetEmpty();
@@ -102,7 +202,8 @@
 	delete iVersion;
 	delete iVendor;
 
-	iChildren.Close();
+	iApplications.Close();
+	iChildren.Close();	
 	}
 
 EXPORT_C CComponentInfo::CNode* CComponentInfo::CNode::NewLC(const TDesC& aSoftwareTypeName, const TDesC& aComponentName,
@@ -110,8 +211,8 @@
 															TInstallStatus aInstallStatus, TComponentId aComponentId,
 															const TDesC& aGlobalComponentId, TAuthenticity aAuthenticity,
 															const TCapabilitySet& aUserGrantableCaps, TInt aMaxInstalledSize,
-															TBool aHasExe,
-															RPointerArray<CNode>* aChildren)
+															TBool aHasExe, TBool aIsDriveSelectionRequired,
+															RPointerArray<CApplicationInfo>* aApplications, RPointerArray<CNode>* aChildren)
 	{
 	// We leave if aSoftwareTypeName, aComponentName, aVersion, aVendor or aGlobalComponentId exceeds KMaxDescriptorLength
 	if (aSoftwareTypeName.Length() > KMaxDescriptorLength ||
@@ -147,7 +248,17 @@
 	self->iUserGrantableCaps = aUserGrantableCaps;
 	self->iMaxInstalledSize = aMaxInstalledSize;
 	self->iHasExe = aHasExe;
+	self->iIsDriveSelectionRequired = aIsDriveSelectionRequired;
 
+	if(aApplications != NULL)
+        {
+        for (TInt i=aApplications->Count()-1; i>=0; --i)
+            {
+            self->iApplications.InsertL((*aApplications)[i], 0);
+            aApplications->Remove(i);
+            }
+        }
+	
 	// Embedded Components
 	if(aChildren != NULL)
 		{
@@ -189,7 +300,17 @@
 	UnpackCapabilitySet(aStream.ReadInt32L(), self->iUserGrantableCaps);
 	self->iMaxInstalledSize = aStream.ReadInt32L();
 	self->iHasExe = aStream.ReadInt32L();
-
+	self->iIsDriveSelectionRequired = aStream.ReadInt32L();	
+	
+	const TInt numApplications = aStream.ReadInt32L();
+    for (TInt i=0; i<numApplications; ++i)
+        {
+        CApplicationInfo* app = CApplicationInfo::NewL(aStream);
+        CleanupStack::PushL(app);
+        self->iApplications.AppendL(app);
+        CleanupStack::Pop(app);
+        }
+	
 	const TInt numChildren = aStream.ReadInt32L();
 	for (TInt i=0; i<numChildren; ++i)
 		{
@@ -220,6 +341,14 @@
 	aStream.WriteInt32L(PackCapabilitySet(iUserGrantableCaps));
 	aStream.WriteInt32L(iMaxInstalledSize);
 	aStream.WriteInt32L(iHasExe);
+	aStream.WriteInt32L(iIsDriveSelectionRequired);
+	
+	const TInt numApplications = iApplications.Count();
+    aStream.WriteInt32L(numApplications);
+    for (TInt i=0; i<numApplications; ++i)
+        {
+        iApplications[i]->ExternalizeL(aStream);
+        }
 	
 	const TInt numChildren = iChildren.Count();
 	aStream.WriteInt32L(numChildren);
@@ -289,6 +418,16 @@
 	return iHasExe;
 	}
 
+EXPORT_C TBool CComponentInfo::CNode::DriveSeletionRequired() const
+    {
+    return iIsDriveSelectionRequired;
+    }
+
+EXPORT_C const RPointerArray<CComponentInfo::CApplicationInfo>& CComponentInfo::CNode::Applications() const
+    {
+    return iApplications;
+    }
+
 EXPORT_C const RPointerArray<CComponentInfo::CNode>& CComponentInfo::CNode::Children() const
 	{
 	return iChildren;
--- a/installationservices/swinstallationfw/source/sifutils.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/source/sifutils.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -19,44 +19,55 @@
 
 #include <usif/scr/scr.h>
 #include <usif/sts/sts.h>
-
-namespace Usif
-	{
-	EXPORT_C void UninstallL(TComponentId aComponentId)
-		{
-		// Connect to the SCR and start a transaction
-		RSoftwareComponentRegistry scr;
-		User::LeaveIfError(scr.Connect());
-		CleanupClosePushL(scr);
-		scr.CreateTransactionL();
-
-		// Connect to the STS and start a transaction
-		RStsSession sts;
-		sts.CreateTransactionL();
-		CleanupClosePushL(sts);
-
-		// Get a list of files to be deleted
-		RSoftwareComponentRegistryFilesList fileList;
-		fileList.OpenListL(scr, aComponentId);
-		CleanupClosePushL(fileList);
+#include "sifutils.h"
+#include "scr_internal.h"
 
+EXPORT_C void Usif::UninstallL(TComponentId aComponentId)
+	{
+	// Connect to the SCR and start a transaction
+	RSoftwareComponentRegistry scr;
+	User::LeaveIfError(scr.Connect());
+	CleanupClosePushL(scr);
+	scr.CreateTransactionL();
+		// Connect to the STS and start a transaction
+	RStsSession sts;
+	sts.CreateTransactionL();
+	CleanupClosePushL(sts);
+		// Get a list of files to be deleted
+	RSoftwareComponentRegistryFilesList fileList;
+	fileList.OpenListL(scr, aComponentId);
+	CleanupClosePushL(fileList);
 		// Unregister and delete the files from iFileList
-		HBufC* file = NULL;
-		while ((file = fileList.NextFileL()) != NULL)
-			{
-			CleanupStack::PushL(file);
-			sts.RemoveL(*file);
-			CleanupStack::PopAndDestroy(file);
-			}
-		CleanupStack::PopAndDestroy(&fileList);
+	HBufC* file = NULL;
+	while ((file = fileList.NextFileL()) != NULL)
+		{
+		CleanupStack::PushL(file);
+		sts.RemoveL(*file);
+		CleanupStack::PopAndDestroy(file);
+		}
+	CleanupStack::PopAndDestroy(&fileList);
+	
+	// Delete the component from the SCR
+	scr.DeleteComponentL(aComponentId);
 
-		// Delete the component from the SCR
-		scr.DeleteComponentL(aComponentId);
+	// Commit the STS & SCR transactions
+	sts.CommitL();
+	scr.CommitTransactionL();
+	CleanupStack::PopAndDestroy(2, &scr);
+	}
+	
+EXPORT_C TUid Usif::GenerateNewAppUidL()
+    {
+    // Connect to SCR using the internal client.
+    RScrInternalClient scr;
+    User::LeaveIfError(scr.Connect());
+    CleanupClosePushL(scr);
+    
+	//Request for an unused UID.
+    TUid generatedUid = scr.GenerateNewAppUidL();
+    
+    CleanupStack::PopAndDestroy(&scr);
+    return generatedUid;
+}
 
-		// Commit the STS & SCR transactions
-		sts.CommitL();
-		scr.CommitTransactionL();
 
-		CleanupStack::PopAndDestroy(2, &scr);
-		}
-	} // namespace Usif
--- a/installationservices/swinstallationfw/test/plugins/nonnativeplugin/source/testnonnativeplugin.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/plugins/nonnativeplugin/source/testnonnativeplugin.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -34,6 +34,7 @@
 	const TInt KUserGrantableCapsBitMask = 49152; // ECapabilityReadUserData, ECapabilityWriteUserData
 	const TInt KMaxInstalledSize = 1234;
 	const TBool KHasExe = EFalse;
+	const TBool KDriveSelectionRequired = EFalse;	
 	const TAuthenticity KAuthenticity = EAuthenticated;
 	_LIT_SECURE_ID(KSifTestSuiteSecureId, 0x10285BCC);
 	_LIT_SECURE_ID(KSifRefInstallerServerSecureId, 0x1028634E);
@@ -251,13 +252,14 @@
 		{
 		// Prepare capabilities
 		TCapabilitySet capSet;
+		RPointerArray<Usif::CComponentInfo::CApplicationInfo>* applications = NULL;
 		capSet.SetEmpty();
 		UnpackCapabilitySet(KUserGrantableCapsBitMask, capSet);
 		
 		// Create the root node of the CComponentInfo object
 		CComponentInfo::CNode* rootNode = CComponentInfo::CNode::NewLC(KSifTestSoftwareType, KSifTestComponentName,
 						KSifTestComponentVersion, KSifTestComponentVendor, EDeactivated, ENewComponent,
-						KSifTestComponentId, KSifTestGlobalComponentId, KAuthenticity, capSet, KMaxInstalledSize, KHasExe);
+						KSifTestComponentId, KSifTestGlobalComponentId, KAuthenticity, capSet, KMaxInstalledSize, KHasExe, KDriveSelectionRequired, applications);
 
 		// Create a long string used for overflow tests
 		HBufC* longStr = NULL;
@@ -277,7 +279,7 @@
 				{
 				CComponentInfo::CNode* childNode = CComponentInfo::CNode::NewLC(KSifTestSoftwareType, *longStr,
 						KSifTestComponentVersion, *longStr, EDeactivated, ENewComponent,
-						KSifTestComponentId, *longStr, KAuthenticity, capSet, KMaxInstalledSize, KHasExe);
+						KSifTestComponentId, *longStr, KAuthenticity, capSet, KMaxInstalledSize, KHasExe, KDriveSelectionRequired, applications);
 				
 				rootNode->AddChildL(childNode);
 				CleanupStack::Pop(childNode);
--- a/installationservices/swinstallationfw/test/scripts/tsif.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/scripts/tsif.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -15,6 +15,8 @@
 root.userGrantableCapsBitMask=49152 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=1234
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [InstallClientOOM]
 packageFile=z:\tusif\tsif\data\test.nonnativepackage.txt
@@ -44,6 +46,8 @@
 root.userGrantableCapsBitMask=49152 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=1234
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [InstallByFileName]
 packageFile=z:\tusif\tsif\data\sifintegrationtestbase.sis
--- a/installationservices/swinstallationfw/test/scripts/tsif.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/scripts/tsif.script	Fri Apr 16 15:05:20 2010 +0300
@@ -218,7 +218,11 @@
 RUN_TEST_STEP 100 tUsifSuite SifUninstallStep z:\tusif\tsif\tsif.ini NonNativeUninstallByNameAndVendor
 RUN_TEST_STEP 100 tUsifSuite SifUninstallStep z:\tusif\tsif\tsif.ini UninstallByNameAndVendor
 
+//Run the AppUid Generation tests.
+RUN_SCRIPT z:\tusif\tsif\tsif_appuidgen.script
+
 // Wait 3 seconds in order to let the SIF server shutdown itself
 DELAY 3000
 
+
 PRINT Completed SIF component tests
--- a/installationservices/swinstallationfw/test/securitytests/eabi/usifsecuritytestsu.def	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/securitytests/eabi/usifsecuritytestsu.def	Fri Apr 16 15:05:20 2010 +0300
@@ -24,4 +24,6 @@
 	_ZTV19CScrAllFilesSecTest @ 23 NONAME
 	_ZTI27CScrPluginManagementSecTest @ 24 NONAME
 	_ZTV27CScrPluginManagementSecTest @ 25 NONAME
+	_ZTI34CScrApparcComponentSpecificSecTest @ 26 NONAME
+	_ZTV34CScrApparcComponentSpecificSecTest @ 27 NONAME
 
--- a/installationservices/swinstallationfw/test/securitytests/group/usifsecuritytests.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/securitytests/group/usifsecuritytests.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -40,6 +40,7 @@
 SOURCE			stsfilepathprotection.cpp
 SOURCE			stsrollbackalltest.cpp
 SOURCE			scrpluginmanagement.cpp
+SOURCE			scrapparccomponentspecific.cpp
 
 USERINCLUDE		.
 USERINCLUDE		../inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/securitytests/inc/scrapparccomponentspecific.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file
+ @test
+*/
+
+#ifndef SCRAPPARCCOMPONENTSPECIFIC_H_
+#define SCRAPPARCCOMPONENTSPECIFIC_H_
+
+
+#include <captestframework/aprcaptestutility.h>
+
+class CScrApparcComponentSpecificSecTest : public CDefaultCapabilityTest
+    {
+public:
+    static CScrApparcComponentSpecificSecTest* NewL();
+    
+
+private:
+    CScrApparcComponentSpecificSecTest();
+    
+    void RunTestL();
+
+    void ConstructL();
+    };
+
+
+#endif /* SCRAPPARCCOMPONENTSPECIFIC_H_ */
--- a/installationservices/swinstallationfw/test/securitytests/scripts/usifsecuritytests.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/securitytests/scripts/usifsecuritytests.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -9,3 +9,64 @@
 SoftwareType=dummy
 ComponentName=testName
 VendorName=testVendor
+
+[add_app_reg_info]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=12345678
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+OpaqueData=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=1
+ServiceUid0=987654321
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=2
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc
+VwIconFileName0=viewiconfile
+VwNumberOfAppIcons0=0
+LocShortCaption1=sc0
+LocAppLanguage1=1
+LocGroupName1=Games
+LocCaption1=c0
+LocIconFileName1=iconfile
+LocNumberOfAppIcons1=2
+ViewDataCount1=1
+VwUid1=45689123
+VwScreenMode1=0
+VwCaption1=vc
+VwIconFileName1=viewiconfile
+VwNumberOfAppIcons1=0
+AppPropertyCount=1
+PropertyLocale0=0
+PropertyName0=p1
+PropertyIntValue0=2
+PropertyStrValue0=asd
+
+[del_app_entry]
+UseGlobalId=True
+GlobalIdName=Component_Global
+SoftwareType=plain
+ComponentIdOffset=0
--- a/installationservices/swinstallationfw/test/securitytests/scripts/usifsecuritytests.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/securitytests/scripts/usifsecuritytests.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -37,7 +37,8 @@
   
 // Add a dummy component for the APIs tests
 RUN_TEST_STEP 100 tscr SCRAddComponent z:\tusif\securitytests\usifsecuritytests.ini add_test_component
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\securitytests\usifsecuritytests.ini add_app_reg_info
 RUN_TEST_STEP 100 aprcaptestframework RunThoroughCapabilityChecks z:\tusif\securitytests\usifsecuritytests.ini usifsecuritytests
 RUN_TEST_STEP 100 aprcaptestframework RunThoroughCapabilityChecks z:\tusif\securitytests\usifsecuritytests.ini usifsecuritytests-tcb
-
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\securitytests\usifsecuritytests.ini del_app_entry
 END_TESTCASE API-SEC-USIF-SecurityTests-0001
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/securitytests/source/scrapparccomponentspecific.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "scrapparccomponentspecific.h"
+
+#include <usif/scr/scr.h>
+#include <scs/cleanuputils.h>
+#include <e32def.h>
+
+_LIT(KScrCompSecName, "SCR-APPARC Component-specific APIs test");
+
+using namespace Usif;
+
+CScrApparcComponentSpecificSecTest* CScrApparcComponentSpecificSecTest::NewL()
+    {
+    CScrApparcComponentSpecificSecTest* self=new(ELeave) CScrApparcComponentSpecificSecTest();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CScrApparcComponentSpecificSecTest::CScrApparcComponentSpecificSecTest()
+    {
+    SetSidRequired(TUid::Uid(0x10003A3F)); // Use tscrapparc SID as the one required for accessinf apparc specific subsession
+    }
+    
+void CScrApparcComponentSpecificSecTest::ConstructL()
+    {
+    SetNameL(KScrCompSecName);
+    }
+
+void CScrApparcComponentSpecificSecTest::RunTestL()
+    {
+    RSoftwareComponentRegistry scrSession;
+    User::LeaveIfError(scrSession.Connect());
+    CleanupClosePushL(scrSession);
+    RApplicationRegistryView subSession;   
+    CleanupClosePushL(subSession);
+    TRAPD(err,subSession.OpenViewL(scrSession));     
+    CheckFailL(err, _L("OpenApplicationRegistrationView"));
+          
+    if(err == NULL)
+        {
+        RPointerArray<CApplicationRegistrationData> actualAppRegData;
+        CleanupClosePushL(actualAppRegData);
+        TRAP(err,subSession.GetNextApplicationRegistrationInfoL(5, actualAppRegData));
+        CheckFailL(err, _L("GetNextApplicationRegistrationInfo"));
+        CleanupStack::PopAndDestroy(&actualAppRegData);
+        }
+    CleanupStack::PopAndDestroy(&subSession);
+    
+    RPointerArray<CLauncherExecutable> launchers;
+    CleanupClosePushL(launchers);
+    TRAP(err,scrSession.GetApplicationLaunchersL(launchers));
+    CheckFailL(err, _L("GetApplicationLaunchersL"));
+    CleanupStack::PopAndDestroy(&launchers);
+    
+    CleanupStack::PopAndDestroy(&scrSession);
+    }
+
--- a/installationservices/swinstallationfw/test/securitytests/source/scrcomponentspecific.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/securitytests/source/scrcomponentspecific.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -24,6 +24,7 @@
 #include "scrcomponentspecific.h"
 
 #include <usif/scr/scr.h>
+#include <usif/scr/appregentries.h>
 #include <scs/cleanuputils.h>
 #include <e32def.h>
 
@@ -138,6 +139,23 @@
 	CheckFailL(err, _L("DeleteComponentDependencyL"));
 	CleanupStack::PopAndDestroy(3, dependantGlobalId); // dependantGlobalId, supplierGlobalId, supplierVerCompId
 	
+	//TODO: The addition of AppRegInfo needs to be optimized
+	RPointerArray<HBufC> ownedFileArray;
+    RPointerArray<Usif::CServiceInfo> serviceInfoArray;
+    RPointerArray<Usif::CLocalizableAppInfo> localizableAppInfoArray;
+    RPointerArray<Usif::CPropertyEntry> appPropertyArray;
+	RPointerArray<Usif::COpaqueData> opaqueDataArray;
+    TUid appUid = TUid::Uid(123454321);
+     
+    TApplicationCharacteristics appCharacteristics;
+    const Usif::CApplicationRegistrationData* appRegData = Usif::CApplicationRegistrationData::NewLC(ownedFileArray, serviceInfoArray, localizableAppInfoArray, appPropertyArray, opaqueDataArray, appUid, _L("SomeFile"), appCharacteristics, 0);
+    TRAP(err, scrSession.AddApplicationEntryL(componentId, *appRegData));
+	CleanupStack::PopAndDestroy();
+	CheckFailL(err, _L("AddApplicationEntryL"));
+	
+	TRAP(err, scrSession.DeleteApplicationEntriesL(componentId));
+	CheckFailL(err, _L("DeleteApplicationEntryL"));
+
 	// Verify transaction APIs - can be invoked only by an installer
 	TRAP(err, scrSession.CreateTransactionL());
 	CheckFailL(err, _L("CreateTransactionL"));
--- a/installationservices/swinstallationfw/test/securitytests/source/scrnonrestricted.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/securitytests/source/scrnonrestricted.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -22,7 +22,7 @@
 */
 
 #include "scrnonrestricted.h"
-
+#include <usif/scr/appregentries.h>
 #include <usif/scr/scr.h>
 #include <scs/cleanuputils.h>
 #include <e32def.h>
@@ -164,6 +164,102 @@
 	
 	CleanupStack::PopAndDestroy(&compFilesListView);
 	
+	
+	// Check sub-session APIs for InfoQueryApp		
+	
+	TUid appUid = TUid::Uid(305419896);
+	
+	HBufC* filename = NULL;
+	RRegistrationInfoForApplication AppRegInfoQueryAppSubSession;
+	AppRegInfoQueryAppSubSession.OpenL(scrSession,appUid);
+	
+	TRAP(err,AppRegInfoQueryAppSubSession.GetAppViewIconL(appUid,filename));
+	CheckFailL(err, _L("RApplicationRegistrationInfoQueryApp::GetAppViewIcon"));
+	if(NULL != filename)
+	    delete filename;
+	
+	TRAP(err,AppRegInfoQueryAppSubSession.GetAppIconL(filename));
+	CheckFailL(err, _L("RApplicationRegistrationInfoQueryApp::GetAppIcon"));
+	if(NULL != filename)
+	    delete filename;
+	
+	Usif::TApplicationCharacteristics appCharacteristics ;
+	TRAP(err,AppRegInfoQueryAppSubSession.GetAppCharacteristicsL(appCharacteristics));
+	CheckFailL(err, _L("RApplicationRegistrationInfoQueryApp::GetAppCharacteristics"));
+	
+	RPointerArray<HBufC> appOwnedFilesArray; 
+	TRAP(err,AppRegInfoQueryAppSubSession.GetAppOwnedFilesL(appOwnedFilesArray));
+	CheckFailL(err, _L("RApplicationRegistrationInfoQueryApp::GetAppOwnedFiles"));
+	    
+	
+    RRegistrationInfoForApplication infoQuerySubSession;
+    CleanupClosePushL(infoQuerySubSession); 
+    
+    infoQuerySubSession.OpenL(scrSession, appUid);
+
+    RPointerArray<Usif::CAppViewData> appViewInfoArray;
+    CleanupResetAndDestroyPushL(appViewInfoArray);   
+
+    TRAP(err,infoQuerySubSession.GetAppViewsL(appViewInfoArray));
+    CheckFailL(err, _L("RRegistrationInfoForApplication::GetAppViewsL"));
+
+    appViewInfoArray.ResetAndDestroy();
+    CleanupStack::PopAndDestroy(2,&infoQuerySubSession); 
+
+	//for RSoftwareComponentRegistryAppInfoView
+
+	CAppInfoFilter* appinfoFilter = CAppInfoFilter::NewL();
+	CleanupStack::PushL(appinfoFilter);
+	
+	RApplicationInfoView  appInfoViewsubSession;
+	CleanupClosePushL(appInfoViewsubSession);
+	TRAP(err, appInfoViewsubSession.OpenViewL(scrSession,appinfoFilter));
+	CheckFailL(err, _L("RSoftwareComponentRegistryAppInfoView::OpenAppInfoViewL"));
+	
+	RPointerArray<Usif::TAppRegInfo> appRegInfoSet;
+     
+	TRAP(err, appInfoViewsubSession.GetNextAppInfoL(5, appRegInfoSet));
+    CheckFailL(err, _L("RSoftwareComponentRegistryAppInfoView::GetNextAppInfoL"));
+ 
+	TInt count = appRegInfoSet.Count();
+	Usif::TAppRegInfo* tp=NULL;
+	for (TInt i = 0; i<count; i++ )
+	    {
+	    tp=appRegInfoSet[i];
+	    delete tp;
+	    }
+	appRegInfoSet.Close();
+	CleanupStack::PopAndDestroy(2,appinfoFilter);
+    
+	//For GetAppServiceInfo
+	RApplicationRegistrationInfo appRegInfoQuerySubSession;
+    CleanupClosePushL(appRegInfoQuerySubSession); 
+    appRegInfoQuerySubSession.OpenL(scrSession);
+	
+	RPointerArray<Usif::CServiceInfo> appServiceInfoArray;
+    CleanupResetAndDestroyPushL(appServiceInfoArray);  
+
+	CAppServiceInfoFilter* appServiceInfoFilter = CAppServiceInfoFilter::NewLC();
+
+	TRAP(err,appRegInfoQuerySubSession.GetServiceInfoL(appServiceInfoFilter, appServiceInfoArray));
+    CheckFailL(err, _L("RApplicationRegistrationInfo::GetServiceInfoL"));
+
+    CleanupStack::PopAndDestroy(3, &appRegInfoQuerySubSession); 
+
+	//GetComponentIdForAppL
+    TUid testAppUid;
+    testAppUid.iUid = 1;  
+	TRAP(err, scrSession.GetComponentIdForAppL(testAppUid));
+    CheckFailL(err, _L("RSoftwareComponentRegistry::GetComponentIdForAppL"));
+
+	//GetAppUidsForComponentL
+	TComponentId compId = 1;
+	RArray<TUid> appUids;
+	TRAP(err, scrSession.GetAppUidsForComponentL(compId, appUids));
+	CheckFailL(err, _L("RSoftwareComponentRegistry::GetAppUidsForComponentL"));
+	appUids.Close();
+    
 	CleanupStack::PopAndDestroy(&scrSession);
+        
 	}
 
--- a/installationservices/swinstallationfw/test/securitytests/source/usifsecuritytests.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/securitytests/source/usifsecuritytests.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -31,6 +31,7 @@
 #include "stsfilepathprotection.h"
 #include "stsrollbackalltest.h"
 #include "scrpluginmanagement.h"
+#include "scrapparccomponentspecific.h"
 
 #include <s32file.h>
 
@@ -51,6 +52,7 @@
 	factory->AddTestL(CStsPublicPathSecTest::NewL());
 	factory->AddTestL(CStsRollbackAllSecTest::NewL());
 	factory->AddTestL(CScrPluginManagementSecTest::NewL());
+	factory->AddTestL(CScrApparcComponentSpecificSecTest::NewL());
 
 	return factory;
 	}
--- a/installationservices/swinstallationfw/test/tusif/group/createleesisfiles.pl	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/group/createleesisfiles.pl	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
 # under the terms of the License "Eclipse Public License v1.0"
@@ -35,10 +35,24 @@
 my $PKGDIR = "$securitySourceDir\\installationservices\\swinstallationfw\\test\\tusif\\scripts\\data";
 my $BUILDDIR = "\\epoc32\\release\\$PLATFORM\\$CONFIGURATION";
 my $DATADIR = "$BUILDDIR\\z\\tusif\\tswtype\\data";
+my $DATADIR_TSIF = "$BUILDDIR\\z\\tusif\\tsif\\data";
 my $ARMV5DATADIR = "\\epoc32\\data\\z\\tusif\\tswtype\\data";
+my $ARMV5DATADIR_TSIF = "\\epoc32\\data\\z\\tusif\\tsif\\data";
 
 my $BASE = 'sifswtypebase';
 my $UPGRADE = 'sifswtypeupgrade';
+my $SIFGETCOMAPPARCINFOTEST = 'sifgetcompapparcinfotest';
+my $SIFGETCOMAPPARCINFOTESTMULTILANG = 'sifgetcompapparcinfotestmultilang';
+my $SIFGETCOMAPPARCINFOTESTMULTIFILES = 'sifgetcompapparcinfotestmultifiles';
+my $SIFGETCOMAPPARCINFOTESTNONAPPARCRSC = 'sifgetcompapparcinfotestnonapparcrsc';
+my $SIFGETCOMAPPARCINFOTESTNONAPPARCPATH = 'sifgetcompapparcinfotestnonapparcpath';
+my $SIFGETCOMAPPARCINFOTESTMULTIAPP = 'sifgetcompapparcinfotestmultiapp';
+my $SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC = 'sifgetcompapparcinfotestmultiapp_OneAppWithNonApparcRsc';
+my $SIFGETCOMAPPARCINFOTESTCORRUPTRSC = 'sifgetcompapparcinfotest_corruptrsc';
+my $SIFGETCOMAPPARCINFOTESTEMBEDDED = 'sifgetcompapparcinfotestembedded_innerwithdifficon';
+my $SIFGETCOMAPPARCINFOTESTNOLOCALE = 'sifgetcompapparcinfotest_nolocale';
+my $SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN = 'sifgetcompapparcinfotestmultifiles_largeandsmallextn';
+
 my $suffix = '_edited';
 
 # Replace <BUILDMIDPATH> and <ZDRIVEMIDPATH> in the PKG files with the current values
@@ -50,6 +64,17 @@
 my $BUILDMIDPATH = "release\\$PLATFORM\\$CONFIGURATION";
 EditFile("$PKGDIR\\$BASE.pkg", "$PKGDIR\\$BASE$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
 EditFile("$PKGDIR\\$UPGRADE.pkg", "$PKGDIR\\$UPGRADE$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTEST.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTEST$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTILANG.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTILANG$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIFILES.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIFILES$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPP.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPP$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTEMBEDDED.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTEMBEDDED$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNOLOCALE.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNOLOCALE$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
+EditFile("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN.pkg", "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN$suffix.pkg" , sub { s/<BUILDMIDPATH>/$BUILDMIDPATH/gm; s/<ZDRIVEMIDPATH>/$ZDRIVEMIDPATH/gm; });
 
 my $dir = getcwd;
 chdir $PKGDIR;
@@ -58,7 +83,16 @@
 my $CREATESISCMD = "createsis create -cert $CERTPATH -key $KEYPATH";
 `$CREATESISCMD $PKGDIR\\$BASE$suffix.pkg`;
 `$CREATESISCMD $PKGDIR\\$UPGRADE$suffix.pkg`;
-unlink "*.cer"; #delete all certificates to avoid failure on checklocationofcertificates test
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTEST$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTILANG$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIFILES$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPP$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTNOLOCALE$suffix.pkg`;
+`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN$suffix.pkg`;
 
 # Copy generated SIS files onto the Z drive
 if (lc($PLATFORM) ne "armv5")
@@ -67,6 +101,31 @@
 	move("$PKGDIR\\$BASE$suffix.sis", "$DATADIR\\$BASE.sis");
 	unlink "$DATADIR\\$UPGRADE.sis";
 	move("$PKGDIR\\$UPGRADE$suffix.sis", "$DATADIR\\$UPGRADE.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTEST.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTEST$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTEST.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTILANG.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTILANG$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTILANG.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIFILES.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIFILES$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIFILES.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPP.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPP$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPP.sis");	
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC.sis");	
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC.sis");	
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNOLOCALE.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNOLOCALE$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNOLOCALE.sis");	
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN.sis");
+	
+	`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTEMBEDDED$suffix.pkg`;
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTEMBEDDED.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTEMBEDDED$suffix.sis", "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTEMBEDDED.sis");	
+
 	}
 else
 	{
@@ -75,10 +134,48 @@
 	move("$PKGDIR\\$BASE$suffix.sis", "$ARMV5DATADIR\\$BASE.sis");
 	unlink "$DATADIR\\$UPGRADE.sis";
 	move("$PKGDIR\\$UPGRADE$suffix.sis", "$ARMV5DATADIR\\$UPGRADE.sis");
-	}
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTEST.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTEST$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTEST.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTILANG.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTILANG$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTILANG.sis");	
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIFILES.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIFILES$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIFILES.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPP.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPP$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPP.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC.sis");
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNOLOCAL.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNOLOCAL$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTNOLOCAL.sis");	
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN.sis");
+				
+	`$CREATESISCMD $PKGDIR\\$SIFGETCOMAPPARCINFOTESTEMBEDDED$suffix.pkg`;
+	unlink "$DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTEMBEDDED.sis";
+	move("$PKGDIR\\$SIFGETCOMAPPARCINFOTESTEMBEDDED$suffix.sis", "$ARMV5DATADIR_TSIF\\$SIFGETCOMAPPARCINFOTESTEMBEDDED.sis");	
+		
+		}			
+			
+unlink "*.cer"; #delete all certificates to avoid failure on checklocationofcertificates test
 
 unlink "$PKGDIR\\$BASE$suffix.pkg";
 unlink "$PKGDIR\\$UPGRADE$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTEST$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTILANG$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIFILES$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCRSC$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNONAPPARCPATH$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPP$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTMULTIAPPONEAPPWITHNONAPPARCRSC$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTCORRUPTRSC$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTNOLOCALE$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTEMBEDDED$suffix.pkg";
+unlink "$PKGDIR\\$SIFGETCOMAPPARCINFOTESTLARGEANDSMALLEXTN$suffix.pkg";
 
 chdir $dir;
 
@@ -98,7 +195,7 @@
 	my ($file, $data) = @_;
 
 	# Ensure directory exists
-	if ($file =~ basename($1) && ! -e $1)
+	if ($1 && $file =~ basename($1) && ! -e $1)
 		{
 		mkdir($1);
 		}
--- a/installationservices/swinstallationfw/test/tusif/group/createsisfiles.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/group/createsisfiles.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
 @rem under the terms of the License "Eclipse Public License v1.0"
@@ -49,6 +49,10 @@
 set COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE=sifintegrationtestextensionindifferentcase
 set COMPONENTINFOWITHONLYDLL=sifintegrationtestwithonlydll
 set SUFFICIENTUSERCAPS=sifintegsufficientusercaps
+set BASEWITHDRIVEDIALOG=sifintegrationtestbasewithdrivedialog
+set UPGRADEWITHDRIVEDIALOG=sifintegrationtestupgradewithdrivedialog
+set EMBEDDEDINNERWITHUPGRADE=embeddedinnerwithupgrade
+set EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG=embeddedinnerwithupgradeouterasbasewithdrivedialog
 set DUMMYTEXT=dummy
 
 set CREATESISCMD=createsis create -pass usif
@@ -74,7 +78,10 @@
 if not exist %DATADIR%\%COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.sis goto generate_sis_files
 if not exist %DATADIR%\%COMPONENTINFOWITHONLYDLL%.sis goto generate_sis_files
 if not exist %DATADIR%\%SUFFICIENTUSERCAPS%.sis goto generate_sis_files
-
+if not exist %DATADIR%\%BASEWITHDRIVEDIALOG%.sis goto generate_sis_files
+if not exist %DATADIR%\%UPGRADEWITHDRIVEDIALOG%.sis goto generate_sis_files
+if not exist %DATADIR%\%EMBEDDEDINNERWITHUPGRADE%.sis goto generate_sis_files
+if not exist %DATADIR%\%EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.sis goto generate_sis_files
 goto:eof
 
 :generate_sis_files
@@ -96,6 +103,10 @@
 copy /y %PKGDIR%\%COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.pkg %BUILDDIR%\%COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.pkg
 copy /y %PKGDIR%\%COMPONENTINFOWITHONLYDLL%.pkg %BUILDDIR%\%COMPONENTINFOWITHONLYDLL%.pkg
 copy /y %PKGDIR%\%SUFFICIENTUSERCAPS%.pkg %BUILDDIR%\%SUFFICIENTUSERCAPS%.pkg
+copy /y %PKGDIR%\%BASEWITHDRIVEDIALOG%.pkg %BUILDDIR%\%BASEWITHDRIVEDIALOG%.pkg
+copy /y %PKGDIR%\%UPGRADEWITHDRIVEDIALOG%.pkg %BUILDDIR%\%UPGRADEWITHDRIVEDIALOG%.pkg
+copy /y %PKGDIR%\%EMBEDDEDINNERWITHUPGRADE%.pkg %BUILDDIR%\%EMBEDDEDINNERWITHUPGRADE%.pkg
+copy /y %PKGDIR%\%EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.pkg %BUILDDIR%\%EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.pkg
 
 pushd %PKGDIR%
 rem These package uses local files in the package directory
@@ -137,6 +148,10 @@
 call %CREATESISEXISTINGCERTCMD% %COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.pkg
 call %CREATESISEXISTINGCERTCMD% %COMPONENTINFOWITHONLYDLL%.pkg
 call %CREATESISEXISTINGCERTCMD% %SUFFICIENTUSERCAPS%.pkg
+call %CREATESISEXISTINGCERTCMD% %BASEWITHDRIVEDIALOG%.pkg
+call %CREATESISEXISTINGCERTCMD% %UPGRADEWITHDRIVEDIALOG%.pkg
+call %CREATESISEXISTINGCERTCMD% %EMBEDDEDINNERWITHUPGRADE%.pkg
+call %CREATESISEXISTINGCERTCMD% %EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.pkg
 
 rem Dynamically built executables are removed
 del sifintegsufficientusercaps.exe
@@ -162,6 +177,10 @@
 copy /y %COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.sis %DATADIR%\%COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.sis
 copy /y %COMPONENTINFOWITHONLYDLL%.sis %DATADIR%\%COMPONENTINFOWITHONLYDLL%.sis
 copy /y %SUFFICIENTUSERCAPS%.sis %DATADIR%\%SUFFICIENTUSERCAPS%.sis
+copy /y %BASEWITHDRIVEDIALOG%.sis %DATADIR%\%BASEWITHDRIVEDIALOG%.sis
+copy /y %UPGRADEWITHDRIVEDIALOG%.sis %DATADIR%\%UPGRADEWITHDRIVEDIALOG%.sis
+copy /y %EMBEDDEDINNERWITHUPGRADE%.sis %DATADIR%\%EMBEDDEDINNERWITHUPGRADE%.sis
+copy /y %EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.sis %DATADIR%\%EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.sis
 ) else (
 mkdir %ARMV5DATADIR%
 copy /y %BASE%.sis %ARMV5DATADIR%\%BASE%.sis
@@ -182,6 +201,10 @@
 copy /y %COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.sis %DATADIR%\%COMPONENTINFOWITHEXTENSIONINDIFFERENTCASE%.sis
 copy /y %COMPONENTINFOWITHONLYDLL%.sis %DATADIR%\%COMPONENTINFOWITHONLYDLL%.sis
 copy /y %SUFFICIENTUSERCAPS%.sis %DATADIR%\%SUFFICIENTUSERCAPS%.sis
+copy /y %BASEWITHDRIVEDIALOG%.sis %DATADIR%\%BASEWITHDRIVEDIALOG%.sis
+copy /y %UPGRADEWITHDRIVEDIALOG%.sis %DATADIR%\%UPGRADEWITHDRIVEDIALOG%.sis
+copy /y %EMBEDDEDINNERWITHUPGRADE%.sis %DATADIR%\%EMBEDDEDINNERWITHUPGRADE%.sis
+copy /y %EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.sis %DATADIR%\%EMBEDDEDINNERWITHUPGRADEOUTERASBASEWITHDRIVEDIALOG%.sis
 )
 
 popd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/group/sifgetcompapparcinfotest.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* sifgetcompinfotest1.mmp for usif test 
+*
+*/
+ 
+
+TARGET			sifgetcompapparcinfotest.exe
+TARGETTYPE		exe
+CAPABILITY 		All -Tcb
+
+UID			0x10000007 0x80286FE1
+VENDORID		0x0
+
+SOURCEPATH		../source
+SOURCE			sifintegusercapsbasepackage.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+START RESOURCE	sifgetcompapparcinfotest_loc.rss
+HEADER
+TARGETPATH		tusif/tsif/data/sifgetcompapparcinfotest 
+END
+
+// Application exe registration resource file
+resource  	sifgetcompapparcinfotest_reg.rss
+start resource 	sifgetcompapparcinfotest_reg.rss
+targetpath 	tusif/tsif/data/sifgetcompapparcinfotest
+end
+
+
+// Icons for UK language version
+START BITMAP	sifgetcompapparcinfotest_01.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompapparcinfotest
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP
+END
+
+LIBRARY			euser.lib
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/group/sifgetcompapparcinfotestmultilang.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* sifgetcompapparcinfotestmultilang.mmp for usif test 
+*
+*/
+
+TARGET			sifgetcompapparcinfotestmultilang.exe
+TARGETTYPE		exe
+CAPABILITY 		All -Tcb
+
+UID			0x10000007 0x80286FE2
+VENDORID		0x0
+
+SOURCEPATH		../source
+SOURCE			sifintegusercapsbasepackage.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+START RESOURCE	sifgetcompapparcinfotestmultilang_loc.rss
+HEADER
+TARGETPATH		tusif/tsif/data/sifgetcompapparcinfotestmultilang 
+LANG 01 03 04 24
+END
+
+// Application exe registration resource file
+resource  	sifgetcompapparcinfotestmultilang_reg.rss
+start resource 	sifgetcompapparcinfotestmultilang_reg.rss
+targetpath 	tusif/tsif/data/sifgetcompapparcinfotestmultilang
+end
+
+
+// Icons for UK language version
+START BITMAP	sifgetcompapparcinfotestmultilang_01.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompapparcinfotestmultilang
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP
+END
+
+// Icons for German language version
+START BITMAP	sifgetcompapparcinfotestmultilang_03.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompapparcinfotestmultilang
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP
+END
+
+// Icons for Spanish language version
+START BITMAP	sifgetcompapparcinfotestmultilang_04.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompapparcinfotestmultilang
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP 
+END
+
+// Icons for French International language version
+START BITMAP	sifgetcompapparcinfotestmultilang_24.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompapparcinfotestmultilang
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP
+END
+
+LIBRARY			euser.lib
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/group/sifgetcompinfotest1.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* sifgetcompinfotest1.mmp for usif test
+*
+*/
+
+TARGET			sifgetcompinfotest1.exe
+TARGETTYPE		exe
+CAPABILITY 		All -Tcb
+
+UID			0x10000007 0x80286FE0
+VENDORID		0x0
+
+SOURCEPATH		../source
+SOURCE			sifintegusercapsbasepackage.cpp
+
+SYSTEMINCLUDE	/epoc32/include
+
+START RESOURCE	sifgetcompinfotest1_loc.rss
+HEADER
+TARGETPATH		tusif/tsif/data/sifgetcompinfotest1
+LANG 01 03 04 24	
+END
+
+// Application exe registration resource file
+resource  	sifgetcompinfotest1_reg.rss
+start resource 	sifgetcompinfotest1_reg.rss
+targetpath 	tusif/tsif/data/sifgetcompinfotest1
+end
+
+
+// Icons for UK language version
+START BITMAP	sifgetcompinfotest1_01.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompinfotest1
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP
+END
+
+// Icons for German language version
+START BITMAP	sifgetcompinfotest1_03.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompinfotest1
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP
+END
+
+// Icons for Spanish language version
+START BITMAP	sifgetcompinfotest1_04.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompinfotest1
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP 
+END
+
+// Icons for French International language version
+START BITMAP	sifgetcompinfotest1_24.mbm
+TARGETPATH		tusif/tsif/data/sifgetcompinfotest1
+SOURCEPATH		../source
+SOURCE			c8,1 icon3M.BMP
+END
+
+LIBRARY			euser.lib
+SMPSAFE
+
Binary file installationservices/swinstallationfw/test/tusif/scripts/data/corrupt_reg.rsc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/embeddedinnerwithupgrade.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+;Languages
+&EN
+
+;Header
+#{"Embedding Base With EXE"}, (0x80534946), 1, 0, 0, TYPE=SA
+
+%{"Security and Data Privacy"}
+:"Security and Data Privacy"
+
+;Use a text file 
+"dummy.txt"-"c:\dummy.txt", FF
+
+;embedded
+@"sifintegrationtestupgradewithdrivedialog.sis",(0x80534946)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/embeddedinnerwithupgradeouterasbasewithdrivedialog.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+;Languages
+&EN
+
+;Header
+#{"Embedding Base With EXE"}, (0x80534946), 1, 0, 0, TYPE=SA
+
+%{"Security and Data Privacy"}
+:"Security and Data Privacy"
+
+;Use a text file 
+"dummy.txt"-"!:\dummy.txt", FF
+
+;embedded
+@"sifintegrationtestupgradewithdrivedialog.sis",(0x80534946)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotest.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,43 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English
+#{"sifgetcompinfotest_EN"}, (0x88001102), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotest_corruptrsc.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,43 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English
+#{"sifgetcompinfotestCorruptRsc_EN"}, (0x88001109), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\corrupt_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotest_nolocale.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,39 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English
+#{"sifgetcompinfotestnolocale_EN"}, (0x88001112), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestembedded_innerwithdifficon.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,45 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English
+#{"sifgetcompinfotestembedded_innerwithdifficon_EN"}, (0x88001110), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
+
+;An embedded sis file
+@"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang.sis",(0x88001103)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultiapp.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,59 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE,SP,FR
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd","Symbian Software Ltd","Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"sifgetcompapparcinfotestmultiapp_EN", "sifgetcompapparcinfotestmultiapp_GE", "sifgetcompapparcinfotestmultiapp_SP", "sifgetcompapparcinfotestmultiapp_FR"}, (0x88001108), 1,0,0
+
+
+; Language-neutral files to be installed for first app
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotestmultilang.exe"-"!:\sys\bin\sifgetcompapparcinfotestmultilang.exe"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotestmultilang_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r01"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r01"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r03"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r03"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r04"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r04"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r24"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r24"
+
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_01.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_03.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_03.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_04.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_04.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_24.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_24.mbm"
+
+
+; Language-neutral files to be installed for second app
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultiapp_oneappwithnonapparcrsc.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,59 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE,SP,FR
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd","Symbian Software Ltd","Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"sifgetcompapparcinfotestmultiappOneAppCorrupt_EN", "sifgetcompapparcinfotestmultiappOneAppCorrupt_GE", "sifgetcompapparcinfotestmultiappOneAppCorrupt_SP", "sifgetcompapparcinfotestmultiappOneAppCorrupt_FR"}, (0x88001107), 1,0,0
+
+
+; Language-neutral files to be installed for first app
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotestmultilang.exe"-"!:\sys\bin\sifgetcompapparcinfotestmultilang.exe"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotestmultilang_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r01"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r01"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r03"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r03"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r04"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r04"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r24"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r24"
+
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_01.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_03.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_03.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_04.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_04.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_24.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_24.mbm"
+
+
+; Language-neutral files to be installed for second app
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\resource\plugins\testnonnativeplugin2.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultifiles.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English
+#{"sifgetcompinfotestmultifiles_EN"}, (0x88001104), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tswtype\data\swtypereginfo.xml"-"c:\resource\usif\leestore\77534946.xml", FF
+
+"\epoc32\<BUILDMIDPATH>\testnonnativeplugin2.dll"-"c:\sys\bin\testnonnativeplugin2.dll", FF
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultifiles_largeandsmallextn.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English
+#{"sifgetcompinfotestmultifiles_EN"}, (0x88001104), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tswtype\data\swtypereginfo.xml"-"c:\resource\usif\leestore\77534946.xmlxml", FF
+
+"\epoc32\<BUILDMIDPATH>\testnonnativeplugin2.dll"-"c:\sys\bin\testnonnativeplugin2.dl", FF
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestmultilang.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,50 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE,SP,FR
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd","Symbian Software Ltd","Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"sifgetcompapparcinfotestmultilang_EN", "sifgetcompapparcinfotestmultilang_GE", "sifgetcompapparcinfotestmultilang_SP", "sifgetcompapparcinfotestmultilang_FR"}, (0x88001103), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotestmultilang.exe"-"!:\sys\bin\sifgetcompapparcinfotestmultilang.exe"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotestmultilang_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r01"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r01"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r03"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r03"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r04"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r04"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_loc.r24"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_loc.r24"
+
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_01.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_03.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_03.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_04.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_04.mbm"
+"\epoc32\data\z\tusif\tsif\data\sifgetcompapparcinfotestmultilang\sifgetcompapparcinfotestmultilang_24.mbm"		-"!:\resource\apps\sifgetcompapparcinfotestmultilang_24.mbm"
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestnonapparcpath.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English
+#{"sifgetcompinfotestnnapparcpath_EN"}, (0x88001106), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_reg.rsc" - "!:\private\10000001\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tswtype\data\swtypereginfo.xml"-"c:\resource\usif\leestore\77534946.xml", FF
+
+"\epoc32\<BUILDMIDPATH>\testnonnativeplugin2.dll"-"c:\sys\bin\testnonnativeplugin2.dll", FF
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompapparcinfotestnonapparcrsc.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN
+
+; List of localised vendor names.
+%{"Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"sifgetcompinfotestnonapparcrsc_EN"}, (0x88001105), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompapparcinfotest.exe"-"!:\sys\bin\sifgetcompapparcinfotest.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\resource\plugins\testnonnativeplugin2.rsc" - "!:\private\10003a3f\import\apps\sifgetcompapparcinfotest_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_loc.rsc"		-"!:\resource\apps\sifgetcompapparcinfotest_loc.rsc"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompapparcinfotest\sifgetcompapparcinfotest_01.mbm"		-"!:\resource\apps\sifgetcompapparcinfotest_01.mbm"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tswtype\data\swtypereginfo.xml"-"c:\resource\usif\leestore\77534946.xml", FF
+
+"\epoc32\<BUILDMIDPATH>\testnonnativeplugin2.dll"-"c:\sys\bin\testnonnativeplugin2.dll", FF
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifgetcompinfotest1.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,50 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+; Install file for multi-lingual application
+; supporting two language variants.
+;
+
+; Languages - 
+&EN,GE
+
+; List of localised vendor names.
+%{"Symbian Software Ltd", "Symbian Software Ltd"}
+
+; Single, non-localised (global) vendor name.
+:"Symbian Software Ltd"
+
+; Installation header.
+; Two component names as we support English and German
+#{"sifgetcompinfotest1_EN", "sifgetcompinfotest1_GE"}, (0x88001102), 1,0,0
+
+
+; Language-neutral files to be installed
+"\epoc32\<BUILDMIDPATH>\sifgetcompinfotest1.exe"-"!:\sys\bin\sifgetcompinfotest1.exe"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_reg.rsc" - "!:\private\10003a3f\import\apps\sifgetcompinfotest1_reg.rsc"
+
+; Lists of language-specific resource files, of which only those files will be installed
+; which are supported by the device.
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_loc.r01"		-"!:\resource\apps\sifgetcompinfotest1_loc.r01"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_loc.r03"		-"!:\resource\apps\sifgetcompinfotest1_loc.r03"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_loc.r04"		-"!:\resource\apps\sifgetcompinfotest1_loc.r04"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_loc.r24"		-"!:\resource\apps\sifgetcompinfotest1_loc.r24"
+
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_01.mbm"		-"!:\resource\apps\sifgetcompinfotest1_01.mbm"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_03.mbm"		-"!:\resource\apps\sifgetcompinfotest1_03.mbm"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_04.mbm"		-"!:\resource\apps\sifgetcompinfotest1_04.mbm"
+"\epoc32\<ZDRIVEMIDPATH>\z\tusif\tsif\data\sifgetcompinfotest1\sifgetcompinfotest1_24.mbm"		-"!:\resource\apps\sifgetcompinfotest1_24.mbm"
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifintegrationtestbasewithdrivedialog.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+;Languages
+&EN
+
+;Header
+#{"Sif Integration Test"}, (0x80534946), 1, 0, 0, TYPE=SA
+
+; Language-specific vendor names
+%{"Security Team"}
+
+; Unique, global vendor name
+:"Security Team"
+
+;Ordinary file to selected drive. 
+"sifIntegrationTestBase.exe"-"!:\sys\bin\sifIntegrationTest.exe", FF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/data/sifintegrationtestupgradewithdrivedialog.pkg	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+;
+; Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of the License "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+;Languages
+&EN
+
+;Header
+#{"Sif Integration Test"}, (0x80534946), 2, 0, 0, TYPE=PU
+
+; Language-specific vendor names
+%{"Security Team"}
+
+; Unique, global vendor name
+:"Security Team"
+
+;Ordinary file to selected drive. 
+"sifIntegrationTestUpgrade.exe"-"!:\sys\bin\sifIntegrationTest.exe", FF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/tsif_appuidgen.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+[add_app_reg_info_newUid]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GenerateNewUid=ETrue
+
+[loop_count]
+repeatParam=302
+repeatParam2=8
+
+[deleteAppUid1]
+AppUid=3E8 
+
+[deleteAppUid2]
+AppUid=47E
+
+[deleteAppUid3]
+AppUid=44C
+
+[deleteAppUid4]
+AppUid=433
+
+[deleteAppUid5]
+AppUid=61A8
+
+[deleteAppUid6]
+AppUid=623E
+
+[deleteAppUid7]
+AppUid=620C
+
+[deleteAppUid8]
+AppUid=61F3
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/scripts/tsif_appuidgen.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,86 @@
+//
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This script tests SIF GenerateNewAppUid() API
+// 
+//
+
+PRINT Run SIF GenerateNewAppUid() API Tests
+//Load suite
+LOAD_SUITE tscr
+
+
+//! @SYMTestCaseID 		API-SEC-USIF-APPUIDGEN-0001
+//! @SYMTestCaseDesc 		The test cenrep file of SCR specifies two Uid ranges with their total 
+//!					adding upto 302. SCRAddApplicationEntry is called 302 times in a loop to fill
+//!					both the ranges.
+//! @SYMTestStatus 		3. Released
+
+START_TESTCASE API-SEC-USIF-APPUIDGEN-0001
+// Delete the SCR Database file
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tscr\tscr_appreginfo.ini db_file 
+START_REPEAT z:\tusif\tsif\tsif_appuidgen.ini loop_count repeatParam
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini add_app_reg_info_newUid
+END_REPEAT
+END_TESTCASE API-SEC-USIF-APPUIDGEN-0001
+
+
+//! @SYMTestCaseID 		API-SEC-USIF-APPUIDGEN-0002
+//! @SYMTestCaseDesc 		SCRAddApplicationEntry fails as no unused UID is available.
+//! @SYMTestStatus 		3. Released
+
+
+START_TESTCASE API-SEC-USIF-APPUIDGEN-0002
+RUN_TEST_STEP !Result=-6 100 tscr SCRAddApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini add_app_reg_info_newUid
+END_TESTCASE API-SEC-USIF-APPUIDGEN-0002
+
+
+//! @SYMTestCaseID 		API-SEC-USIF-APPUIDGEN-0003
+//! @SYMTestCaseDesc 		Delete 4 Uids from both the ranges
+//! @SYMTestStatus 		3. Released
+
+START_TESTCASE API-SEC-USIF-APPUIDGEN-0003
+//Third test case , delete 8 uids 
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid1
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid2
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid3
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid4
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid5
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid6
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid7
+RUN_TEST_STEP 100 tscr SCRDeleteApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini deleteAppUid8
+END_TESTCASE API-SEC-USIF-APPUIDGEN-0003
+
+
+//! @SYMTestCaseID 		API-SEC-USIF-APPUIDGEN-0004
+//! @SYMTestCaseDesc 		SCRAddApplicationEntry is called 8 times in a loop.
+//! @SYMTestStatus 		3. Released
+
+START_TESTCASE API-SEC-USIF-APPUIDGEN-0004
+START_REPEAT z:\tusif\tsif\tsif_appuidgen.ini loop_count repeatParam2
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini add_app_reg_info_newUid
+END_REPEAT
+END_TESTCASE API-SEC-USIF-APPUIDGEN-0004
+
+
+//! @SYMTestCaseID 		API-SEC-USIF-APPUIDGEN-0005
+//! @SYMTestCaseDesc 		SCRAddApplicationEntry fails as no unused UID is available.
+//! @SYMTestStatus 		3. Released
+
+START_TESTCASE API-SEC-USIF-APPUIDGEN-0005
+RUN_TEST_STEP !Result=-6 100 tscr SCRAddApplicationEntry z:\tusif\tsif\tsif_appuidgen.ini add_app_reg_info_newUid
+END_TESTCASE API-SEC-USIF-APPUIDGEN-0005
+
+
+PRINT Completed SIF AppUid Generation tests.
--- a/installationservices/swinstallationfw/test/tusif/scripts/tsifintegration.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/scripts/tsifintegration.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -14,6 +14,8 @@
 root.userGrantableCapsBitMask=49152 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=1234
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoByFileHandle]
 packageFile=z:\tusif\tsif\data\test.nonnativepackage.txt
@@ -30,6 +32,8 @@
 root.userGrantableCapsBitMask=49152 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=1234
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoOverflowByFileName]
 packageFile=z:\tusif\tsif\data\test.overflow.txt
@@ -46,11 +50,14 @@
 root.userGrantableCapsBitMask=49152 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=1234
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoByFileNameForUninstalledCompoundComponent]
 packageFile=z:\tusif\tsifintegration\data\compound.sifrefbinpkg
 operationByFileHandle=False
 compareMaxInstalledSize=False
+compareIconFileSize=False
 root.softwareTypeName=reference
 root.componentName=SIF Reference Component 2
 root.componentVersion=1.00(0)
@@ -63,6 +70,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=3072
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 root.numChildren=3
 root.child0.softwareTypeName=reference
 root.child0.componentName=SIF Reference Component 3
@@ -76,6 +85,8 @@
 root.child0.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child0.maxInstalledSize=0
 root.child0.hasExecutable=False
+root.child0.driveSelectionRequired=False
+root.child0.noOfApps=0
 root.child1.softwareTypeName=native
 root.child1.componentName=Sif Integration Test
 root.child1.componentVersion=1.0.0
@@ -88,6 +99,8 @@
 root.child1.userGrantableCapsBitMask=0
 root.child1.maxInstalledSize=125244
 root.child1.hasExecutable=True
+root.child1.driveSelectionRequired=False
+root.child1.noOfApps=0
 root.child2.softwareTypeName=reference
 root.child2.componentName=SIF Reference Component
 root.child2.componentVersion=1.00(0)
@@ -100,6 +113,8 @@
 root.child2.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child2.maxInstalledSize=3072
 root.child2.hasExecutable=False
+root.child2.driveSelectionRequired=False
+root.child2.noOfApps=0
 root.child2.numChildren=1
 root.child2.child0.softwareTypeName=plain
 root.child2.child0.componentName=Test Component
@@ -113,12 +128,16 @@
 root.child2.child0.userGrantableCapsBitMask=49152 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child2.child0.maxInstalledSize=1234
 root.child2.child0.hasExecutable=False
+root.child2.child0.driveSelectionRequired=False
+root.child2.child0.noOfApps=0
+
 
 
 [GetComponentInfoByFileHandleForUninstalledCompoundComponent]
 packageFile=z:\tusif\tsifintegration\data\compound.sifrefbinpkg
 operationByFileHandle=True
 compareMaxInstalledSize=False
+compareIconFileSize=False
 root.softwareTypeName=reference
 root.componentName=SIF Reference Component 2
 root.componentVersion=1.00(0)
@@ -131,6 +150,8 @@
 root.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.maxInstalledSize=3072
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 root.numChildren=3
 root.child0.softwareTypeName=reference
 root.child0.componentName=SIF Reference Component 3
@@ -144,6 +165,8 @@
 root.child0.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child0.maxInstalledSize=0
 root.child0.hasExecutable=False
+root.child0.driveSelectionRequired=False
+root.child0.noOfApps=0
 root.child1.softwareTypeName=native
 root.child1.componentName=Sif Integration Test
 root.child1.componentVersion=1.0.0
@@ -156,6 +179,8 @@
 root.child1.userGrantableCapsBitMask=0
 root.child1.maxInstalledSize=125244
 root.child1.hasExecutable=True
+root.child1.driveSelectionRequired=False
+root.child1.noOfApps=0
 root.child2.softwareTypeName=reference
 root.child2.componentName=SIF Reference Component
 root.child2.componentVersion=1.00(0)
@@ -168,6 +193,8 @@
 root.child2.userGrantableCapsBitMask=98304 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child2.maxInstalledSize=3072
 root.child2.hasExecutable=False
+root.child2.driveSelectionRequired=False
+root.child2.noOfApps=0
 root.child2.numChildren=1
 root.child2.child0.softwareTypeName=plain
 root.child2.child0.componentName=Test Component
@@ -181,6 +208,8 @@
 root.child2.child0.userGrantableCapsBitMask=49152 // ECapabilityReadUserData, ECapabilityWriteUserData
 root.child2.child0.maxInstalledSize=1234
 root.child2.child0.hasExecutable=False
+root.child2.child0.driveSelectionRequired=False
+root.child2.child0.noOfApps=0
 
 [InstallByFileName]
 packageFile=z:\tusif\tsif\data\sifintegrationtestbase.sis
@@ -463,6 +492,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=165
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForNewNativeBaseCompByFileHandle]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegration.sis
@@ -479,6 +510,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=165
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [InstallComponentInfoIntegByFileName]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegration.sis
@@ -510,6 +543,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=165
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForInstalledNativeBaseByFileHandle]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegration.sis
@@ -526,6 +561,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=165
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForUpgradeByFNWhenBaseInstalled]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegpu.sis
@@ -542,6 +579,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=173
 root.hasExecutable=False
+root.driveSelectionRequired=True
+root.noOfApps=0
 
 [GetCompInfoForUpgradeByFNWhenBaseMissing]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegpu.SIS
@@ -558,6 +597,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=173
 root.hasExecutable=False
+root.driveSelectionRequired=True
+root.noOfApps=0
 
 [GetCompInfoForPatchByFNWhenBaseInstalled]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegsp.SIS
@@ -574,6 +615,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=178
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForPatchByFNWhenBaseMissing]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegsp.SIS
@@ -590,6 +633,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=178
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForUpgradeByFNWhenHigherInstalled]
 packageFile=z:\tusif\tsif\data\sifcomponentinfointegration.sis
@@ -606,11 +651,14 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=165
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForNoCapabilityBaseByFileName]
 packageFile=z:\tusif\tsif\data\sifintegrationtestnocaps.SIS
 // Since the SIS file contains an executable, the maxInstalledSize is unreliable - it might change when executable is rebuilt
 compareMaxInstalledSize=False 
+compareIconFileSize=False
 operationByFileHandle=False
 root.softwareTypeName=native
 root.componentName=Sif No Capability Test
@@ -624,11 +672,14 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=124988
 root.hasExecutable=True
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForBaseWithUserCapsByFileName]
 packageFile=z:\tusif\tsif\data\sifintegusercapsbase.SIS
 // Since the SIS file contains an executable, the maxInstalledSize is unreliable - it might change when executable is rebuilt
 compareMaxInstalledSize=False 
+compareIconFileSize=False
 operationByFileHandle=False
 root.softwareTypeName=native
 root.componentName=Sif User Caps Base
@@ -642,6 +693,8 @@
 root.userGrantableCapsBitMask=98304	// ReadUserDara and WriteUserData
 root.maxInstalledSize=124972
 root.hasExecutable=True
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [CancelAsyncGetCompInfoRequestByFileName]
 packageFile=z:\tusif\tsif\data\sifintegrationtestbase.sis
@@ -658,6 +711,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=124972
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 cancelAfter=100
 
 [GetComponentInfoForEmptyNameAndVendor]
@@ -675,10 +730,13 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=165
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetCompInfoForEmbeddedWithExes]
 packageFile=z:\tusif\tsif\data\embeddingbasewithexe.sis
 compareMaxInstalledSize=False
+compareIconFileSize=False
 operationByFileHandle=False
 root.softwareTypeName=native
 root.componentName=Embedding Base With EXE
@@ -692,6 +750,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=124988
 root.hasExecutable=True
+root.driveSelectionRequired=False
+root.noOfApps=0
 root.numChildren=1
 root.child0.softwareTypeName=native
 root.child0.componentName=Embedded Base With User Caps EXE
@@ -705,6 +765,8 @@
 root.child0.userGrantableCapsBitMask=98304
 root.child0.maxInstalledSize=124972
 root.child0.hasExecutable=True
+root.child0.driveSelectionRequired=False
+root.child0.noOfApps=0
 
 [GetCompInfoForEmbededNativePackages]
 packageFile=z:\tusif\tsif\data\embeddingouterbase.sis
@@ -721,6 +783,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=165
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 root.numChildren=2
 root.child0.softwareTypeName=native
 root.child0.componentName=Embedded Inner Base-1
@@ -734,6 +798,8 @@
 root.child0.userGrantableCapsBitMask=0
 root.child0.maxInstalledSize=173
 root.child0.hasExecutable=False
+root.child0.driveSelectionRequired=False
+root.child0.noOfApps=0
 root.child1.softwareTypeName=native
 root.child1.componentName=Embedded Inner Base-11
 root.child1.componentVersion=1.0.0
@@ -746,6 +812,8 @@
 root.child1.userGrantableCapsBitMask=0
 root.child1.maxInstalledSize=165
 root.child1.hasExecutable=False
+root.child1.driveSelectionRequired=False
+root.child1.noOfApps=0
 root.child0.numChildren=1
 root.child0.child0.softwareTypeName=native
 root.child0.child0.componentName=Embedded Inner Base-2
@@ -759,10 +827,13 @@
 root.child0.child0.userGrantableCapsBitMask=0
 root.child0.child0.maxInstalledSize=178
 root.child0.child0.hasExecutable=False
+root.child0.child0.driveSelectionRequired=False
+root.child0.child0.noOfApps=0
 
 [GetCompInfoForEmbeddedWithTextAndInnerWithExe]
 packageFile=z:\tusif\tsif\data\embeddingbasewithtextandinnerwithexe.sis
 compareMaxInstalledSize=False
+compareIconFileSize=False
 operationByFileHandle=False
 root.softwareTypeName=native
 root.componentName=Embedding Base With EXE
@@ -776,6 +847,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=124988
 root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
 root.numChildren=1
 root.child0.softwareTypeName=native
 root.child0.componentName=Sif Integration Test
@@ -789,10 +862,13 @@
 root.child0.userGrantableCapsBitMask=0
 root.child0.maxInstalledSize=124972
 root.child0.hasExecutable=True
+root.child0.driveSelectionRequired=False
+root.child0.noOfApps=0
 
 [GetComponentInfoWithMultipleFiles]
 packageFile=z:\tusif\tsif\data\sifintegrationtestmultiplefiles.sis
 compareMaxInstalledSize=False
+compareIconFileSize=False
 operationByFileHandle=False
 root.softwareTypeName=native
 root.componentName=Sif Integration Test
@@ -806,10 +882,13 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=125169
 root.hasExecutable=True
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoWithExtensionInDifferentCase]
 packageFile=z:\tusif\tsif\data\sifintegrationtestextensionindifferentcase.sis
 compareMaxInstalledSize=False
+compareIconFileSize=False
 operationByFileHandle=False
 root.softwareTypeName=native
 root.componentName=Sif Integration Test
@@ -823,11 +902,13 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=125004
 root.hasExecutable=True
-
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [GetComponentInfoWithOnlyDll]
 packageFile=z:\tusif\tsif\data\sifintegrationtestwithonlydll.sis
 compareMaxInstalledSize=False
+compareIconFileSize=False
 operationByFileHandle=False
 root.softwareTypeName=native
 root.componentName=Sif Integration Test
@@ -841,6 +922,8 @@
 root.userGrantableCapsBitMask=0
 root.maxInstalledSize=171496
 root.hasExecutable=True
+root.driveSelectionRequired=False
+root.noOfApps=0
 
 [SilentInstallSelfSignedByName]
 packageFile=z:\tusif\tsif\data\sifintegrationtestnocaps.sis
@@ -935,4 +1018,522 @@
 verifyExistence=False
 componentName=Sif User Caps Base
 componentVendor=Security Team
-executableName=sifintegusercapsbasepackage.exe
\ No newline at end of file
+executableName=sifintegusercapsbasepackage.exe
+
+[GetComponentInfoForPuUpgradeWithDriveDialog]
+packageFile=z:\tusif\tsif\data\sifintegrationtestupgradewithdrivedialog.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=Sif Integration Test
+root.componentVersion=2.0.0
+root.componentVendor=Security Team
+root.scomoState=1
+root.installStatus=1
+root.componentId=3
+root.globalComponentId=80534946
+root.authenticity=1
+root.userGrantableCapsBitMask=0
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=0
+
+[GetComponentInfoForPuUpgradeWithioutDriveDialog]
+packageFile=z:\tusif\tsif\data\sifintegrationtestupgrade.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=Sif Integration Test
+root.componentVersion=2.0.0
+root.componentVendor=Security Team
+root.scomoState=1
+root.installStatus=1
+root.componentId=4
+root.globalComponentId=80534946
+root.authenticity=1
+root.userGrantableCapsBitMask=0
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=False
+root.noOfApps=0
+
+[GetComponentInfoForBaseWithDriveDialog]
+packageFile=z:\tusif\tsif\data\sifintegrationtestbasewithdrivedialog.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=Sif Integration Test
+root.componentVersion=1.0.0
+root.componentVendor=Security Team
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=80534946
+root.authenticity=1
+root.userGrantableCapsBitMask=0
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=0
+
+[GetComponentInfoForEmbeddedInnnerWithUpgrade]
+packageFile=z:\tusif\tsif\data\embeddedinnerwithupgrade.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=Embedding Base With EXE
+root.componentVersion=1.0.0
+root.componentVendor=Security and Data Privacy
+root.scomoState=0
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=80534946
+root.authenticity=1
+root.userGrantableCapsBitMask=0
+root.maxInstalledSize=124988
+root.hasExecutable=False
+root.driveSelectionRequired=False
+root.noOfApps=0
+root.numChildren=1
+root.child0.softwareTypeName=native
+root.child0.componentName=Sif Integration Test
+root.child0.componentVersion=2.0.0
+root.child0.componentVendor=Security Team
+root.child0.scomoState=0
+root.child0.installStatus=4
+root.child0.componentId=0
+root.child0.globalComponentId=80534946
+root.child0.authenticity=1
+root.child0.userGrantableCapsBitMask=0
+root.child0.maxInstalledSize=124972
+root.child0.hasExecutable=True
+root.child0.driveSelectionRequired=True
+root.child0.noOfApps=0
+
+[GetComponentInfoForEmbeddedInnnerWithUpgradeOuterAsBaseWithDriveDialog]
+packageFile=z:\tusif\tsif\data\embeddedinnerwithupgradeouterasbasewithdrivedialog.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=Embedding Base With EXE
+root.componentVersion=1.0.0
+root.componentVendor=Security and Data Privacy
+root.scomoState=0
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=80534946
+root.authenticity=1
+root.userGrantableCapsBitMask=0
+root.maxInstalledSize=124988
+root.hasExecutable=False
+root.driveSelectionRequired=True
+root.noOfApps=0
+root.numChildren=1
+root.child0.softwareTypeName=native
+root.child0.componentName=Sif Integration Test
+root.child0.componentVersion=2.0.0
+root.child0.componentVendor=Security Team
+root.child0.scomoState=0
+root.child0.installStatus=4
+root.child0.componentId=0
+root.child0.globalComponentId=80534946
+root.child0.authenticity=1
+root.child0.userGrantableCapsBitMask=0
+root.child0.maxInstalledSize=124972
+root.child0.hasExecutable=True
+root.child0.driveSelectionRequired=False
+root.child0.noOfApps=0
+
+[InstallByFileWithDriveDialog]
+packageFile=z:\tusif\tsif\data\sifintegrationtestbasewithdrivedialog.sis
+operationByFileHandle=False
+useEnhancedApi=False
+
+[GetComponentAppInfo]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotest.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotest_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001102
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE1
+root.appName0=CompInfoFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125576
+root.appIconFileName0=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_01.mbm
+
+[GetComponentAppInfoMultipleLangs_German]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestmultilang.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompapparcinfotestmultilang_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001103
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE2
+root.appName0=CompInfoMultipleFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125584
+root.appIconFileName0=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_03.mbm
+
+[GetComponentAppInfoMultipleLangs]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestmultilang.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompapparcinfotestmultilang_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001103
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE2
+root.appName0=CompInfoMultipleFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125584
+root.appIconFileName0=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_01.mbm
+
+[GetComponentAppInfoMultiplefiles]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestmultifiles.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotestmultifiles_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001104
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE1
+root.appName0=CompInfoFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125576
+root.appIconFileName0=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_01.mbm
+
+[GetComponentAppInfo_NonApparcRegRsc]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestnonapparcrsc.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotestnonapparcrsc_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001105
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=0
+
+[GetComponentAppInfo_MultiApp]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestmultiapp.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompapparcinfotestmultiapp_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001108
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=2
+root.appUid0=80286FE2
+root.appName0=CompInfoMultipleFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125584
+root.appIconFileName0=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_01.mbm
+root.appUid1=80286FE1
+root.appName1=CompInfoFile.exe
+root.appGroupName1=CompInfo_Group
+root.appIconFileSize1=461
+root.appIconFileName1=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_01.mbm
+
+[GetComponentAppInfo_MultiApp_OneAppWithNonApparcRsc]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestmultiapp_OneAppWithNonApparcRsc.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompapparcinfotestmultiappOneAppCorrupt_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001107
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE2
+root.appName0=CompInfoMultipleFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125584
+root.appIconFileName0=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_01.mbm
+
+[GetComponentAppInfo_NonApparcPath]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestnonapparcpath.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotestnnapparcpath_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001106
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=0
+
+[GetComponentAppInfoMultipleLangs_EquivalentMatch]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestmultilang.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompapparcinfotestmultilang_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001103
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE2
+root.appName0=CompInfoMultipleFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125584
+root.appIconFileName0=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_24.mbm
+
+[GetComponentAppInfo_CorruptRsc]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotest_corruptrsc.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotestCorruptRsc_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001109
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=0
+
+[GetComponentAppInfoEmbedded_InnerWithDiffIcon]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestembedded_innerwithdifficon.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotestembedded_innerwithdifficon_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001110
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE1
+root.appName0=CompInfoFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125576
+root.appIconFileName0=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_01.mbm
+root.numChildren=1
+root.child0.softwareTypeName=native
+root.child0.componentName=sifgetcompapparcinfotestmultilang_EN
+root.child0.componentVersion=1.0.0
+root.child0.componentVendor=Symbian Software Ltd
+root.child0.scomoState=0
+root.child0.installStatus=0
+root.child0.componentId=0
+root.child0.globalComponentId=88001103
+root.child0.authenticity=1
+root.child0.userGrantableCapsBitMask=1046414
+root.child0.maxInstalledSize=125169
+root.child0.hasExecutable=True
+root.child0.driveSelectionRequired=True
+root.child0.noOfApps=1
+root.child0.appUid0=80286FE2
+root.child0.appName0=CompInfoMultipleFile.exe
+root.child0.appGroupName0=CompInfo_Group
+root.child0.appIconFileSize0=125584
+root.child0.appIconFileName0=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_01.mbm
+
+[GetComponentAppInfo_WithSameIcon]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotest.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotest_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001102
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE1
+root.appName0=CompInfoFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125576
+root.appIconFileName0=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_011.mbm
+
+[GetComponentAppInfo_NoLocale]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotest_nolocale.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotestnolocale_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001112
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE1
+root.appName0=CompInfoFile.exe
+root.appGroupName0=AppNameGroup
+root.appIconFileSize0=0
+root.appIconFileName0=
+
+[GetComponentAppInfo_largeandsmallextn]
+packageFile=z:\tusif\tsif\data\sifgetcompapparcinfotestmultifiles_largeandsmallextn.sis
+compareMaxInstalledSize=False
+compareIconFileSize=False
+operationByFileHandle=False
+root.softwareTypeName=native
+root.componentName=sifgetcompinfotestmultifiles_EN
+root.componentVersion=1.0.0
+root.componentVendor=Symbian Software Ltd
+root.scomoState=1
+root.installStatus=0
+root.componentId=0
+root.globalComponentId=88001104
+root.authenticity=1
+root.userGrantableCapsBitMask=778240
+root.maxInstalledSize=125169
+root.hasExecutable=True
+root.driveSelectionRequired=True
+root.noOfApps=1
+root.appUid0=80286FE1
+root.appName0=CompInfoFile.exe
+root.appGroupName0=CompInfo_Group
+root.appIconFileSize0=125576
+root.appIconFileName0=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_01.mbm
+
+
+[delete_iconfile_multilang]
+DbFilePath=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_01.mbm
+JournalFilePath=C:\resource\install\icon\0x80286fe1\fake.mbm
+
+[delete_iconfile]
+DbFilePath=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_01.mbm
+JournalFilePath=C:\resource\install\icon\0x80286fe1\fake.mbm
+
+[delete_iconfile_fr]
+DbFilePath=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_24.mbm
+JournalFilePath=C:\resource\install\icon\0x80286fe1\fake.mbm
+
+[delete_iconfile_ge]
+DbFilePath=C:\resource\install\icon\0x80286fe2\sifgetcompapparcinfotestmultilang_03.mbm
+JournalFilePath=C:\resource\install\icon\0x80286fe1\fake.mbm
+
+
+[delete_iconfile_edited]
+DbFilePath=C:\resource\install\icon\0x80286fe1\sifgetcompapparcinfotest_011.mbm
+JournalFilePath=C:\resource\install\icon\0x80286fe1\fake.mbm
+
--- a/installationservices/swinstallationfw/test/tusif/scripts/tsifintegration.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/scripts/tsifintegration.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -18,6 +18,7 @@
 
 // Delete the SCR Database file
 LOAD_SUITE tscr
+LOAD_SUITE tSisRegistryTest
 RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tscr\tscr.ini db_file
 
 LOAD_SUITE tUsifSuite
@@ -429,6 +430,282 @@
 RUN_TEST_STEP 100 tUsifSuite SifCommonVerificationStep z:\tusif\tsifintegration\tsifintegration.ini SignedLessCapsNonExistence
 END_TESTCASE API-SEC-USIF-tsifintegration-00029
 
+
+// Get the component information for a PU Upgrade, first base SA package with drive hard coded is installed
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0030
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0030
+
+RUN_TEST_STEP 100 tUsifSuite SifInstallStep z:\tusif\tsifintegration\tsifintegration.ini InstallByFileName
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentInfoForPuUpgradeWithDriveDialog
+RUN_TEST_STEP 100 tUsifSuite SifUninstallStep z:\tusif\tsifintegration\tsifintegration.ini UninstallByNameAndVendor
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0030
+
+
+// Get the component information for a sis file where drive is not hard coded
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0031
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0031
+
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentInfoForBaseWithDriveDialog
+
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0031
+
+// Get the component information for a pu upgrade sis file without drive dialog,base package with drive dialog
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0032
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0032
+
+RUN_TEST_STEP 100 tUsifSuite SifInstallStep  z:\tusif\tsifintegration\tsifintegration.ini InstallByFileWithDriveDialog
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentInfoForPuUpgradeWithioutDriveDialog
+RUN_TEST_STEP 100 tUsifSuite SifUninstallStep z:\tusif\tsifintegration\tsifintegration.ini UninstallByNameAndVendor
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0032
+
+// Get the component information for a sis file(pu upgrade) embedded within another sis file, outer sis(with drive info) is the base package for this pu upgrade
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0033
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0033
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentInfoForEmbeddedInnnerWithUpgrade
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0033
+
+// Get the component information for a sis file(pu upgrade) embedded within another sis file, outer sis(without drive info) is the base package for this pu upgrade
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0034
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0034
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentInfoForEmbeddedInnnerWithUpgradeOuterAsBaseWithDriveDialog
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0034
+
+// Get the component information inclusing application info for a sis file having onle locale
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0035
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0035
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0035
+
+
+// Get the component information inclusing application info for a sis file having multiple locales
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0036
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0036
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfoMultipleLangs
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_multilang
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0036
+
+
+
+// Get the component information(for the current locale) including application info for a sis file having multiple locales
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0037
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0037
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfoMultipleLangs_German
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_ge
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0037
+
+
+// Get the component information inclusing application info for a sis file having an app with non apparc files in addtion to appac files
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0038
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0038
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfoMultiplefiles
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0038
+
+
+// Get the component information inclusing application info for a sis file having one locale, it will give the default loacle info
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0039
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0039
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0039
+
+
+// Get the component information inclusing application info for a sis file having one locale
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0040
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0040
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_NonApparcRegRsc
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0040
+
+
+// Get the component information inclusing application info for a sis file having multiple application with one app with non apparc reg rsc
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0041
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0041
+
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_MultiApp_OneAppWithNonApparcRsc
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_multilang
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0041
+
+
+// Get the component information including application info for a sis file having an application where target of reg rsc in not apparc's pvt folder
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0042
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0042
+
+RUN_TEST_STEP_Result 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_NonApparcPath
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0042
+
+// Get the component information including application info for a sis file having multiple applications
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0043
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0043
+
+RUN_TEST_STEP_Result 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_MultiApp
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_multilang
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0043
+
+// Get the component information including application info for a sis file having multiple applications,where we have an equivalent match
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0044
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0044
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_french
+RUN_TEST_STEP_Result 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfoMultipleLangs_EquivalentMatch
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_fr
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0044
+
+// Get the component information including application info for a sis file having an application with corrupt reg rsc
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0045
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0045
+
+RUN_TEST_STEP_Result 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_CorruptRsc
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0045
+
+
+// Get the component information including application info for an embedded sis file both ineer and ourt having different icon file
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0012
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0046
+
+RUN_TEST_STEP tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfoEmbedded_InnerWithDiffIcon
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_multilang
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0046
+
+
+// Get the component information including application info for two sis file both having same icon file
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0047
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0047
+
+RUN_TEST_STEP tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo
+RUN_TEST_STEP tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_WithSameIcon
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_edited
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0047
+
+
+// Get the component information including application info for a sis file not having any locale
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0048
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0048
+
+RUN_TEST_STEP tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_NoLocale
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0048
+
+// Get the component information including application info for a sis file having lagre and small extns
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0049
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0049
+
+RUN_TEST_STEP tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfo_largeandsmallextn
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0049
+
+// Get the component information inclusing application info for a sis file having multiple locales, first check for german then for english
+// check that the retrieved info matches with the expected values.
+//! @SYMTestCaseID		API-SEC-USIF-tsifintegration-0050
+//! @SYMTestStatus		3. Released
+
+START_TESTCASE API-SEC-USIF-tsifintegration-0050
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_german
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfoMultipleLangs_German
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale z:\tswi\tuiscriptadaptors\scripts\testdevicelanguages.ini langauge_to_english
+RUN_TEST_STEP 100 tUsifSuite SifGetComponentInfoStep   z:\tusif\tsifintegration\tsifintegration.ini GetComponentAppInfoMultipleLangs
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_ge
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile z:\tusif\tsifintegration\tsifintegration.ini delete_iconfile_multilang
+
+END_TESTCASE API-SEC-USIF-tsifintegration-0050
+
 // Wait 3 seconds in order to let the SIF server shutdown itself
 DELAY 3000
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/01/01-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_01.mbm"
+rls_string STRING_r_example_iconfile1 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_01.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotest\\sifgetcompapparcinfotest_01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123121_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123122_caption_eng"
+rls_long Long_NumberOfIcon1 2
+rls_long Long_NumberOfIcon2 1
+rls_long Long_NumberOfIcon3 2
+rls_long Long_uid1 268123121
+rls_long Long_uid2 268123122
+rls_long Long_screenmode1 0x00
+rls_long Long_screenmode2 0x01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/03/03-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise03strings
+// Strings localised for German
+//
+
+rls_string STRING_r_example_short_caption "Hallo"
+rls_string STRING_r_example_caption "Hallo_Welt"
+rls_string STRING_r_example_iconfile "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_03.mbm"
+rls_string STRING_r_example_iconfile1 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_03.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_03.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123123_caption_ger"
+rls_string STRING_r_view_268123124_caption "view_268123124_caption_ger"
+rls_long Long_NumberOfIcon1 0
+rls_long Long_NumberOfIcon2 3
+rls_long Long_NumberOfIcon3 4
+rls_long Long_uid1 268123123
+rls_long Long_uid2 268123124
+rls_long Long_screenmode1 0x03
+rls_long Long_screenmode2 0x04
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/04/04-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for Spanish
+//
+
+rls_string STRING_r_example_short_caption "HW_Spain"
+rls_string STRING_r_example_caption "hello_spain"
+rls_string STRING_r_example_iconfile "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_04.mbm"
+rls_string STRING_r_example_iconfile1 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_04.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_04.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123125_caption_spn"
+rls_string STRING_r_view_268123124_caption "view_268123126_caption_spn"
+rls_long Long_NumberOfIcon1 2
+rls_long Long_NumberOfIcon2 5
+rls_long Long_NumberOfIcon3 6
+rls_long Long_uid1 268123125
+rls_long Long_uid2 268123126
+rls_long Long_screenmode1 0x05
+rls_long Long_screenmode2 0x06
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/24/24-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for French International
+//
+
+rls_string STRING_r_example_short_caption "HW_FR"
+rls_string STRING_r_example_caption "hello_French"
+rls_string STRING_r_example_iconfile "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_24.mbm"
+rls_string STRING_r_example_iconfile1 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_24.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_24.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123127_caption_fr"
+rls_string STRING_r_view_268123124_caption "view_268123128_caption_fr"
+rls_long Long_NumberOfIcon1 2
+rls_long Long_NumberOfIcon2 7
+rls_long Long_NumberOfIcon3 8
+rls_long Long_uid1 268123127
+rls_long Long_uid2 268123128
+rls_long Long_screenmode1 0x07
+rls_long Long_screenmode2 0x08
Binary file installationservices/swinstallationfw/test/tusif/source/icon3m.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/rsc/rsc-strings.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// localise01strings
+// Strings localised for UK
+//
+
+rls_string STRING_r_example_short_caption "HW"
+rls_string STRING_r_example_caption "helloworld"
+rls_string STRING_r_example_iconfile "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotest\\sifgetcompapparcinfotest_01.mbm"
+rls_string STRING_r_example_iconfile1 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotest\\sifgetcompapparcinfotest_01.mbm"
+rls_string STRING_r_example_iconfile2 "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotest\\sifgetcompapparcinfotest_01.mbm"
+rls_string STRING_r_view_268123123_caption "view_268123121_caption_eng"
+rls_string STRING_r_view_268123124_caption "view_268123122_caption_eng"
+rls_long Long_NumberOfIcon1 2
+rls_long Long_NumberOfIcon2 1
+rls_long Long_NumberOfIcon3 2
+rls_long Long_uid1 268123121
+rls_long Long_uid2 268123122
+rls_long Long_screenmode1 0x00
+rls_long Long_screenmode2 0x01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotest_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file sifgetcompinfotest1_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+
+RESOURCE RSS_SIGNATURE { }
+
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#elif defined LANGUAGE_04  // if language code is for Spanish
+ #include "04/04-strings.rls"
+#elif defined LANGUAGE_24  // if language code is for French International
+ #include "24/24-strings.rls"
+#else   // if nothing id defined take english
+ #include "rsc/rsc-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = Long_NumberOfIcon1;
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+				uid = Long_uid1;
+				screen_mode = Long_screenmode1;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+						number_of_icons = Long_NumberOfIcon2;
+						icon_file = STRING_r_example_iconfile1;
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+				uid = Long_uid2;
+	            screen_mode = Long_screenmode2;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+						number_of_icons = Long_NumberOfIcon3;
+	                    icon_file = STRING_r_example_iconfile2;
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "CompInfo_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotest_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file testapplication_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <sifgetcompapparcinfotest_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x80286FE1
+	
+
+
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "CompInfoFile";
+	localisable_resource_file = "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotest\\sifgetcompapparcinfotest_loc";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotestmultilang_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file sifgetcompinfotest1_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+
+RESOURCE RSS_SIGNATURE { }
+
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#elif defined LANGUAGE_04  // if language code is for Spanish
+ #include "04/04-strings.rls"
+#elif defined LANGUAGE_24  // if language code is for French International
+ #include "24/24-strings.rls"
+#else   // if nothing id defined take english
+ #include "rsc/rsc-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = Long_NumberOfIcon1;
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+				uid = Long_uid1;
+				screen_mode = Long_screenmode1;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+						number_of_icons = Long_NumberOfIcon2;
+						icon_file = STRING_r_example_iconfile1;
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+				uid = Long_uid2;
+	            screen_mode = Long_screenmode2;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+						number_of_icons = Long_NumberOfIcon3;
+	                    icon_file = STRING_r_example_iconfile2;
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "CompInfo_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/sifgetcompapparcinfotestmultilang_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file testapplication_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <sifgetcompapparcinfotestmultilang_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x80286FE2
+	
+
+
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "CompInfoMultipleFile";
+	localisable_resource_file = "z:\\tusif\\tsif\\data\\sifgetcompapparcinfotestmultilang\\sifgetcompapparcinfotestmultilang_loc";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/sifgetcompinfotest1_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file sifgetcompinfotest1_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <techview/eikon.rh>
+#include <uiklafgt/eikcore.rsg>
+#include <appinfo.rh>
+
+
+RESOURCE RSS_SIGNATURE { }
+
+// Conditional compile, depending on locale
+#ifdef LANGUAGE_01    // if language code is for UK
+ #include "01/01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03/03-strings.rls"
+#elif defined LANGUAGE_04  // if language code is for Spanish
+ #include "04/04-strings.rls"
+#elif defined LANGUAGE_24  // if language code is for French International
+ #include "24/24-strings.rls"
+#else   // if nothing id defined take english
+ #include "01/01-strings.rls"
+#endif      
+// end conditional compile
+
+RESOURCE LOCALISABLE_APP_INFO r_lai
+	{
+		short_caption = STRING_r_example_short_caption;
+	    caption_and_icon =
+	        {
+	        CAPTION_AND_ICON_INFO
+	            {
+	            caption = STRING_r_example_caption;
+	            number_of_icons = Long_NumberOfIcon1;
+	            icon_file = STRING_r_example_iconfile;
+	            }
+	        };                          
+	    //
+	    view_list =
+	        {
+	        VIEW_DATA
+	            {
+				uid = Long_uid1;
+				screen_mode = Long_screenmode1;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123123_caption;
+						number_of_icons = Long_NumberOfIcon2;
+						icon_file = STRING_r_example_iconfile1;
+	                    }
+	                };                          
+	            },
+	        VIEW_DATA
+	            {
+				uid = Long_uid2;
+	            screen_mode = Long_screenmode2;
+	            caption_and_icon =
+	                {
+	                CAPTION_AND_ICON_INFO
+	                    {
+	                    caption = STRING_r_view_268123124_caption;
+						number_of_icons = Long_NumberOfIcon3;
+	                    icon_file = STRING_r_example_iconfile2;
+	                    }
+	                };
+	            }
+	        };
+	    group_name = "CompInfo_Group";		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/test/tusif/source/sifgetcompinfotest1_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+ @file testapplication_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <sifgetcompinfotest1_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x80286FE0
+	
+
+
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file = "CompInfoFile";
+	localisable_resource_file = "z:\\tusif\\tsif\\data\\sifgetcompinfotest1\\sifgetcompinfotest1_loc";
+	localisable_resource_id = R_LAI;	
+	    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg1"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif1"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="c:\\temp\\AppName.txt"; }
+        };
+	
+   //
+    service_list =
+        {
+        SERVICE_INFO
+            {
+            uid = 268123123;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg2"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif2"; }
+                };   
+            opaque_data = r_first_service_specific_data;
+            },
+        SERVICE_INFO
+            {
+            uid = 268123124;
+            datatype_list = 
+                {
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg3"; },
+                DATATYPE { priority=EDataTypePriorityNormal; type="image/gif3"; }
+                };
+            opaque_data = r_second_service_specific_data;
+            }
+        };
+    
+    
+    opaque_data = r_third_service_specific_data;
+	}
+	
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_service_uid_01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_service_uid_02030405";
+	}
+
+RESOURCE SERVICE_NAME r_third_service_specific_data
+	{
+	name = "Non-localised_resource";
+	}
\ No newline at end of file
--- a/installationservices/swinstallationfw/test/tusif/source/tsifcommonunitteststep.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/source/tsifcommonunitteststep.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -99,7 +99,7 @@
 void CSifCommonUnitTestStep::TestComponentInfoL()
 	{
 	TCapabilitySet capSet(ECapabilityReadDeviceData);
-	
+	RPointerArray<Usif::CComponentInfo::CApplicationInfo>* applications = NULL;
 	CComponentInfo* compInfo = CComponentInfo::NewLC();
 	
 	/* Internalize from an empty descriptor and read invalid root node */
@@ -116,7 +116,7 @@
 	CleanupStack::PopAndDestroy(compInfo);
 
 	/* Add invalid child */
-	CComponentInfo::CNode* node = CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, 1234, EFalse);
+	CComponentInfo::CNode* node = CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, 1234, EFalse, EFalse, applications);
 	TRAP(err, node->AddChildL(NULL));
 	if (err != KErrArgument)
 		{
@@ -136,13 +136,14 @@
 	const TInt tooBigLen = maxDescriptorLength + 1;
 	const TInt maxSize = 1234;
 	const TBool hasExe = EFalse;
+	const TBool driveSelectionRequired = EFalse;
 
 	HBufC* tooBigStr = HBufC::NewLC(tooBigLen);
 	TPtr tooBigStrPtr = tooBigStr->Des();
 	tooBigStrPtr.FillZ(tooBigLen);
 	
 	// for SoftwareTypeName
-	TRAP(err, CComponentInfo::CNode::NewLC(*tooBigStr, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe));
+	TRAP(err, CComponentInfo::CNode::NewLC(*tooBigStr, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications));
 	if (err != KErrOverflow)
 		{
 		INFO_PRINTF1(_L("TestComponentInfoL: Overflow detection for SoftwareTypeName"));
@@ -150,7 +151,7 @@
 		}
 
 	// for ComponentName
-	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, *tooBigStr, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe));
+	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, *tooBigStr, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications));
 	if (err != KErrOverflow)
 		{
 		INFO_PRINTF1(_L("TestComponentInfoL: Overflow detection for ComponentName"));
@@ -158,7 +159,7 @@
 		}
 
 	// for Version
-	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, *tooBigStr, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe));
+	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, *tooBigStr, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications));
 	if (err != KErrOverflow)
 		{
 		INFO_PRINTF1(_L("TestComponentInfoL: Overflow detection for aVersion"));
@@ -166,7 +167,7 @@
 		}
 
 	// for Vendor
-	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, *tooBigStr, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe));
+	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, *tooBigStr, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications));
 	if (err != KErrOverflow)
 		{
 		INFO_PRINTF1(_L("TestComponentInfoL: Overflow detection for aVendor"));
@@ -174,7 +175,7 @@
 		}
 
 	// for GlobalComponentId
-	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, *tooBigStr, ENotAuthenticated, capSet, maxSize, hasExe));
+	TRAP(err, CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, *tooBigStr, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications));
 	if (err != KErrOverflow)
 		{
 		INFO_PRINTF1(_L("TestComponentInfoL: Overflow detection for GlobalComponentId"));
@@ -194,7 +195,7 @@
 		User::Leave(err);
 		}
 
-	CComponentInfo::CNode* emptyNode = CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, 1234, EFalse);
+	CComponentInfo::CNode* emptyNode = CComponentInfo::CNode::NewLC(KNullDesC, KNullDesC, KNullDesC, KNullDesC, EDeactivated, ENewComponent, 12345678, KNullDesC, ENotAuthenticated, capSet, 1234, EFalse, EFalse, applications);
 	const TDesC& globalComponentId(emptyNode->GlobalComponentId());
 	ASSERT(globalComponentId.Length() == 0);
 	TRAP(err, compInfo->SetRootNodeAsChildL(*emptyNode));
@@ -213,7 +214,7 @@
 	_LIT(KTxtRootGlobalComponentId, "Root Component Global Id");
 	CComponentInfo::CNode* root = CComponentInfo::CNode::NewLC(KTxtRootSoftwareTypeName,
 				KTxtRootComponentName, KTxtRootVersion, KTxtRootVendor, EDeactivated,
-				ENewComponent, 12345678, KTxtRootGlobalComponentId, ENotAuthenticated, capSet, maxSize, hasExe);
+				ENewComponent, 12345678, KTxtRootGlobalComponentId, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications);
 	
 	// Create an array of nodes
 	RCPointerArray<CComponentInfo::CNode> children;
@@ -227,7 +228,7 @@
 	_LIT(KTxtChild2GlobalComponentId, "Child2 Component Global Id");
 	CComponentInfo::CNode* child2 = CComponentInfo::CNode::NewLC(KTxtChild2SoftwareTypeName,
 				KTxtChild2ComponentName, KTxtChild2Version, KTxtChild2Vendor, EDeactivated,
-				ENewComponent, 12345678, KTxtChild2GlobalComponentId, ENotAuthenticated, capSet, maxSize, hasExe);
+				ENewComponent, 12345678, KTxtChild2GlobalComponentId, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications);
 	children.AppendL(child2);
 	CleanupStack::Pop(child2);
 	
@@ -239,7 +240,7 @@
 	_LIT(KTxtChild3GlobalComponentId, "Child3 Component Global Id");
 	CComponentInfo::CNode* child3 = CComponentInfo::CNode::NewLC(KTxtChild3SoftwareTypeName,
 				KTxtChild3ComponentName, KTxtChild3Version, KTxtChild3Vendor, EDeactivated,
-				ENewComponent, 12345678, KTxtChild3GlobalComponentId, ENotAuthenticated, capSet, maxSize, hasExe);
+				ENewComponent, 12345678, KTxtChild3GlobalComponentId, ENotAuthenticated, capSet, maxSize, hasExe, driveSelectionRequired, applications);
 	children.AppendL(child3);
 	CleanupStack::Pop(child3);
 	
@@ -252,7 +253,7 @@
 	CComponentInfo::CNode* child1 = CComponentInfo::CNode::NewLC(KTxtChild1SoftwareTypeName,
 				KTxtChild1ComponentName, KTxtChild1Version, KTxtChild1Vendor, EDeactivated,
 				ENewComponent, 12345678, KTxtChild1GlobalComponentId, ENotAuthenticated, capSet,
-				maxSize, hasExe, &children);
+				maxSize, hasExe, driveSelectionRequired, applications, &children);
 	root->AddChildL(child1);
 	CleanupStack::Pop(child1);
 	CleanupStack::PopAndDestroy(&children);
--- a/installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -384,6 +384,7 @@
 */
 	{
 	SetTestStepName(KSifGetComponentInfoStep);
+	iconIndex = 0;
 	}
 
 namespace
@@ -499,6 +500,53 @@
 	TInt authenticity(LoadCompInfoNodeIntParamL(aNodeName, KTe_Authenticity));
 	TInt size(LoadCompInfoNodeIntParamL(aNodeName, KTe_MaxInstalledSize));
 	TBool hasexe(LoadCompInfoNodeBoolParamL(aNodeName, KTe_HasExecutable));
+	TBool driveSelectionRequired(LoadCompInfoNodeBoolParamL(aNodeName, KTe_DriveSelectionRequired));
+	TInt noOfApps(LoadCompInfoNodeIntParamL(aNodeName,KTe_NumberOfApplications));
+	
+	TBuf<20> appUidTxt;
+	TBuf<20> appFileNameTxt;
+	TBuf<20> appGroupNameTxt;
+	TBuf<20> appIconFileNameTxt;
+	TBuf<20> appIconFileSize;
+	const TInt MAX_INT_STR_LEN = 8;
+    TBuf<MAX_INT_STR_LEN> integerAppendStr;
+    RPointerArray<Usif::CComponentInfo::CApplicationInfo> applications;
+	
+	for(TInt index = 0; index < noOfApps ; index++)
+	   {
+	   integerAppendStr.Format(_L("%d"), index);
+	   appUidTxt = KTe_ApplicationUid; 
+	   appUidTxt.Append(integerAppendStr);
+	   TInt val = 0;
+	   HBufC* name = CompInfoParamNameLC(aNodeName, appUidTxt);	   
+	   GetHexFromConfig(ConfigSection(),*name, val);
+	   TUid appuid = TUid::Uid(val);
+	   CleanupStack::PopAndDestroy(name);
+	   
+	   appFileNameTxt=KTe_ApplicationName;
+	   appFileNameTxt.Append(integerAppendStr);
+	   TPtrC appFileName(LoadCompInfoNodeStringParamL(aNodeName,appFileNameTxt));
+	   
+	   appGroupNameTxt=KTe_ApplicationGroupName;
+	   appGroupNameTxt.Append(integerAppendStr);
+	   TPtrC appGroupName(LoadCompInfoNodeStringParamL(aNodeName,appGroupNameTxt));
+	   
+	   appIconFileNameTxt=KTe_ApplicationIconFileName;
+	   appIconFileNameTxt.Append(integerAppendStr);
+	   TPtrC appIconFileName(LoadCompInfoNodeStringParamL(aNodeName,appIconFileNameTxt));
+	   	   
+	   Usif::CComponentInfo::CApplicationInfo* app = NULL;
+	   app = Usif::CComponentInfo::CApplicationInfo::NewLC(appuid, appFileName, appGroupName, appIconFileName);
+	   
+	   appIconFileSize = KTe_ApplicationIconFileSize;
+	   appIconFileSize.Append(integerAppendStr);
+	   TInt fileSize(LoadCompInfoNodeIntParamL(aNodeName,appIconFileSize));
+	   iIconFileSizes.Append(fileSize);
+	   
+	   applications.AppendL(app);
+	   CleanupStack::Pop(app);
+	   }	
+	
 	
 	TInt packedCaps(LoadCompInfoNodeIntParamL(aNodeName, KTe_UserGrantableCaps));
 	TCapabilitySet capSet;
@@ -508,7 +556,8 @@
 	CComponentInfo::CNode* node = CComponentInfo::CNode::NewLC(swType, name, version, vendor,
 					static_cast<TScomoState>(scomoState), static_cast<TInstallStatus>(installStatus),
 					static_cast<TComponentId>(componentId), globalId, static_cast<TAuthenticity>(authenticity),
-					capSet, size, hasexe);
+					capSet, size, hasexe, driveSelectionRequired, &applications);
+	
 	
 	// Load children
 	TInt numChildren(LoadCompInfoNodeIntParamL(aNodeName, KTe_CompInfoNumChildren, EFalse));
@@ -526,12 +575,79 @@
 		
 		CleanupStack::PopAndDestroy(childNodeName);
 		}
-
+	applications.Close();
 	return node;
 	}
 
+
+TBool CSifGetComponentInfoStep::CompareAppInfoL(const CComponentInfo::CNode& aExpectedNode, const CComponentInfo::CNode& aObtainedNode)
+    {
+    RPointerArray<Usif::CComponentInfo::CApplicationInfo> obtainedApplicationInfo; 
+    RPointerArray<Usif::CComponentInfo::CApplicationInfo> expectedApplicationInfo;
+    obtainedApplicationInfo = aObtainedNode.Applications();
+    expectedApplicationInfo = aExpectedNode.Applications();
+    TInt obtainedApplicationInfoCount = obtainedApplicationInfo.Count();
+    TInt expectedApplicationInfoCount = expectedApplicationInfo.Count();       
+    
+    if(obtainedApplicationInfoCount != expectedApplicationInfoCount)
+        {
+        INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Info Count: %d/%d"), expectedApplicationInfoCount, obtainedApplicationInfoCount);
+        return EFalse;
+        }
+    if(0 != expectedApplicationInfoCount)
+        {                   
+        for(TInt i=0 ; i < expectedApplicationInfoCount ; i++)
+            {
+            
+            if(expectedApplicationInfo[i]->AppUid() != obtainedApplicationInfo[i]->AppUid())
+               {
+               INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application UID: 0x%08x/0x%08x"), expectedApplicationInfo[i]->AppUid(), obtainedApplicationInfo[i]->AppUid());
+               return EFalse;
+               }
+                
+            if(expectedApplicationInfo[i]->Name().Compare(obtainedApplicationInfo[i]->Name()))
+               {
+               INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Name: %S/%S"), &expectedApplicationInfo[i]->Name(), &obtainedApplicationInfo[i]->Name());
+               return EFalse;
+               }
+    
+            if(expectedApplicationInfo[i]->GroupName().Compare(obtainedApplicationInfo[i]->GroupName()))
+               {
+               INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Group Name: %S/%S"), &expectedApplicationInfo[i]->GroupName(), &obtainedApplicationInfo[i]->GroupName());
+               return EFalse;
+               }
+            
+            _LIT(emtyString,"");
+            if(obtainedApplicationInfo[i]->IconFileName().Compare(emtyString))
+                {
+                //Opening a file server session for icon file size comparison
+                RFs fs;            
+                User::LeaveIfError(fs.Connect());
+                CleanupClosePushL(fs);       
+                TEntry entry;
+                User::LeaveIfError(fs.Entry(obtainedApplicationInfo[i]->IconFileName(),entry));  
+                CleanupStack::Pop(&fs);
+                fs.Close();
+                
+                if(iCompareIconFileSize && iIconFileSizes[iconIndex++] != entry.iSize)
+                   {
+                   INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Icon File Size: %d/%d"), iIconFileSizes[--iconIndex], entry.iSize);                                  
+                   return EFalse;
+                   }                 
+                }
+            if(expectedApplicationInfo[i]->IconFileName().Compare(obtainedApplicationInfo[i]->IconFileName()))
+               {
+               INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Icon File Name: %S/%S"), &expectedApplicationInfo[i]->IconFileName(), &obtainedApplicationInfo[i]->IconFileName());
+               return EFalse;
+               }            
+            }
+        }
+    return ETrue;
+    }
+
+
 TBool CSifGetComponentInfoStep::CompareCompInfoNodeL(const CComponentInfo::CNode& aExpectedNode, const CComponentInfo::CNode& aObtainedNode)
-	{
+	{	
 	INFO_PRINTF2(_L("Checking CComponentInfo for component: '%S'"), &aExpectedNode.ComponentName());
 	if (aExpectedNode.SoftwareTypeName() != aObtainedNode.SoftwareTypeName())
 		{
@@ -605,6 +721,18 @@
 		return EFalse;
 		}
 	
+	if (aExpectedNode.DriveSeletionRequired() != aObtainedNode.DriveSeletionRequired())
+	    {
+	    INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Drive selection required: %d/%d"), aExpectedNode.DriveSeletionRequired(), aObtainedNode.DriveSeletionRequired());
+	    return EFalse;
+	    }
+	
+	if(!CompareAppInfoL(aExpectedNode, aObtainedNode))
+	    {
+	    iIconFileSizes.Close();
+	    return EFalse;
+	    }
+	
 	const RPointerArray<CComponentInfo::CNode>& expectedChildren = aExpectedNode.Children();
 	const RPointerArray<CComponentInfo::CNode>& obtainedChildren = aObtainedNode.Children();
 	if (expectedChildren.Count() != obtainedChildren.Count())
@@ -622,8 +750,7 @@
 			INFO_PRINTF3(_L("CComponentInfo tree comparison failed at component: %S, vendor: %S"), &aExpectedNode.ComponentName(), &aExpectedNode.Vendor());
 			return EFalse;
 			}
-		}
-	
+		}		
 	return ETrue;
 	}
 
@@ -645,6 +772,8 @@
 		GetBoolFromConfig(ConfigSection(),KTe_OperationByFileHandle, iOperationByFileHandle);
 		
 		GetBoolFromConfig(ConfigSection(),KTe_CompareMaxInstalledSize, iCompareMaxInstalledSize);
+		
+		GetBoolFromConfig(ConfigSection(),KTe_CompareIconFileSize, iCompareIconFileSize);
 		}
 	}
 
@@ -693,8 +822,9 @@
 	
 	User::LeaveIfError(iStatus.Int());
 
-	SetTestStepResult(CompareCompInfoNodeL(iComponentInfo->RootNodeL(), compInfo->RootNodeL()) ? EPass : EFail);
-
+	TInt err = 0;
+	TRAP(err, SetTestStepResult(CompareCompInfoNodeL(iComponentInfo->RootNodeL(), compInfo->RootNodeL()) ? EPass : EFail););
+	iIconFileSizes.Close();
 	CleanupStack::PopAndDestroy(compInfo);
 	}
 
--- a/installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -86,9 +86,12 @@
 		TBool LoadCompInfoNodeBoolParamL(const TDesC& aNodePrefix, const TDesC& aParamName, TBool aMandatory = ETrue);
 		CComponentInfo::CNode* LoadCompInfoNodeLC(const TDesC& aNodeName);
 		TBool CompareCompInfoNodeL(const CComponentInfo::CNode& aExpectedNode, const CComponentInfo::CNode& aObtainedNode);
-
+		TBool CompareAppInfoL(const CComponentInfo::CNode& aExpectedNode, const CComponentInfo::CNode& aObtainedNode);
 		TBool iOperationByFileHandle;
 		TBool iCompareMaxInstalledSize;
+		TBool iCompareIconFileSize;
+		RArray<TInt> iIconFileSizes;
+		TInt iconIndex;
 		};
 
 	class CSifInstallStep : public CSifOperationStep
--- a/installationservices/swinstallationfw/test/tusif/source/tsifsuitedefs.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swinstallationfw/test/tusif/source/tsifsuitedefs.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,6 +31,7 @@
 	_LIT(KTe_CancelAfter,"cancelAfter");
 	_LIT(KTe_OperationByFileHandle,"operationByFileHandle");
 	_LIT(KTe_CompareMaxInstalledSize,"compareMaxInstalledSize");
+	_LIT(KTe_CompareIconFileSize,"compareIconFileSize");	
 	_LIT(KTe_UseEnhancedApi,"useEnhancedApi");
 	_LIT(KTe_PackageFile,"packageFile");
 	_LIT(KTe_ComponentId,"componentId");
@@ -51,6 +52,13 @@
 	_LIT(KTe_UserGrantableCaps,"userGrantableCapsBitMask");
 	_LIT(KTe_MaxInstalledSize,"maxInstalledSize");
 	_LIT(KTe_HasExecutable,"hasExecutable");
+	_LIT(KTe_DriveSelectionRequired,"driveSelectionRequired");
+	_LIT(KTe_NumberOfApplications,"noOfApps");
+	_LIT(KTe_ApplicationUid,"appUid");
+	_LIT(KTe_ApplicationName,"appName");
+	_LIT(KTe_ApplicationGroupName,"appGroupName");
+	_LIT(KTe_ApplicationIconFileName,"appIconFileName");
+	_LIT(KTe_ApplicationIconFileSize,"appIconFileSize");
 	_LIT(KTe_VerifyPackageExistence,"verifyExistence");
 	_LIT(KTe_CheckSisRegistry,"checkSisRegistry");
 	_LIT(KTe_ExecutableName,"executableName");
--- a/installationservices/switestfw/group/install_testframework.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/switestfw/group/install_testframework.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	install_testframework
 source	\sf\mw\appinstall\installationservices\switestfw\bwins
 source	\sf\mw\appinstall\installationservices\switestfw\eabi
--- a/installationservices/switestfw/test/autotesting/runswiromtests_9.6.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/switestfw/test/autotesting/runswiromtests_9.6.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -325,6 +325,9 @@
 testexecute z:\tswi\tuiscriptadaptors\scripts\tswtype.script
 move c:\logs\testexecute\tswtype.htm e:\testresults\tswtype.htm
 
+testexecute z:\tswi\tuiscriptadaptors\scripts\tswiappregintegration.script
+move c:\logs\testexecute\tswiappregintegration.htm e:\testresults\tswiappregintegration.htm
+
 del c:\temp\*.*
 attrib c:\tswi\*.* -r
 del c:\tswi\*.*
--- a/installationservices/switestfw/test/autotesting/test_spec_apr_9.5.txt	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/switestfw/test/autotesting/test_spec_apr_9.5.txt	Fri Apr 16 15:05:20 2010 +0300
@@ -152,7 +152,7 @@
 TESTEXECUTE, \logs\testexecute\testrun2.htm,, -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\testrun2.script, 300, UDEB#UREL, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy_notallowrun.ini, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy.ini
 TESTEXECUTE, \logs\testexecute\testshutdown.htm,, \tswi\tuiscriptadaptors\scripts\testshutdown.script, 300, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\testasync.htm,, \tswi\tuiscriptadaptors\scripts\testasync.script, 300, UDEB#UREL, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\useautocfg.bat,
-TESTEXECUTE, \logs\testexecute\testasynccancel.htm,, \tswi\tuiscriptadaptors\scripts\testasynccancel.script, 5000, UDEB#UREL,,
+TESTEXECUTE, \logs\testexecute\testasynccancel.htm,, \tswi\tuiscriptadaptors\scripts\testasynccancel.script, 10000, UDEB#UREL,,
 
 TESTEXECUTE, \logs\testexecute\tsisstub.htm,, -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\tsisstub.script, 300, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\tsisstub_delete.htm,, -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\tsisstub_delete.script, 300, UDEB#UREL, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy_deletepreinstalledfiles.ini, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy.ini
@@ -169,7 +169,7 @@
 
 TESTEXECUTE, \logs\testexecute\tsisregistrytest.htm,, -Dstartupmode=1 -- \tswi\tsisregistrytest\scripts\tsisregistrytest.script, 1500, UDEB#UREL, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\useautocfg.bat, \epoc32\winscw\c\tswi\tsisregistrytest\Scripts\batchfiles\tsisregistrytest_post.bat
 
-TESTEXECUTE, \logs\testexecute\testdevicelanguages.htm,, \tswi\tuiscriptadaptors\scripts\testdevicelanguages.script, 300, UDEB,,
+TESTEXECUTE, \logs\testexecute\testdevicelanguages.htm,, \tswi\tuiscriptadaptors\scripts\testdevicelanguages.script, 300, UDEB#UREL,,
 
 TESTEXECUTE, \logs\testexecute\testVFPOnEmulator.htm,, -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\testVFPOnEmulator.script, 300, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\tdaemon.htm,, -Dstartupmode=1 -- \tswi\tdaemon\scripts\tdaemon.script, 300, UDEB#UREL,, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\callcreateandsignunicode.bat
@@ -191,6 +191,7 @@
 TESTEXECUTE, \logs\testexecute\tgenbackupmeta_mandatory_udeb.htm,, -Dstartupmode=1 -- \tswi\tgenbackupmeta\scripts\tgenbackupmeta_mandatory_udeb.script, 300,UDEB,%SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiCertstore.bat swicertstore_mandatory.dat,\epoc32\winscw\c\tswi\tgenbackupmeta\scripts\postmeta.bat
 TESTEXECUTE, \logs\testexecute\tgenbackupmeta_mandatory_urel.htm,, -Dstartupmode=1 -- \tswi\tgenbackupmeta\scripts\tgenbackupmeta_mandatory_urel.script, 300,UREL,%SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiCertstore.bat swicertstore_mandatory.dat,\epoc32\winscw\c\tswi\tgenbackupmeta\scripts\postmeta.bat
 TESTEXECUTE, \logs\testexecute\trevocation.htm,, -Dstartupmode=1 -- \tswi\trevocation\scripts\trevocation.script, 600, UDEB#UREL,,
+TESTEXECUTE, \logs\testexecute\trevocationocsp_emulator.htm,, -Dstartupmode=1 -- \tswi\trevocation\scripts\trevocationocsp_emulator.script, 600, UDEB#UREL, \epoc32\winscw\c\tswi\trevocation\scripts\trevocationocsp_emulator_pre.bat, \epoc32\winscw\c\tswi\trevocation\scripts\trevocationocsp_emulator_post.bat
 TESTEXECUTE, \logs\testexecute\trevocation_unsigned.htm,, -Dstartupmode=1 -- \tswi\trevocation\scripts\trevocation_unsigned.script, 600, UDEB#UREL, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy_allowunsigned.ini, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy.ini
 TESTEXECUTE, \logs\testexecute\tautosigning.htm,, -Dstartupmode=1 -- \tswi\tautosigning\scripts\tautosigning.script, 300, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\testdrm.htm,, -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\testdrm.script, 300, UDEB#UREL,,
@@ -258,7 +259,7 @@
 TESTEXECUTE, \logs\testexecute\testmulti.htm,, -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\testmulti.script, 300, UDEB#UREL,
 TESTEXECUTE, \logs\testexecute\generateregistrytestdata.htm,, -Dstartupmode=1 -- \tswi\tsisregistrytest\scripts\generateregistrytestdata.script, 300, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\runregistrytests.htm,, -Dstartupmode=1 -- \tswi\tsisregistrytest\scripts\runregistrytests.script, 300, UDEB#UREL,,
-TESTEXECUTE, \logs\testexecute\removeregistrytestdata.htm,, -Dstartupmode=1 -- \tswi\tsisregistrytest\scripts\removeregistrytestdata.script, 300, UDEB#UREL,,
+TESTEXECUTE, \logs\testexecute\removeregistrytestdata.htm,, -Dstartupmode=1 -- \tswi\tsisregistrytest\scripts\removeregistrytestdata.script, 750, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\truststatus.htm,, -Dstartupmode=1 -- \tswi\trevocation\scripts\truststatus.script, 600, UDEB#UREL,, 
 TESTEXECUTE, \logs\testexecute\testtruststatus.htm,, \tswi\tuiscriptadaptors\scripts\testtruststatus.script, 300, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\tresetdevice.htm,, -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\tresetdevice.script, 600, UDEB#UREL, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy_deletepreinstalledfiles.ini, %SECURITYSOURCEDIR%\installationservices\switestfw\test\autotesting\setupSwiPolicy.bat swipolicy.ini
@@ -291,6 +292,8 @@
 [SwiDiran]
 TESTEXECUTE, \logs\testexecute\tswiregcompfields.htm,, \tswi\tuiscriptadaptors\scripts\tswiregcompfields.script, 300, UDEB#UREL,,
 TESTEXECUTE, \logs\testexecute\tswtype.htm,, \tswi\tuiscriptadaptors\scripts\tswtype.script, 300, UDEB#UREL,,
+TESTEXECUTE, \logs\testexecute\tswiappregintegration.htm,, \tswi\tuiscriptadaptors\scripts\tswiappregintegration.script, 3000, UDEB#UREL,,
+TESTEXECUTE, \logs\testexecute\tswiappregintegration_stub.htm,,    -Dstartupmode=1 -- \tswi\tuiscriptadaptors\scripts\tswiappregintegration_stub.script, 500, UDEB#UREL, \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\batchfiles\tswiappregintegration_pre.bat, \epoc32\winscw\c\tswi\tuiscriptadaptors\scripts\batchfiles\tswiappregintegration_post.bat
 
 [SISInstaller]
 tIntegritySupport, \tisrecovery.log,, -Dtextshell -- \tIntegritySupport\scripts\tisrecovery.txt \tisrecovery.log, 300, UDEB#UREL,, \epoc32\winscw\c\tIntegritySupport\scripts\batchfiles\tIntegritySupport_post.bat
--- a/installationservices/swtransactionservices/group/security_softwaretransactionservices.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/installationservices/swtransactionservices/group/security_softwaretransactionservices.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_softwaretransactionservices
 source	\sf\mw\appinstall\installationservices\swtransactionservices
 binary	\sf\mw\appinstall\installationservices\swtransactionservices\group	all
--- a/layers.sysdef.xml	Fri Mar 19 09:33:35 2010 +0200
+++ b/layers.sysdef.xml	Fri Apr 16 15:05:20 2010 +0300
@@ -1,14 +1,17 @@
 <?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
   <!ENTITY layer_real_source_path "sf/mw/appinstall" >
 ]>
 
-<SystemDefinition name="appinstall" schema="1.4.0">
+<SystemDefinition name="appinstall" schema="1.5.1">
   <systemModel>
     <layer name="mw_layer">
       <module name="appinstall">
         <unit unitID="sedo.appinstall" mrp="" bldFile="&layer_real_source_path;/group" name="appinstall" />
       </module>
+      <module name="">
+        <unit unitID="sedoQT.appinstall" mrp="" bldFile="&layer_real_source_path;" name="sedoQT_appinstall" proFile="appinstall.pro" qmakeArgs="-r" />
+      </module>
     </layer>
 
 	<layer name="api_test_layer">
--- a/ncdengine/engine/inc/catalogsconstants.h	Fri Mar 19 09:33:35 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   Constants and definitions.
-*
-*/
-
-
-#ifndef CATALOGS_CONSTANTS_H
-#define CATALOGS_CONSTANTS_H
-
-#include <e32base.h>
-#include <e32msgqueue.h>
-
-#include "catalogsuids.h"
-
-// Replaced with USE_BUILD_SCRIPT when using build script
-#define DUMMY_DEFINE
-
-
-/**
- * Catalogs engine mutex name. All engine object instances have a handle to the mutex.
- * This can be used to determine if there are engine objects in use.
- */
-#ifdef USE_BUILD_SCRIPT
-_LIT( KCatalogsEngineMutex, "ncd-engine-mutex_APP_NAME_POSTFIX" );
-#else
-_LIT( KCatalogsEngineMutex, "ncd-engine-mutex_20019119" ); 
-#endif // USE_BUILD_SCRIPT
-
-/**
- * Note on RProperty usage.
- * RProperty is defined by category and key.
- * 
- * The engine server side process defines RProperty that is defined
- * to have category value equal to SID of the process.
- * Two kinds of info are published using RProperty. 
- * - general settings (currently only maintenance lock status)
- * - client specific connection activity indicator
- * 
- * Connection activity uses RProperty with key that is same as client SID.
- * Because both information are published within the same category, we must ensure
- * that there are no conflicts in key values. To ensure this, following assumptions
- * about keys are used:
- * - all settings values (such as maintenance lock) must be from protected UID
- * range class 0 (0x00000000 - 0x0FFFFFFF)
- * - all engine clients must use UIDs from class 2 (0x20000000 - 0x2FFFFFFF)
- */
-
-/** Catalogs engine property category */
-const TUid KCatalogsEnginePropertyCategory = { KCatalogsServerUid };
-
-/** 
- * Catalogs engine maintenance lock property key. Written when locking/releasing
- * (0 = released).
- */
-const TUint KCatalogsEnginePropertyKeyMaintenanceLock = 1;
-
-/**
- * Catalogs update message queue name format string. Global message queue with this
- * name is created 
- */
-_LIT( KCatalogsUpdateQueueNameFormat, "CatalogsUpdate-%08x" );
-
-/** Catalogs OTA update message queue message size */
-const TInt KCatalogsUpdateQueueMessageSize = RMsgQueueBase::KMaxLength;
-const TInt KCatalogsUpdateQueueSlotCount = 32;
-
-/** Catalogs engine ECom implementation uid */
-const TUid KCCatalogsEngineImplUid = { KCatalogsEngineImplementationUid };
-
-/** Catalogs OTA update information maximum field sizes */
-const TInt KCatalogsUpdateInformationMaxSize = 3*1024;
-const TInt KCatalogsUpdateTargetMaxSize = 256;
-const TInt KCatalogsUpdateIdMaxSize = 1024;
-const TInt KCatalogsUpdateVersionMaxSize = 256;
-const TInt KCatalogsUpdateUriMaxSize = 1024;
-
-
-/**
- * Mime type match strings. 
- */
-
-_LIT( KMimeTypeMatchSymbianInstall,   "application/vnd.symbian.install" );
-_LIT( KMimeTypeMatch1JavaApplication, "*java?archive" );
-_LIT( KMimeTypeMatch2JavaApplication, "application/java-archive" );
-_LIT( KMimeTypeMatchRealMedia,        "application/vnd.rn-realmedia" );
-_LIT( KMimeTypeMatchApplicationStream,"application/octet-stream" );
-_LIT( KMimeTypeMatchApplication,      "application/*" );
-
-_LIT( KMimeTypeMatchSis,  "x-epoc/x-app268436505" );
-_LIT( KMimeTypeMatchSisx, "x-epoc/x-sisx-app" );
-
-
-_LIT( KMimeTypeMatchHtml, "text/html" );
-_LIT( KMimeTypeMatchTxt,  "text/plain" );
-_LIT( KMimeTypeMatchCod,  "text/x-co-desc" );
-_LIT8( KMimeTypeXml, "text/xml" );
-
-_LIT( KMimeTypeMatchDrmMessage,     "application/vnd.oma.drm.message" );
-_LIT( KMimeTypeMatchDrmRightsXml,   "application/vnd.oma.drm.rights+xml" );
-_LIT( KMimeTypeMatchDrmRightsWbxml, "application/vnd.oma.drm.rights+wbxml" );
-_LIT8( KMimeTypeMatchDrmRightsXml8,   "application/vnd.oma.drm.rights+xml" );
-_LIT8( KMimeTypeMatchDrmRightsWbxml8, "application/vnd.oma.drm.rights+wbxml" );
-_LIT( KMimeTypeMatchDrmContent,     "application/vnd.oma.drm.content" );
-_LIT8( KMimeTypeMatchDrm8,            "application/vnd.oma.drm.*" );
-
-_LIT( KMimeTypeMatchOdd, "application/vnd.oma.dd*" );
-_LIT8( KMimeTypeMatchOdd8, "application/vnd.oma.dd*" );
-
-_LIT( KMimeTypeMatchWidget, "application/x-nokia-widget" );
-
-_LIT( KHttpMatchString, "http://*" );
-
-// Descriptor types
-_LIT( KDescriptorTypeOdd, "dd" );
-_LIT( KDescriptorTypeJad, "jad" );
-
-_LIT( KMimeTypeMatchJad, "text/vnd.sun.j2me.app-descriptor" );
-_LIT8( KMimeTypeMatchJad8, "text/vnd.sun.j2me.app-descriptor" );
-
-_LIT( KDirectorySeparator, "\\" );
-
-// List granularity used in initializing various lists and arrays.
-const TInt KListGranularity( 8 );
-
-// CBufFlat expansion size, should not be very small for good 
-// performance.
-const TInt KBufExpandSize( 256 );
-
-// Granularity for CCatalogsStringManager's string arrays
-const TInt KStringArrayGranularity( 256 );
-
-
-// Query id for payment method query.
-_LIT( KQueryIdPaymentMethod, "deadbeef" );
-
-
-// Engine configuration file
-_LIT( KCatalogsConfigFile, "config.xml" );
-
-// Download manager root dir
-_LIT( KCatalogsDownloadMgrPath, "C:\\system\\dmgr\\%S\\downloads\\*.*" );
-
-// Number of attempts before we give up on connecting to download manager
-const TInt KCatalogsDlMgrConnectRetryAttempts = 5;
-
-// tenth of a second, the time between download manager connect attemps
-const TInt KCatalogsDlMgrConnectRetryInterval = 100000; 
-
-#endif // CATALOGS_CONSTANTS_H
--- a/ncdengine/engine/transport/inc/catalogshttpdownload.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/engine/transport/inc/catalogshttpdownload.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -480,6 +480,11 @@
     void UpdateExtensionL();
     
     /**
+     *  Replace current extension at aName with extension given (eExt).
+     */
+    void ReplaceExtension( TDes& aName, const TDesC& aExt );
+    
+    /**
      * Checks the preset content-type and forces HEAD request if
      * content is OMA DD, JAD or some DRM file
      */
--- a/ncdengine/engine/transport/src/catalogshttpdownload.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/engine/transport/src/catalogshttpdownload.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -1044,7 +1044,8 @@
 
     // was >=, DL manager should give us proper errors but it doesn't always
     if ( ( statusCode == KHttpErrorStatus ||
-           globalErrorId == KGenericSymbianHttpError ) && 
+           globalErrorId == KGenericSymbianHttpError ||
+           globalErrorId == KErrDisMounted) && 
          aEvent.iDownloadState != EHttpDlFailed ) 
         {
         DLTRACE(("Setting download as failed because received a response >= 400" ));
@@ -2422,7 +2423,16 @@
     
     TFileName filename = iConfig->Filename();
     TDataType type( ContentType() );
-    iOwner.DocumentHandler().CheckFileNameExtension( filename, type );
+    
+    // Doc handler does not yet support Widget extension change
+    TFileName mimeType;
+    mimeType.Copy(type.Des8());
+    if ( mimeType.Compare(KMimeTypeMatchWidget) == 0 )
+            {
+            ReplaceExtension( filename, KWidgetExtension );
+            }
+    else
+       iOwner.DocumentHandler().CheckFileNameExtension( filename, type );
     
     iConfig->SetFilenameL( filename );        
     }
@@ -2650,3 +2660,18 @@
     return *iEncodedUri;
     }
 
+// ---------------------------------------------------------
+// CCatalogsHttpDownload::ReplaceExtension()
+// Replace current extension at aName with extension given (eExt).
+// ---------------------------------------------------------
+//      
+void CCatalogsHttpDownload::ReplaceExtension( TDes& aName, const TDesC& aExt )
+    {
+    
+    TInt dotPos = aName.LocateReverse( '.' );
+    if ( dotPos != KErrNotFound )
+       {
+       aName.Delete( dotPos, aName.Length()- dotPos );
+       aName.Append( aExt );
+       }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/inc/catalogsconstants.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Constants and definitions.
+*
+*/
+
+
+#ifndef CATALOGS_CONSTANTS_H
+#define CATALOGS_CONSTANTS_H
+
+#include <e32base.h>
+#include <e32msgqueue.h>
+
+#include "catalogsuids.h"
+
+// Replaced with USE_BUILD_SCRIPT when using build script
+#define DUMMY_DEFINE
+
+
+/**
+ * Catalogs engine mutex name. All engine object instances have a handle to the mutex.
+ * This can be used to determine if there are engine objects in use.
+ */
+#ifdef USE_BUILD_SCRIPT
+_LIT( KCatalogsEngineMutex, "ncd-engine-mutex_APP_NAME_POSTFIX" );
+#else
+_LIT( KCatalogsEngineMutex, "ncd-engine-mutex_20019119" ); 
+#endif // USE_BUILD_SCRIPT
+
+/**
+ * Note on RProperty usage.
+ * RProperty is defined by category and key.
+ * 
+ * The engine server side process defines RProperty that is defined
+ * to have category value equal to SID of the process.
+ * Two kinds of info are published using RProperty. 
+ * - general settings (currently only maintenance lock status)
+ * - client specific connection activity indicator
+ * 
+ * Connection activity uses RProperty with key that is same as client SID.
+ * Because both information are published within the same category, we must ensure
+ * that there are no conflicts in key values. To ensure this, following assumptions
+ * about keys are used:
+ * - all settings values (such as maintenance lock) must be from protected UID
+ * range class 0 (0x00000000 - 0x0FFFFFFF)
+ * - all engine clients must use UIDs from class 2 (0x20000000 - 0x2FFFFFFF)
+ */
+
+/** Catalogs engine property category */
+const TUid KCatalogsEnginePropertyCategory = { KCatalogsServerUid };
+
+/** 
+ * Catalogs engine maintenance lock property key. Written when locking/releasing
+ * (0 = released).
+ */
+const TUint KCatalogsEnginePropertyKeyMaintenanceLock = 1;
+
+/**
+ * Catalogs update message queue name format string. Global message queue with this
+ * name is created 
+ */
+_LIT( KCatalogsUpdateQueueNameFormat, "CatalogsUpdate-%08x" );
+
+/** Catalogs OTA update message queue message size */
+const TInt KCatalogsUpdateQueueMessageSize = RMsgQueueBase::KMaxLength;
+const TInt KCatalogsUpdateQueueSlotCount = 32;
+
+/** Catalogs engine ECom implementation uid */
+const TUid KCCatalogsEngineImplUid = { KCatalogsEngineImplementationUid };
+
+/** Catalogs OTA update information maximum field sizes */
+const TInt KCatalogsUpdateInformationMaxSize = 3*1024;
+const TInt KCatalogsUpdateTargetMaxSize = 256;
+const TInt KCatalogsUpdateIdMaxSize = 1024;
+const TInt KCatalogsUpdateVersionMaxSize = 256;
+const TInt KCatalogsUpdateUriMaxSize = 1024;
+
+
+/**
+ * Mime type match strings. 
+ */
+
+_LIT( KMimeTypeMatchSymbianInstall,   "application/vnd.symbian.install" );
+_LIT( KMimeTypeMatch1JavaApplication, "*java?archive" );
+_LIT( KMimeTypeMatch2JavaApplication, "application/java-archive" );
+_LIT( KMimeTypeMatchRealMedia,        "application/vnd.rn-realmedia" );
+_LIT( KMimeTypeMatchApplicationStream,"application/octet-stream" );
+_LIT( KMimeTypeMatchApplication,      "application/*" );
+
+_LIT( KMimeTypeMatchSis,  "x-epoc/x-app268436505" );
+_LIT( KMimeTypeMatchSisx, "x-epoc/x-sisx-app" );
+
+
+_LIT( KMimeTypeMatchHtml, "text/html" );
+_LIT( KMimeTypeMatchTxt,  "text/plain" );
+_LIT( KMimeTypeMatchCod,  "text/x-co-desc" );
+_LIT8( KMimeTypeXml, "text/xml" );
+
+_LIT( KMimeTypeMatchDrmMessage,     "application/vnd.oma.drm.message" );
+_LIT( KMimeTypeMatchDrmRightsXml,   "application/vnd.oma.drm.rights+xml" );
+_LIT( KMimeTypeMatchDrmRightsWbxml, "application/vnd.oma.drm.rights+wbxml" );
+_LIT8( KMimeTypeMatchDrmRightsXml8,   "application/vnd.oma.drm.rights+xml" );
+_LIT8( KMimeTypeMatchDrmRightsWbxml8, "application/vnd.oma.drm.rights+wbxml" );
+_LIT( KMimeTypeMatchDrmContent,     "application/vnd.oma.drm.content" );
+_LIT8( KMimeTypeMatchDrm8,            "application/vnd.oma.drm.*" );
+
+_LIT( KMimeTypeMatchOdd, "application/vnd.oma.dd*" );
+_LIT8( KMimeTypeMatchOdd8, "application/vnd.oma.dd*" );
+
+_LIT( KMimeTypeMatchWidget, "application/x-nokia-widget" );
+
+_LIT( KHttpMatchString, "http://*" );
+
+// Descriptor types
+_LIT( KDescriptorTypeOdd, "dd" );
+_LIT( KDescriptorTypeJad, "jad" );
+
+_LIT( KMimeTypeMatchJad, "text/vnd.sun.j2me.app-descriptor" );
+_LIT8( KMimeTypeMatchJad8, "text/vnd.sun.j2me.app-descriptor" );
+
+_LIT( KDirectorySeparator, "\\" );
+
+// List granularity used in initializing various lists and arrays.
+const TInt KListGranularity( 8 );
+
+// CBufFlat expansion size, should not be very small for good 
+// performance.
+const TInt KBufExpandSize( 256 );
+
+// Granularity for CCatalogsStringManager's string arrays
+const TInt KStringArrayGranularity( 256 );
+
+
+// Query id for payment method query.
+_LIT( KQueryIdPaymentMethod, "deadbeef" );
+
+
+// Engine configuration file
+_LIT( KCatalogsConfigFile, "config.xml" );
+
+// Download manager root dir
+_LIT( KCatalogsDownloadMgrPath, "C:\\system\\dmgr\\%S\\downloads\\*.*" );
+
+// Number of attempts before we give up on connecting to download manager
+const TInt KCatalogsDlMgrConnectRetryAttempts = 5;
+
+// tenth of a second, the time between download manager connect attemps
+const TInt KCatalogsDlMgrConnectRetryInterval = 100000; 
+
+// File extension for widget
+_LIT( KWidgetExtension, ".wgz" );
+
+// Default widget version number
+_LIT( KDefVersion, "000" );
+
+#endif // CATALOGS_CONSTANTS_H
--- a/ncdengine/inc/ncdnodecontentinfo.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/inc/ncdnodecontentinfo.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -78,7 +78,6 @@
      */
     virtual TUid Uid() const = 0;
 
-
     /**
      * Different versions of the content items may exist. Thus,
      * a version identifier may be defined for the item. When installing
@@ -102,6 +101,15 @@
      */
     virtual TInt Size() const = 0;
 
+    /**
+     * This function is the indicative Identifier for the
+     * contents that are widgets. This can be used e.g. for checking
+     * if the widget has already been installed to the phone.
+     *
+     * @return The Identifer of the application item.
+     */
+    virtual const TDesC& Identifier() const = 0;
+
 
 protected:
 
--- a/ncdengine/provider/client/inc/ncdnodecontentinfoproxy.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/client/inc/ncdnodecontentinfoproxy.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -122,6 +122,11 @@
      */     
     virtual TInt Size() const;
 
+    /**
+     * @see MNcdNodeContent::Identifier
+     */ 
+    const TDesC& Identifier() const;
+    
 protected:
 
     /**
@@ -171,6 +176,7 @@
 
     TUint iPurpose;
     HBufC* iMimeType;
+    HBufC* iIdentifier;
     TUid iUid;
     HBufC* iVersion;
     TInt iSize;
--- a/ncdengine/provider/client/src/ncdnodecontentinfoproxy.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/client/src/ncdnodecontentinfoproxy.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -27,6 +27,7 @@
 #include "catalogsutils.h"
 #include "catalogsdebug.h"
 #include "ncderrors.h"
+#include "catalogsconstants.h"
 
 
 // ======== PUBLIC MEMBER FUNCTIONS ========
@@ -86,7 +87,10 @@
 
     delete iMimeType;
     iMimeType = NULL;
-
+    
+    delete iIdentifier;
+    iIdentifier = NULL;
+    
     delete iVersion;
     iVersion = NULL;
     }
@@ -166,6 +170,11 @@
     return *iMimeType;
     }
 
+const TDesC& CNcdNodeContentInfoProxy::Identifier() const
+    {
+    return *iIdentifier;
+    }
+
 TUid CNcdNodeContentInfoProxy::Uid() const
     {
     return iUid;
@@ -209,9 +218,19 @@
     InternalizeDesL( iMimeType, aStream );    
     DLINFO(( _L("Mime: %S"), iMimeType ));
     
-    iUid.iUid = aStream.ReadInt32L();    
-    DLINFO(( "Uid: %x", iUid.iUid ));
-    
+    //The Internalization here must be consistant with the externalization in CNcdNodeContentInfo
+    if ( iMimeType->Compare( KMimeTypeMatchWidget ) == 0 )
+        {
+        //widget
+        InternalizeDesL( iIdentifier, aStream );
+        }
+    else
+        {
+        //sis
+        iUid.iUid = aStream.ReadInt32L();   
+        DLINFO(( "Uid: %x", iUid.iUid )); 
+        }
+   
     InternalizeDesL( iVersion, aStream );    
     DLINFO(( _L("Version: %S"), iVersion ));
 
--- a/ncdengine/provider/client/src/ncdsilentinstalloperationproxy.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/client/src/ncdsilentinstalloperationproxy.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -204,7 +204,18 @@
                 SilentInstallOptionsPackage() );             
             break;
             }            
-        
+
+        // Call the corresponding installing function according to the type value.
+        // MimeType info is missing here but SWI will figure out the mimetype via file handler
+        // and call the corresponding plugin.
+        case CNcdInstallInfo::ENcdInstallWidget:
+            {
+            Installer().SilentInstallWidgetL(
+                    iFileHandle, 
+                    SilentInstallOptionsPackage() );
+   
+            break;
+            }
         
         default:
             {
--- a/ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -135,6 +135,12 @@
                                      const TDesC& aMimeType,
                                      const TDesC8& aDescriptorData,
                                      const SwiUI::TInstallOptionsPckg& aInstallOptionsPckg ) = 0;
+    
+    /*
+     * Use SWI API to install widget silently. 
+     */     
+    virtual void SilentInstallWidgetL(RFile& aFile,
+                                      const SwiUI::TInstallOptionsPckg& aInstallOptionsPckg ) = 0;
 
     /**
      * Cancels the silent installation if it is going on.
@@ -184,7 +190,20 @@
 
     virtual TNcdApplicationStatus IsApplicationInstalledL( 
         const TUid& aUid, const TCatalogsVersion& aVersion ) = 0;
-
+    
+    /**
+     * Use widget registry API to check if certain widget with given identifier
+     * has been installed already.
+     */
+    virtual TNcdApplicationStatus IsWidgetInstalledL(
+        const TDesC& aIdentifier, const TCatalogsVersion& aVersion) = 0;
+    
+    /**
+     * Calling widget registry API to return the Uid of the widget 
+     * with given identifier.
+     */     
+    virtual TUid WidgetUidL( const TDesC& aIdentifier) = 0;
+    
     /**
      * Gets the first SID from the SIS registry package
      * by using application UID.
--- a/ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -34,6 +34,7 @@
 #include "ncdasyncoperationobserver.h"
 #include "ncdasyncsilentinstallobserver.h"
 
+#include "ncdwidgetregistrydata.h"
 
 /**
  * New Java registry API was introduced in 3.2. We start using it 
@@ -150,6 +151,12 @@
                              const SwiUI::TInstallOptionsPckg& aInstallOptionsPckg );
     
     /**
+     * @see MNcdInstallationService::SilentInstallWidgetJavaL
+     */
+    void SilentInstallWidgetL( RFile& aFile,
+                               const SwiUI::TInstallOptionsPckg& aInstallOptionsPckg );
+    
+    /**
      * @see MNcdInstallationService::MNcdCancelSilentInstall
      */
     void CancelSilentInstall( HBufC*& aFileName,
@@ -180,6 +187,17 @@
         const TUid& aUid, const TCatalogsVersion& aVersion );
     
     /**
+     * @see MNcdInstallationService::IsWidgetInstalledL
+     */
+    TNcdApplicationStatus IsWidgetInstalledL(
+        const TDesC& aIdentifier, const TCatalogsVersion& aVersion);
+    
+    /**
+     * @see MNcdInstallationService::WidgetUidL
+     */
+    TUid WidgetUidL( const TDesC& aIdentifier);
+    
+    /**
      * @see MNcdInstallationService::SidFromSisRegistryL
      */
     TUid SidFromSisRegistryL( const TUid& aUid );
@@ -391,6 +409,8 @@
     
     void PopulateInstalledWidgetUidsL();
     
+    void PopulateInstalledWidgetsL(RExtendedWidgetInfoArray& aWidgets);
+    
     TUid InstalledWidgetUidL();
     
     HBufC* InstalledWidgetNameLC();
@@ -401,6 +421,10 @@
     
     TBool WidgetExistsL( const TUid& aUid );
     
+    TBool WidgetExistsL( const TDesC& aIdentifier, TCatalogsVersion& aVersion );
+    
+    TBool WidgetExistsL( const TUid& aUid, TCatalogsVersion& aVersion );
+    
 private:
     
     enum TInstallType
@@ -473,7 +497,9 @@
     
     
     RWidgetRegistryClientSession iWidgetRegistry;    
+    
     RWidgetInfoArray iInstalledWidgets;    
+    RPointerArray<CExtendedWidgetInfo> iInstalledWidgetsInfos; 
     };
 
 #endif // C_NCD_INSTALLATION_SERVICE_IMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/deviceinteraction/inc/ncdwidgetregistrydata.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Declaration of CExtendedWidgetInfo
+*
+*/
+
+#ifndef NCDEXTENDEDWIDGETINFO_H
+#define NCDEXTENDEDWIDGETINFO_H
+
+// INCLUDES
+#include <f32file.h>
+#include <WidgetRegistryClient.h>
+#include "catalogsutils.h"
+
+// CONSTANTS
+
+// MACROS
+
+// FORWARD DECLARATIONS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// CLASS DECLARATION
+
+class CExtendedWidgetInfo : public CBase
+    {
+    public:
+        /**
+        * Constructor
+        */
+        inline CExtendedWidgetInfo()
+            {
+            iUid = TUid::Uid(0);
+            iVersion = HBufC::New( KWidgetRegistryVal + 1 );
+            
+            }
+        /**
+        * Destructor.
+        */
+        inline virtual ~CExtendedWidgetInfo()
+            {
+            delete iVersion;
+            }
+
+    public:
+        TUid             iUid;
+        HBufC*           iVersion;
+    };
+
+typedef RPointerArray<CExtendedWidgetInfo>  RExtendedWidgetInfoArray;
+
+#endif  //NCDEXTENDEDWIDGETINFO
--- a/ncdengine/provider/deviceinteraction/src/ncddeviceserviceimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/deviceinteraction/src/ncddeviceserviceimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -166,6 +166,7 @@
 void CNcdDeviceService::RunL()
     {
     DLTRACEIN(( "iStatus: %d", iStatus.Int() ));
+    DLINFO(( "iState: %d", iState ));
     
     // GetSubscriberId fails with KErrNotFound if there's no SIM in the device
     switch ( iState ) 
@@ -182,7 +183,8 @@
         case EGetSubscriberId:
             {
             if ( iStatus.Int() == KErrNone ||
-                 iStatus.Int() == KErrNotFound ) 
+                 iStatus.Int() == KErrNotFound ||
+                 iStatus.Int() == KErrNotReady ) 
                 {
                 
                 DLTRACE(("Got subscriber ID"));
--- a/ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -74,8 +74,6 @@
 // length taken from WidgetRegistryData.h
 const TInt KWidgetBundleIdLength = KWidgetRegistryVal + 1;    
 
-_LIT( KWidgetExtension, ".wgz" );
-
 // ======== CALLBACK FUNCTION ========
  
 static TInt InstallationCompleteCallback( TAny* aData )
@@ -165,6 +163,7 @@
         iWidgetRegistry.Close();
         }
     iInstalledWidgets.ResetAndDestroy();
+    iInstalledWidgetsInfos.ResetAndDestroy();
     }
 
 // ---------------------------------------------------------------------------
@@ -305,7 +304,25 @@
     DLTRACEOUT((""));
     }
 
+// ---------------------------------------------------------------------------
+// Installs widget silently.
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallationService::SilentInstallWidgetL( RFile& aFile,
+                                                    const SwiUI::TInstallOptionsPckg& aInstallOptionsPckg )
+    {
+    DLTRACEIN((""));
+    
+    if ( iSilentInstallActiveObserver == NULL )
+        {
+        DLINFO(("Create active observer for silent install"));
+        iSilentInstallActiveObserver = CNcdSilentInstallActiveObserver::NewL( *this );        
+        }
 
+    InstallWidgetL( aFile, &aInstallOptionsPckg );
+    
+    DLTRACEOUT((""));
+    }
 // ---------------------------------------------------------------------------
 // Cancell silent install.
 // ---------------------------------------------------------------------------
@@ -549,7 +566,54 @@
 
 #endif
 
-  
+// Check via widget registry API
+TNcdApplicationStatus CNcdInstallationService::IsWidgetInstalledL(const TDesC& aIdentifier, const TCatalogsVersion& aVersion)
+    {
+    DLTRACEIN((""));
+    
+    TNcdApplicationStatus status( ENcdApplicationNotInstalled );
+    
+    if ( aIdentifier.Length() == 0 )
+        {
+        DLTRACEOUT(("Null identifier"));
+        return status;
+        }
+    
+    
+    TCatalogsVersion installedVersion;
+    
+    //check widget existance and get version number if it is installed
+    if ( WidgetExistsL( aIdentifier, installedVersion ) )
+        {
+        status = ENcdApplicationInstalled;
+        }
+           
+    //compare the version
+    if ( status == ENcdApplicationInstalled &&
+         aVersion != TCatalogsVersion() ) 
+            {
+            DLINFO(("Installed widget version: %d.%d.%d, comparing to: %d.%d.%d",
+                installedVersion.iMajor,
+                installedVersion.iMinor,
+                installedVersion.iBuild,
+                aVersion.iMajor,
+                aVersion.iMinor,
+                aVersion.iBuild ));
+                
+            if ( installedVersion > aVersion ) 
+                {
+                status = ENcdApplicationNewerVersionInstalled;
+                }
+            else if ( !( installedVersion == aVersion ) ) 
+                {
+                status = ENcdApplicationOlderVersionInstalled;
+                }
+            }
+        
+        DLTRACEOUT(("widget Status: %d", status));
+        return status;    
+    }
+
 // ---------------------------------------------------------------------------
 // Checks the application status
 // ---------------------------------------------------------------------------
@@ -596,9 +660,10 @@
     // SIS app not found, try to get java
     if ( err == KErrNotFound &&
          ( JavaAppExistsL( aUid ) ||
-           WidgetExistsL( aUid ) ) )
+           WidgetExistsL( aUid, installedVersion ) ) ) 
         {
         status = ENcdApplicationInstalled;
+        err = KErrNone;
         }
         
     LeaveIfNotErrorL( err, KErrNotFound );  
@@ -1558,10 +1623,10 @@
     
     iInstallType = EWidgetInstall;
 
-    // Get the list of installed widget uids so that we can
+    // Get the list of installed widgets so that we can
     // get the uid of the new widget after installation
-    PopulateInstalledWidgetUidsL();
-    
+    PopulateInstalledWidgetsL(iInstalledWidgetsInfos);
+
     TDataType dataType;    
     // Start application installation.
     DLINFO(( "Calling doc handler Open" ));
@@ -1671,6 +1736,19 @@
             aError = KErrCancel;
             }
         }
+    else if ( iInstallType == EWidgetInstall )
+        {    
+        // Set the midlet UID for the aAppUid variable.
+        aAppUid = InstalledWidgetUidL();
+        
+        if ( aAppUid == KNullUid )
+            {
+            DLINFO(("Installed widget was not found"));
+            // Because the new widget was not found, we can suppose that the
+            // application was not installed. So, set the error as KErrCancel.
+            aError = KErrCancel;
+            }
+        }
     else if ( iInstallType == ESisInstall )
         {
         // Get theme name if such was installed
@@ -2089,6 +2167,49 @@
     User::LeaveIfError( iWidgetRegistry.InstalledWidgetsL( iInstalledWidgets ) );    
     }
 
+// ---------------------------------------------------------------------------
+// Populates the list of installed widgets
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallationService::PopulateInstalledWidgetsL
+         (RExtendedWidgetInfoArray& aWidgets) 
+    {
+    DLTRACEIN((""));
+    
+    // Get the list of installed widget uids 
+    PopulateInstalledWidgetUidsL();
+    
+    const TInt count = iInstalledWidgets.Count();
+    
+    // Create array with UID & Version infos
+    for ( TInt i = 0; i < count; ++i )
+        {
+        CExtendedWidgetInfo* tempInfo = new ( ELeave ) CExtendedWidgetInfo();
+        CleanupStack::PushL( tempInfo );
+        
+        CWidgetInfo* widgetInfo = iInstalledWidgets[i];
+        
+        CWidgetPropertyValue* version = iWidgetRegistry.GetWidgetPropertyValueL
+            (widgetInfo->iUid, EBundleVersion );
+        CleanupStack::PushL( version );
+
+        // Fill info
+        tempInfo->iUid = widgetInfo->iUid;
+        if (!version->iValue.s)
+            *(tempInfo->iVersion) = KDefVersion;
+        else
+            *(tempInfo->iVersion) = *(version->iValue.s);
+        
+        // Append to arrayt
+        aWidgets.AppendL( tempInfo );
+
+        CleanupStack::PopAndDestroy( version );
+        CleanupStack::Pop( tempInfo );
+        }
+   
+        DLTRACEOUT((""));
+
+    }
 
 // ---------------------------------------------------------------------------
 // Gets the name of widget that was installed last
@@ -2125,25 +2246,33 @@
     {
     DLTRACEIN((""));
     
-    RWidgetInfoArray widgets;
+    RExtendedWidgetInfoArray widgets;
+    PopulateInstalledWidgetsL(widgets);
     CleanupResetAndDestroyPushL( widgets );
         
-    User::LeaveIfError( iWidgetRegistry.InstalledWidgetsL( widgets ) );
+
     DLINFO(("widget count: %d", widgets.Count() ));
     
     TUid uid( KNullUid );
     
     const TInt count = widgets.Count();
-    const TInt installedCount = iInstalledWidgets.Count();
+    const TInt installedCount = iInstalledWidgetsInfos.Count();
     
     // Try to find a widget that was not installed earlier.
     for ( TInt i = 0; i < count; ++i )
         {
         TBool wasInstalled = EFalse;
-        CWidgetInfo* widgetInfo = widgets[ i ];
+        CExtendedWidgetInfo * widgetInfo = widgets[ i ];
         for ( TInt j = 0; j < installedCount; j++ )
             {
-            if ( iInstalledWidgets[ j ]->iUid == widgetInfo->iUid )
+          
+            TCatalogsVersion versionBefore, versionAfter;
+            TCatalogsVersion::ConvertL
+                ( versionBefore, *(iInstalledWidgetsInfos[ j ]->iVersion) );
+            TCatalogsVersion::ConvertL( versionAfter, *(widgetInfo->iVersion) );
+            
+            if ( iInstalledWidgetsInfos[ j ]->iUid == widgetInfo->iUid &&
+                 versionBefore >= versionAfter) 
                 {
                 wasInstalled = ETrue;
                 break;
@@ -2235,3 +2364,114 @@
         }
     return EFalse;         
     }
+
+// ---------------------------------------------------------------------------
+//Calling widget registry API to check if a widget with given uid is installed 
+//already
+// ---------------------------------------------------------------------------
+//
+TBool CNcdInstallationService::WidgetExistsL( 
+        const TUid& aUid, TCatalogsVersion& aVersion )
+    {
+    DLTRACEIN((""));
+    
+    if ( !iWidgetRegistry.Handle() )
+        {
+        User::LeaveIfError( iWidgetRegistry.Connect() );
+        }
+    
+    if ( iWidgetRegistry.IsWidget( aUid ) )
+        {
+        TBuf<KWidgetBundleIdLength> id;
+        iWidgetRegistry.GetWidgetBundleId( aUid, id );
+        if (iWidgetRegistry.WidgetExistsL( id ))
+            {
+            // Get version
+            CWidgetPropertyValue* version = 
+                iWidgetRegistry.GetWidgetPropertyValueL(aUid, EBundleVersion );
+            CleanupStack::PushL( version );
+            TCatalogsVersion::ConvertL( aVersion, *(version->iValue.s) );
+            CleanupStack::PopAndDestroy( version ); 
+            return (ETrue);
+            }
+        else
+            {
+            return (EFalse);
+            }
+        }
+    else
+       return(EFalse);
+
+    }
+    
+// ---------------------------------------------------------------------------
+// Calling widget registry API to check if a widget with given identifier is 
+// installed already
+// ---------------------------------------------------------------------------
+//
+TBool CNcdInstallationService::WidgetExistsL
+          ( const TDesC& aIdentifier, TCatalogsVersion& aVersion )
+    {
+    DLTRACEIN((""));
+    
+    if ( !iWidgetRegistry.Handle() )
+          {
+          User::LeaveIfError( iWidgetRegistry.Connect() );
+          }
+
+    RPointerArray<CWidgetInfo> widgetInfoArr;
+    
+    CleanupResetAndDestroyPushL( widgetInfoArr );
+    TInt err = iWidgetRegistry.InstalledWidgetsL(widgetInfoArr);
+    
+    for( TInt i( widgetInfoArr.Count() - 1 ); i >= 0; --i ) 
+        {
+        CWidgetInfo* widgetInfo( widgetInfoArr[i] );                  
+        CWidgetPropertyValue* bundleId = 
+            iWidgetRegistry.GetWidgetPropertyValueL
+                (widgetInfo->iUid, EBundleIdentifier );
+        CleanupStack::PushL( bundleId );
+        
+        if( aIdentifier.Compare( *(bundleId->iValue.s) )== 0 )
+            {
+            CWidgetPropertyValue* version = 
+                iWidgetRegistry.GetWidgetPropertyValueL
+                    (widgetInfo->iUid, EBundleVersion );
+            CleanupStack::PushL( version );
+            TCatalogsVersion::ConvertL( aVersion, *(version->iValue.s) );
+            
+            CleanupStack::PopAndDestroy( version );
+            CleanupStack::PopAndDestroy( bundleId );
+            CleanupStack::PopAndDestroy( &widgetInfoArr );
+                        
+            return ETrue;
+            }
+        CleanupStack::PopAndDestroy( bundleId );
+        }
+    CleanupStack::PopAndDestroy( &widgetInfoArr );
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+//  Calling widget registry API to return the Uid of the widget
+//  with given identifier.
+// ---------------------------------------------------------------------------
+//
+TUid CNcdInstallationService::WidgetUidL( const TDesC& aIdentifier)
+    {
+    DLTRACEIN((""));
+    
+    TUid id = TUid::Uid(0);
+    
+   if ( !iWidgetRegistry.Handle() )
+          {
+          User::LeaveIfError( iWidgetRegistry.Connect() );
+          }
+    
+    id.iUid = iWidgetRegistry.GetWidgetUidL( aIdentifier);
+
+    return id;
+    
+    }
+
+    
--- a/ncdengine/provider/server/inc/ncdinstallinfo.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/inc/ncdinstallinfo.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -48,7 +48,12 @@
         /**
          * Jar install with a JAD descriptor
          */
-        ENcdInstallJad
+        ENcdInstallJad,
+        
+        /**
+         * Widget install
+         */
+        ENcdInstallWidget
         };
         
         
--- a/ncdengine/provider/server/inc/ncdnodecontentinfoimpl.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/inc/ncdnodecontentinfoimpl.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -128,7 +128,15 @@
      * @return The UID of the application item.
      */
     const TUid& Uid() const;
-
+    
+    /**
+     * This function is the indicative identifier for the
+     * contents that are widgets. This can be used e.g. for checking
+     * if the widget has already been installed to the phone.
+     *
+     * @return The Identifier of the application item.
+     */
+    const TDesC& Identifier() const;
 
     /**
      * Different versions of the content items may exist. Thus,
@@ -261,7 +269,8 @@
 
     TUint iPurpose;
     HBufC* iMimeType;
-    TUid iUid;
+    TUid iUid;         // UID is an identifier for sis 
+    HBufC* iIdentifier; // a string identifier for widget
     HBufC* iVersion;
     TInt iSize;
 
--- a/ncdengine/provider/server/inc/ncdproviderutils.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/inc/ncdproviderutils.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -111,8 +111,15 @@
      */
     static TNcdApplicationStatus IsApplicationInstalledL(
         const TUid& aUid, const TDesC& aVersion );
-        
+    
+    // check if a widget with given identifier is installed already    
+    static TNcdApplicationStatus IsWidgetInstalledL(
+        const TDesC& aIdentifier, const TDesC& aVersion );
+    
 
+    //  Calling widget registry API to return the Uid of the widget with given identifier
+    static TUid WidgetUidL( const TDesC& aIdentifier);
+    
     /**
      * Compares version number strings
      *
--- a/ncdengine/provider/server/src/ncdinstalloperationimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/src/ncdinstalloperationimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -444,6 +444,13 @@
         installType = CNcdInstallInfo::ENcdInstallJad;                
         }
 
+    // compare with widget mimetype. If matching, assign ENcdInstallWidget to install type
+    // The type value will be checked later when installing starts.
+    else if( downloadInfo->ContentMimeType().MatchF( KMimeTypeMatchWidget ) != KErrNotFound )
+        {
+        purpose = ENcdItemPurposeApplication;        
+        installType = CNcdInstallInfo::ENcdInstallWidget;  
+        }
 
     DLTRACE(("Creating fileinfo"));
     // Create file info for proxy-side installer
--- a/ncdengine/provider/server/src/ncdnodecontentinfoimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/src/ncdnodecontentinfoimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -33,6 +33,8 @@
 #include "ncdpurchasedetails.h"
 
 #include "catalogsdebug.h"
+#include "catalogsconstants.h"
+
 
 CNcdNodeContentInfo::CNcdNodeContentInfo( NcdNodeClassIds::TNcdNodeClassId aClassId )
 : CNcdCommunicable(),
@@ -44,7 +46,7 @@
     {
     iMimeType = KNullDesC().AllocL();
     iVersion = KNullDesC().AllocL();
-
+    iIdentifier = KNullDesC().AllocL();
     }
 
 
@@ -76,6 +78,9 @@
 
     delete iVersion;
     iVersion = NULL;
+    
+    delete iIdentifier;
+    iIdentifier = NULL;
 
     DLTRACEOUT((""));
     }        
@@ -100,6 +105,11 @@
     return iUid;
     }
 
+const TDesC& CNcdNodeContentInfo::Identifier() const
+    {
+    return *iIdentifier;
+    }
+
 const TDesC& CNcdNodeContentInfo::Version() const
     {
     return *iVersion;
@@ -134,7 +144,11 @@
     iMimeType = NULL;
 
     iUid = TUid::Null();
-
+    
+    delete iIdentifier;
+    iIdentifier = NULL;
+    iIdentifier = KNullDesC().AllocL();  
+    
     delete iVersion;
     iVersion = NULL;
 
@@ -194,22 +208,31 @@
             iPurpose |= ENcdItemPurposeUnknown;
             }
         }
-
     iMimeType = aData.DownloadableContent()->Mime().AllocL();
 
     if ( iPurpose & ENcdItemPurposeApplication )
         {
-        TInt uid = 0;
-        TRAPD( err, uid = DesHexToIntL( aData.DownloadableContent()->Id() ) );
-        if( err != KErrNone )
+        if ( iMimeType->Compare(KMimeTypeMatchSisx) == 0 )
             {
-            DLERROR(( _L("DownloadableContent()->Id() was not valid hex, using ZERO: %S"),
-                      &aData.DownloadableContent()->Id() ));
-            iUid.iUid = 0;
+            // sis package, convert the string to uid
+            TInt uid = 0;
+            TRAPD( err, uid = DesHexToIntL( aData.DownloadableContent()->Id() ) );
+            if( err != KErrNone )
+                {
+                DLERROR(( _L("DownloadableContent()->Id() was not valid hex, using ZERO: %S"),
+                           &aData.DownloadableContent()->Id() ));
+                iUid.iUid = 0;
+                }
+            else
+                {
+                iUid.iUid = uid;
+                }
             }
-        else
+         
+        if ( iMimeType->Compare( KMimeTypeMatchWidget ) == 0 )
             {
-            iUid.iUid = uid;
+            // widget, save identifier
+            iIdentifier = aData.DownloadableContent()->Id().AllocL();
             }
         }
 
@@ -230,7 +253,17 @@
     
     aStream.WriteUint16L( iPurpose );
     ExternalizeDesL( *iMimeType, aStream );
-    aStream.WriteInt32L( iUid.iUid );
+    
+    // The code here must be sync with the Internalization code in CNcdNodeContentInfoProxy
+    if ( iMimeType->Compare( KMimeTypeMatchWidget ) == 0 )
+        {
+        ExternalizeDesL( *iIdentifier, aStream );
+        }
+    else
+        {
+        aStream.WriteInt32L( iUid.iUid );
+        }
+    
     ExternalizeDesL( *iVersion, aStream );
     aStream.WriteInt32L( iSize );
 
@@ -255,7 +288,18 @@
     
     iPurpose = aStream.ReadUint16L();
     InternalizeDesL( iMimeType, aStream );
-    iUid.iUid = aStream.ReadInt32L();
+    
+    // This Internalize function is called when the node is loaded from cache. RReadStream is a sign of that.
+    // So same logic here also. Check mimetype and then decide to save uid or identifier.
+    if ( iMimeType->Compare( KMimeTypeMatchWidget ) == 0  )
+        {
+        InternalizeDesL( iIdentifier, aStream );
+        }
+    else
+        {
+        iUid.iUid = aStream.ReadInt32L();
+        }
+    
     InternalizeDesL( iVersion, aStream );
     iSize = aStream.ReadInt32L();
 
--- a/ncdengine/provider/server/src/ncdnodeinstallimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/src/ncdnodeinstallimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -344,9 +344,11 @@
         }
 
     
-    if ( iInstalledContent ) 
+    // Identifier might be Null
+    if ( iInstalledContent && iInstalledContent->ApplicationUid() != TUid::Null() ) 
         {
-        DASSERT( iInstalledContent->ApplicationUid() != TUid::Null() );
+        
+         DASSERT( iInstalledContent->ApplicationUid() != TUid::Null() );
         
         // Disable launching if protocol says so. 
         // By default apps defined in content info are launchable
@@ -542,7 +544,6 @@
     return ETrue;
     }
 
-
 // ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
@@ -561,13 +562,26 @@
     TRAPD( err, info = &iMetadata.ContentInfoL() );
     
     TBool installed = EFalse;
-    if ( err == KErrNone && info->Uid() != TUid::Null() ) 
+
+    // Either UID or Identifier exists, we can continue here
+    if ( err == KErrNone && ( info->Uid() != TUid::Null()|| info->Identifier().Length() != 0 ) ) 
         {
-        DLINFO(("Uid: %x", info->Uid().iUid ));
-        TNcdApplicationStatus status = 
-            CNcdProviderUtils::IsApplicationInstalledL(
-                info->Uid(), 
-                info->Version() );
+        TNcdApplicationStatus status = ENcdApplicationNotInstalled;
+        
+        if (info->MimeType().Compare( KMimeTypeMatchWidget ) == 0 && info->Identifier().Length() != 0  )
+            {
+            status = CNcdProviderUtils::IsWidgetInstalledL(
+                    info->Identifier(), 
+                    info->Version() );
+            }
+        else if ( info->Uid() != TUid::Null() ) 
+            {
+            DLINFO(("Uid: %x", info->Uid().iUid ));
+            status = 
+                CNcdProviderUtils::IsApplicationInstalledL(
+                                   info->Uid(), 
+                                   info->Version() );
+            }
         
         // Application can be older version for it to be considered installed
         // Upgrade will be available for the user
@@ -578,35 +592,43 @@
 
         iInstalled = installed;    
         iLaunchable = installed;
-                            
+                                        
         if ( installed ) 
             {
             DLTRACE(("Application installed"));
             CNcdExtendedInstallInfo* install = CNcdExtendedInstallInfo::NewLC();
-            install->SetApplicationUid( info->Uid() );
+
+            if (info->MimeType().Compare( KMimeTypeMatchWidget ) == 0 )
+                {                          
+                install->SetApplicationUid(CNcdProviderUtils::WidgetUidL(info->Identifier()));
+                }
+            else
+                {
+                install->SetApplicationUid( info->Uid() );
+                }
             
-            // This ensures that CNcdInstalledApplication actually checks the 
-            // application's version number when it checks if it's installed
-            // or not
-            install->SetUriExists( ETrue );
+             // This ensures that CNcdInstalledApplication actually checks the 
+             // application's version number when it checks if it's installed
+             // or not
+             install->SetUriExists( ETrue );
 
-            // This will be used to determine whether the app is actually installed
-            // or not
-            install->SetApplicationVersionL( info->Version() );
-            install->SetLaunchable( ETrue );
-            
-            // don't set because it can mess upgrade handling in 
-            // CNcdNodeMetadata::HandleContentUpgradeL
-            iContentVersion = TCatalogsVersion();
+             // This will be used to determine whether the app is actually installed
+             // or not
+             install->SetApplicationVersionL( info->Version() );
+             install->SetLaunchable( ETrue );
 
-            iInstalledContent = install;
-            CleanupStack::Pop( install );
+             // don't set because it can mess upgrade handling in 
+             // CNcdNodeMetadata::HandleContentUpgradeL
+              iContentVersion = TCatalogsVersion();
+
+              iInstalledContent = install;
+              CleanupStack::Pop( install );
+              }
+        
             }
-        }
     return installed;
     }
 
-
 // ---------------------------------------------------------------------------
 // Content version getter
 // ---------------------------------------------------------------------------
--- a/ncdengine/provider/server/src/ncdnodemetadataimpl.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/src/ncdnodemetadataimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -882,7 +882,9 @@
 void CNcdNodeMetaData::InternalizeInstallFromContentInfoL()
     {
     DLTRACEIN((""));
-    if ( iContentInfo && iContentInfo->Uid() != TUid::Null() )
+
+    // continue either UID or identifier exists.
+    if ( iContentInfo && (iContentInfo->Uid() != TUid::Null() || iContentInfo->Identifier().Length() != 0 ) )
         {
         TBool create = !iInstall;
         if ( create ) 
@@ -1002,12 +1004,25 @@
                     DLTRACE(("Creating upgrade"));
                     iUpgrade = CNcdNodeUpgrade::NewL( *this );
                     }
-                
-                // content is an upgrade
-                iUpgrade->SetContentUpgradesL(
-                    ETrue,
-                    iContentInfo->Uid(),
-                    iContentInfo->Version() );  
+             
+                if ((iContentInfo->Uid() == KNullUid) &&
+                    (iContentInfo->MimeType().Compare( KMimeTypeMatchWidget ) == 0 ))
+                    { 
+                    // Get widget Uid
+                        iUpgrade->SetContentUpgradesL(
+                        ETrue,
+                        CNcdProviderUtils::WidgetUidL(iContentInfo->Identifier()),
+                        iContentInfo->Version() );
+                    }
+                else
+                    {
+                    // content is an application upgrade
+                    iUpgrade->SetContentUpgradesL(
+                        ETrue,
+                        iContentInfo->Uid(),
+                        iContentInfo->Version() );
+                    }
+                    
                 return ETrue;                  
                 }
             }        
@@ -1045,6 +1060,38 @@
                 return ETrue;
                 }
             }
+        // Widget?
+        else if (iContentInfo->Identifier() != KNullDesC) 
+            {
+            TNcdApplicationStatus contentVersion( 
+            ENcdApplicationNotInstalled );
+
+            TRAPD( err, 
+                contentVersion = CNcdProviderUtils::IsWidgetInstalledL( 
+                iContentInfo->Identifier(), 
+                iContentInfo->Version() ) );
+
+            // Ignore errors in version conversion                
+            LeaveIfNotErrorL( err, KErrArgument, KErrGeneral );
+                        
+            if ( contentVersion == ENcdApplicationOlderVersionInstalled ) 
+                {
+                if ( !iUpgrade ) 
+                    {
+                    DLTRACE(("Creating upgrade"));
+                    iUpgrade = CNcdNodeUpgrade::NewL( *this );
+                    }
+                            
+                // Set upgrade data which will be available through the API
+                iUpgrade->SetContentUpgradesL( 
+                    ETrue, 
+                    CNcdProviderUtils::WidgetUidL(iContentInfo->Identifier()), 
+                    iContentInfo->Version() );
+                        
+                    DLTRACEOUT(("Content upgrades"));    
+                    return ETrue;
+                }
+            }
         }
     
     if ( iUpgrade )
--- a/ncdengine/provider/server/src/ncdproviderutils.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/ncdengine/provider/server/src/ncdproviderutils.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -279,8 +279,30 @@
     return InstallationServiceL().IsApplicationInstalledL( aUid, version );
     }
 
+// ---------------------------------------------------------------------------
+// Checks if the widget with the given identifier is installed
+// call CNcdInstallationService in deviceinteraction dll
+// ---------------------------------------------------------------------------
+//
+TNcdApplicationStatus CNcdProviderUtils::IsWidgetInstalledL( 
+    const TDesC& aIdentifier, const TDesC& aVersion )
+    {
+    TCatalogsVersion version;
+    TRAPD( err, TCatalogsVersion::ConvertL( version, aVersion ) );
+    LeaveIfNotErrorL( err, KErrArgument, KErrGeneral );
+                             
+    return InstallationServiceL().IsWidgetInstalledL( aIdentifier, version );
+    }
 
 // ---------------------------------------------------------------------------
+// Calling widget registry API to return the Uid of the widget with given ident
+// ---------------------------------------------------------------------------
+//
+TUid CNcdProviderUtils::WidgetUidL( const TDesC& aIdentifier)
+    {
+    return InstallationServiceL().WidgetUidL( aIdentifier );
+    }
+// ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
 //
--- a/secureswitools/makekeys/group/security_makekeys.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/makekeys/group/security_makekeys.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_makekeys
 source	\sf\mw\appinstall\secureswitools\makekeys
 #binary	\security\makekeys\group tools
--- a/secureswitools/makekeys/src/MAKEKEYS.CPP	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/makekeys/src/MAKEKEYS.CPP	Fri Apr 16 15:05:20 2010 +0300
@@ -2,7 +2,7 @@
 * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
+* under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
--- a/secureswitools/makekeys/src/openssllicense.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/makekeys/src/openssllicense.h	Fri Apr 16 15:05:20 2010 +0300
@@ -2,7 +2,7 @@
 * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
+* under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
--- a/secureswitools/swianalysistoolkit/group/security_switools.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swianalysistoolkit/group/security_switools.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_switools
 source	\sf\mw\appinstall\secureswitools\swianalysistoolkit
 binary	\sf\mw\appinstall\secureswitools\swianalysistoolkit\group	all
--- a/secureswitools/swianalysistoolkit/source/common/symbiantypes.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swianalysistoolkit/source/common/symbiantypes.h	Fri Apr 16 15:05:20 2010 +0300
@@ -47,14 +47,18 @@
 
 typedef			  long		int		TInt32;
 typedef	unsigned  long		int		TUint32;
-typedef				short	int		TInt16;
+typedef			  short		int		TInt16;
 typedef	signed				char	TInt8;
-typedef	unsigned	short	int		TUint16;
+typedef	unsigned  short		int		TUint16;
 typedef	unsigned			char	TUint8;
 typedef						bool	TBool;
 
-typedef TUint16 TCRC;
-typedef int TInt;
+typedef TUint16						TCRC;
+typedef						int		TInt;
+typedef unsigned			int		TUint;
+typedef void						TAny;
+typedef unsigned short		int		TText16;
+typedef unsigned			char	TText8;
 
 #endif	/* __SYMBIAN_TYPES_H__ */
 
@@ -63,3 +67,6 @@
 #else
 #define STRING std::string
 #endif // _UNICODE
+
+#define ETrue  true;
+#define EFalse false;
--- a/secureswitools/swisistools/group/bld.inf	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/group/bld.inf	Fri Apr 16 15:05:20 2010 +0300
@@ -85,6 +85,7 @@
 #ifndef TOOLS
 #ifndef TOOLS2
 ../test/tinterpretsisinteg/tintsistef/tinterpretsis.mmp  
+../test/tinterpretsisinteg/data/regfiles/tstapp.mmp
 #endif
 #endif
 
@@ -626,6 +627,7 @@
 ../test/tinterpretsisinteg/testlist.dtd /epoc32/winscw/c/tswi/tinterpretsisinteg/testlist.dtd
 ../test/tinterpretsisinteg/testlist.xml /epoc32/winscw/c/tswi/tinterpretsisinteg/testlist.xml
 
+../test/tinterpretsisinteg/data/Hello_sis.sis /epoc32/winscw/c/tswi/tinterpretsisinteg/data/hello_sis.sis
 ../test/tinterpretsisinteg/data/config-drives.ini /epoc32/winscw/c/tswi/tinterpretsisinteg/data/config-drives.ini
 ../test/tinterpretsisinteg/data/config-drives2.ini /epoc32/winscw/c/tswi/tinterpretsisinteg/data/config-drives2.ini
 ../test/tinterpretsisinteg/data/config-drives-invalid.ini /epoc32/winscw/c/tswi/tinterpretsisinteg/data/config-drives-invalid.ini
@@ -816,6 +818,19 @@
 ../test/tinterpretsisinteg/data/test_stub.sis /epoc32/data/z/system/install/test_stub.sis
 ../test/tinterpretsisinteg/data/int_nr_option_01_stub.sis /epoc32/winscw/c/tswi/tinterpretsisinteg/data/int_nr_option_01_stub.sis
 
+../test/tinterpretsisinteg/data/interpretsis_testcase_stub.sis /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_stub.sis
+../test/tinterpretsisinteg/data/interpretsis_testcase_01_reg.rsc /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_01_reg.rsc
+../test/tinterpretsisinteg/data/interpretsis_testcase_02_reg.rsc /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_02_reg.rsc
+../test/tinterpretsisinteg/data/interpretsis_testcase_01.r01 /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_01.r01
+../test/tinterpretsisinteg/data/interpretsis_testcase_01.r03 /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_01.r03
+../test/tinterpretsisinteg/data/interpretsis_testcase_01.r04 /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_01.r04
+../test/tinterpretsisinteg/data/interpretsis_testcase_01.r24 /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_01.r24
+../test/tinterpretsisinteg/data/interpretsis_testcase_02.r03 /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase_02.r03
+../test/tinterpretsisinteg/data/interpretsis_testcase01.mbm /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase01.mbm
+../test/tinterpretsisinteg/data/interpretsis_testcase03.mbm /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase03.mbm
+../test/tinterpretsisinteg/data/interpretsis_testcase04.mbm /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase04.mbm
+../test/tinterpretsisinteg/data/interpretsis_testcase24.mbm /epoc32/winscw/c/tswi/tinterpretsisinteg/data/interpretsis_testcase24.mbm 
+
 ../test/tinterpretsisinteg/parameters_file/parameters.ini /epoc32/winscw/c/tswi/tinterpretsisinteg/parameters_file/parameters.ini
 ../test/tinterpretsisinteg/parameters_file/int001-006.txt /epoc32/winscw/c/tswi/tinterpretsisinteg/parameters_file/int001-006.txt
 ../test/tinterpretsisinteg/parameters_file/int001-007.txt /epoc32/winscw/c/tswi/tinterpretsisinteg/parameters_file/int001-007.txt
@@ -1508,6 +1523,14 @@
 ../test/tinterpretsisinteg/int_nr_option-39.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/int_nr_option-39.bat
 
 ../test/tinterpretsisinteg/scripts/api-inst-preq2525-interpretsis-18.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-preq2525-interpretsis-18.script
+../test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-01.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-01.script
+../test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-02.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-02.script
+../test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-03.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-03.script
+../test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-04.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-04.script
+../test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-05.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-05.script
+../test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-06.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-06.script
+../test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-08.script /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-08.script
+
 ../test/tinterpretsisinteg/scripts/int_nr_option-01.script  /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/int_nr_option-01.script
 ../test/tinterpretsisinteg/scripts/int_nr_option-02.script  /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/int_nr_option-02.script
 ../test/tinterpretsisinteg/scripts/int_nr_option-03.script  /epoc32/winscw/c/tswi/tinterpretsisinteg/scripts/int_nr_option-03.script
@@ -1584,7 +1607,11 @@
 ../test/tinterpretsisinteg/preq2525-interpretsis-16/argumentfile.ini  /epoc32/winscw/c/tswi/tinterpretsisinteg/preq2525-interpretsis-16/argumentfile.ini
 ../test/tinterpretsisinteg/preq2525-interpretsis-17/argumentfile.ini  /epoc32/winscw/c/tswi/tinterpretsisinteg/preq2525-interpretsis-17/argumentfile.ini
 ../test/tinterpretsisinteg/preq2525-interpretsis-19/argumentfile.ini  /epoc32/winscw/c/tswi/tinterpretsisinteg/preq2525-interpretsis-19/argumentfile.ini
+../test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini  /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini
+../test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini  /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini
+../test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_10.ini  /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_10.ini
 
+../test/tinterpretsisinteg/parameters_file/testcase-interpretsis-07.txt  /epoc32/winscw/c/tswi/tinterpretsisinteg/parameters_file/testcase-interpretsis-07.txt
 ../test/tinterpretsisinteg/parameters_file/preq2525-interpretsis-01.txt  /epoc32/winscw/c/tswi/tinterpretsisinteg/parameters_file/preq2525-interpretsis-01.txt
 ../test/tinterpretsisinteg/parameters_file/preq2525-interpretsis-02.txt  /epoc32/winscw/c/tswi/tinterpretsisinteg/parameters_file/preq2525-interpretsis-02.txt
 ../test/tinterpretsisinteg/parameters_file/preq2525-interpretsis-03.txt  /epoc32/winscw/c/tswi/tinterpretsisinteg/parameters_file/preq2525-interpretsis-03.txt
@@ -1891,6 +1918,12 @@
 ../test/tscrtool/data/preprovision_symbian.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_symbian.xml
 ../test/tscrtool/data/preprovision_attribute_missing.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_attribute_missing.xml
 ../test/tscrtool/data/preprovision_coverage.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_coverage.xml
+../test/tscrtool/data/preprovision_appreginfo.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_appreginfo.xml
+../test/tscrtool/data/preprovision_nullappuid.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_nullappuid.xml
+../test/tscrtool/data/preprovision_appregattribmissing.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_appregattribmissing.xml
+../test/tscrtool/data/preprovision_noappattrib.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_noappattrib.xml
+../test/tscrtool/data/preprovision_nullappfile.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_nullappfile.xml
+../test/tscrtool/data/preprovision_nocaptioniconinfo.xml		/epoc32/winscw/c/tswi/tscrtool/data/preprovision_nocaptioniconinfo.xml
 
 //script files for PREQ2525 installing equivalent language
 ../test/tinterpretsisinteg/api-inst-preq2525-interpretsis-01_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-preq2525-interpretsis-01_db.bat
@@ -1912,6 +1945,14 @@
 ../test/tinterpretsisinteg/api-inst-preq2525-interpretsis-17_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-preq2525-interpretsis-17_db.bat
 ../test/tinterpretsisinteg/api-inst-preq2525-interpretsis-18_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-preq2525-interpretsis-18_db.bat
 ../test/tinterpretsisinteg/api-inst-preq2525-interpretsis-19_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-preq2525-interpretsis-19_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-01_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-01_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-02_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-02_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-03_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-03_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-04_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-04_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-05_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-05_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-06_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-06_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-07_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-07_db.bat
+../test/tinterpretsisinteg/api-inst-testcase-interpretsis-08_db.bat /epoc32/winscw/c/tswi/tinterpretsisinteg/api-inst-testcase-interpretsis-08_db.bat
 
 #endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
--- a/secureswitools/swisistools/group/interpretsis.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/group/interpretsis.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -27,6 +27,11 @@
 USERINCLUDE 		../source/common
 USERINCLUDE 		../../swianalysistoolkit/source/common
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+USERINCLUDE 		../source/rscparser
+USERINCLUDE		../source/xmlparser
+#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 SYSTEMINCLUDE 		../../openssllib/import/inc/openssl 
 SYSTEMINCLUDE 		../../openssllib/import/inc
--- a/secureswitools/swisistools/group/interpretsislib.mmp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/group/interpretsislib.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -28,6 +28,7 @@
 USERINCLUDE		../source/xmlparser
 USERINCLUDE 	../source/common
 USERINCLUDE 	../source/dbmanager
+USERINCLUDE 	../source/rscparser
 #endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
@@ -76,7 +77,22 @@
 SOURCEPATH		../source/common
 SOURCE			util.cpp
 
-#endif 
+SOURCEPATH		../source/rscparser
+SOURCE			barsc2.cpp
+SOURCE			barscimpl.cpp
+SOURCE			commontypes.cpp
+SOURCE			barsread2.cpp
+SOURCE			barsreadimpl.cpp
+SOURCE			parse.cpp
+SOURCE			apmstd.cpp
+SOURCE			apaid.cpp
+SOURCE			aplapplistitem.cpp
+SOURCE			aplappinforeader.cpp
+SOURCE			uidtype.cpp
+SOURCE			dirparse.cpp
+SOURCE			apsecutils.cpp
+
+#endif
 
 #ifndef TOOLS2_LINUX
 MACRO	_UNICODE _CONSOLE _STLP_THREADS _WIN32 UNICODE __GNUG__ XML_LIBRARY
--- a/secureswitools/swisistools/group/security_sistools.mrp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/group/security_sistools.mrp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,3 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
 component	security_sistools
 source	\sf\mw\appinstall\secureswitools\swisistools
 binary	\sf\mw\appinstall\secureswitools\swisistools\group	all
--- a/secureswitools/swisistools/source/dbmanager/dblayer.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/dbmanager/dblayer.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -37,11 +37,22 @@
 typedef std::vector<std::wstring>::const_iterator ConstWstringIterator;
 typedef std::vector<XmlDetails::TScrEnvironmentDetails>::const_iterator ScrEnvIterator;
 typedef std::vector<XmlDetails::TScrEnvironmentDetails::TLocalizedSoftwareTypeName>::const_iterator ScrEnvLocSwTypeNameIterator;
+typedef std::vector<XmlDetails::TScrEnvironmentDetails::TCustomAcessList>::const_iterator ScrEnvCustomAccessIterator;
 typedef std::vector<XmlDetails::TScrPreProvisionDetail::TComponent>::const_iterator CompIterator;
 typedef std::vector<XmlDetails::TScrPreProvisionDetail::TComponentLocalizable>::const_iterator CompLocIterator;
 typedef std::vector<XmlDetails::TScrPreProvisionDetail::TComponentProperty>::const_iterator CompPropIterator;
 typedef std::vector<XmlDetails::TScrPreProvisionDetail::TComponentFile>::const_iterator CompFileIter;
 typedef std::vector<XmlDetails::TScrPreProvisionDetail::TComponentFile::TFileProperty>::const_iterator FilePropIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo>::const_iterator CompApplicationRegistrationInfoIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute>::const_iterator ApplicationAttributeIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType>::const_iterator ApplicationDataTypeIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo>::const_iterator ApplicationServiceInfoIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo>::const_iterator ApplicationLocalizableInfoIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute>::const_iterator LocalizableAttributeIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData>::const_iterator ViewDataIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes>::const_iterator ViewDataAttributeIterator;
+typedef std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty>::const_iterator ApplicationPropertyIterator;
+
 
 const int KMaxDrives=26;
 
@@ -87,13 +98,14 @@
 	{
 	try
 		{
+		LOGENTER("CDbLayer::PopulatePreProvisionDetails()");
 		AddPreProvisionDetails(aPreProvisionDetailList);
 		}
 		catch(CException& aException)
 			{
 			std::string rollbackTransaction("ROLLBACK;");
 			ExecuteStatement(rollbackTransaction);
-			std::string errMsg = "Failed to populate SCR database with environment details.";
+			std::string errMsg = "Failed to populate SCR database with pre provision details.";
 			LOGERROR(aException.GetMessageA());
 			throw CException(errMsg,ExceptionCodes::ESqlCorrupt);
 			}
@@ -110,9 +122,16 @@
 
 void CDbLayer::PopulateDatabase(const std::vector<XmlDetails::TScrEnvironmentDetails>& aScrEnvDetails)
 	{
-	std::string insertSoftwareType("INSERT INTO SoftwareTypes(SoftwareTypeId,SifPluginUid,InstallerSecureId,ExecutionLayerSecureId) VALUES(?,?,?,?);");
+	LOGENTER("CDbLayer::PopulateDatabase()");
+	std::string insertSoftwareType("INSERT INTO SoftwareTypes(SoftwareTypeId,SifPluginUid,LauncherExecutable) VALUES(?,?,?);");
 	std::auto_ptr<CStatement> stmtSwType(iScrDbHandler->PrepareStatement(insertSoftwareType));
 	
+	std::string insertSTWithoutLE("INSERT INTO SoftwareTypes(SoftwareTypeId,SifPluginUid) VALUES(?,?);");
+	std::auto_ptr<CStatement> stmtSwTypeWithoutLE(iScrDbHandler->PrepareStatement(insertSTWithoutLE));
+	
+    std::string insertCustomAccessList("INSERT INTO CustomAccessList(SoftwareTypeId,SecureId,AccessMode) VALUES(?,?,?);");
+	std::auto_ptr<CStatement> stmtCustomAccessList(iScrDbHandler->PrepareStatement(insertCustomAccessList));
+	
 	std::string insertSwTypeName("INSERT INTO SoftwareTypeNames(SoftwareTypeId,Locale,Name) VALUES(?,?,?);");
 	std::auto_ptr<CStatement> stmtSwTypeName(iScrDbHandler->PrepareStatement(insertSwTypeName));
 		
@@ -122,12 +141,21 @@
 	for(ScrEnvIterator aScrEnvIterator = aScrEnvDetails.begin(); aScrEnvIterator != aScrEnvDetails.end(); ++aScrEnvIterator)
 		{
 		unsigned int swTypeId = Util::Crc32(aScrEnvIterator->iUniqueSoftwareTypeName.c_str(),aScrEnvIterator->iUniqueSoftwareTypeName.length()*2);
+		if (!aScrEnvIterator->iLauncherExecutable.empty())
+		{
 		stmtSwType->BindInt(1, swTypeId);
 		stmtSwType->BindInt(2, aScrEnvIterator->iSifPluginUid);
-		stmtSwType->BindInt(3, aScrEnvIterator->iInstallerSid);
-		stmtSwType->BindInt(4, aScrEnvIterator->iExecutionLayerSid);
+		stmtSwType->BindStr(3, aScrEnvIterator->iLauncherExecutable);
 		stmtSwType->ExecuteStatement();
 		stmtSwType->Reset();
+		}
+		else
+		{
+		stmtSwTypeWithoutLE->BindInt(1, swTypeId);
+		stmtSwTypeWithoutLE->BindInt(2, aScrEnvIterator->iSifPluginUid);
+		stmtSwTypeWithoutLE->ExecuteStatement();
+		stmtSwTypeWithoutLE->Reset();
+		}
 		// First insert unique sw type name
 		const TInt uniqueSwTypeNameLocale = 0;
 		ExecuteSwTypeNameStatement(stmtSwTypeName, swTypeId, uniqueSwTypeNameLocale, aScrEnvIterator->iUniqueSoftwareTypeName);
@@ -136,6 +164,16 @@
 			{
 			ExecuteSwTypeNameStatement(stmtSwTypeName, swTypeId, swTypeNameIter->iLocale, swTypeNameIter->iName);
 			}
+                
+        for(ScrEnvCustomAccessIterator customAccessIter = aScrEnvIterator->iCustomAcessList.begin(); customAccessIter != aScrEnvIterator->iCustomAcessList.end(); ++customAccessIter)
+			{
+        	stmtCustomAccessList->BindInt(1, swTypeId);
+            stmtCustomAccessList->BindInt(2, customAccessIter->iSecureId);
+            stmtCustomAccessList->BindInt(3, customAccessIter->iAccessMode);
+            stmtCustomAccessList->ExecuteStatement();
+            stmtCustomAccessList->Reset();
+			}
+		
 		for(ConstWstringIterator mimeIter= aScrEnvIterator->iMIMEDetails.begin(); mimeIter != aScrEnvIterator->iMIMEDetails.end(); ++mimeIter)
 			{
 			stmtMimeType->BindInt(1, swTypeId);
@@ -144,35 +182,48 @@
 			stmtMimeType->Reset();
 			}
 		}
+	LOGEXIT("CDbLayer::PopulateDatabase()");
 
 	}
 
 void CDbLayer::AddPreProvisionDetails(const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetailList)
 	{
+	LOGENTER("CDbLayer::AddPreProvisionDetails()");
 	for(CompIterator aCompIterator = aPreProvisionDetailList.iComponents.begin(); aCompIterator != aPreProvisionDetailList.iComponents.end(); ++aCompIterator)
 		{	
 		std::string beginTransaction("BEGIN;");
 		ExecuteStatement(beginTransaction);
 		
-		AddComponentDetails(*aCompIterator, aPreProvisionDetailList.iSoftwareTypeName);
-		int componentId = iScrDbHandler->LastInsertedId();
-		AddComponentLocalizables(componentId,aCompIterator->iComponentLocalizables);
-		AddComponentProperties(componentId,aCompIterator->iComponentProperties);
-		AddComponentFiles(componentId,aCompIterator->iComponentFiles);
-		AddComponentDependencies(componentId, aCompIterator->iComponentDependency, aPreProvisionDetailList.iSoftwareTypeName);
-
+		int componentId = 0;
+		if (!AddComponentDetails(*aCompIterator, aPreProvisionDetailList.iSoftwareTypeName))
+			{
+			componentId = iScrDbHandler->LastInsertedId();
+			AddComponentLocalizables(componentId,aCompIterator->iComponentLocalizables);
+			AddComponentProperties(componentId,aCompIterator->iComponentProperties);
+			AddComponentFiles(componentId,aCompIterator->iComponentFiles);
+			AddComponentDependencies(componentId, aCompIterator->iComponentDependency, aPreProvisionDetailList.iSoftwareTypeName);
+			}
+		AddApplicationRegistrationInfo(componentId,aCompIterator->iApplicationRegistrationInfo);
 		std::string commitTransaction("COMMIT;");
 		ExecuteStatement(commitTransaction);
 
 		}
+	LOGEXIT("CDbLayer::AddPreProvisionDetails()");
 	}
 
-void CDbLayer::AddComponentDetails(const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, const std::wstring& aSoftwareTypeName)
+bool CDbLayer::AddComponentDetails(const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, const std::wstring& aSoftwareTypeName)
 	{
+	LOGENTER("CDbLayer::AddComponentDetails()");
 	std::string insertComponents;
 	XmlDetails::TScrPreProvisionDetail::TComponentDetails 
 		componentDetail = aComponent.iComponentDetails;
 
+	if (aComponent.iComponentDetails.iIsRomApplication)
+		{
+		LOGINFO("Is rom app");
+		return true;
+		}
+	LOGINFO("Not rom app");
 	unsigned int swTypeId = Util::Crc32(aSoftwareTypeName.c_str(),aSoftwareTypeName.length()*2);
 	std::wstring strGlobalId = componentDetail.iGlobalId;
 	
@@ -225,7 +276,8 @@
 	
 	stmtComponents->ExecuteStatement();
 	stmtComponents->Reset();
-
+	LOGEXIT("CDbLayer::AddComponentDetails()");
+	return false;
 	}
 
 int CDbLayer::GetInstalledDrives(const std::vector<XmlDetails::TScrPreProvisionDetail::TComponentFile>& aComponentFiles )
@@ -277,6 +329,7 @@
 
 void CDbLayer::AddComponentLocalizables( int aComponentId, const std::vector<XmlDetails::TScrPreProvisionDetail::TComponentLocalizable>& aComponentLocalizable)
 	{
+	LOGENTER("CDbLayer::AddComponentLocalizables()");
 	std::string insertComponentLocalizable("INSERT INTO ComponentLocalizables(ComponentId,Locale,Name,Vendor) VALUES(?,?,?,?);");
 	std::auto_ptr<CStatement> stmtComponentLocalizable(iScrDbHandler->PrepareStatement(insertComponentLocalizable));
 
@@ -289,13 +342,14 @@
 		stmtComponentLocalizable->ExecuteStatement();
 		stmtComponentLocalizable->Reset();
 		}
+	LOGEXIT("CDbLayer::AddComponentLocalizables()");
 	}
 
 void CDbLayer::AddComponentProperties( 
 	int aComponentId, 
 	const std::vector<XmlDetails::TScrPreProvisionDetail::TComponentProperty>& aComponentProperty)
 	{
-	
+	LOGENTER("CDbLayer::AddComponentProperties()");
 	std::string insertComponentProperties;
 	
 	for(CompPropIterator compPropIter = aComponentProperty.begin(); compPropIter != aComponentProperty.end() ; ++compPropIter )
@@ -338,18 +392,19 @@
 		stmtComponentProperty->ExecuteStatement();
 		stmtComponentProperty->Reset();
 		}
-	
+	LOGEXIT("CDbLayer::AddComponentProperties()");
 	}
 
 void CDbLayer::AddComponentFiles(int aComponentId, const std::vector<XmlDetails::TScrPreProvisionDetail::TComponentFile>& aComponentFiles)
 	{
+	LOGENTER("CDbLayer::AddComponentFiles()");
 	for(CompFileIter compFile = aComponentFiles.begin() ; compFile != aComponentFiles.end() ; ++compFile)
 		{
 		AddLocation(aComponentId,compFile->iLocation);
 		int cmpFileId = iScrDbHandler->LastInsertedId();
 		AddFileProperties(cmpFileId,compFile->iFileProperties);
-		
 		}
+	LOGEXIT("CDbLayer::AddComponentFiles()");
 	}
 
 
@@ -358,6 +413,7 @@
 											const std::wstring& aSoftwareTypeName
 										)
 	{
+	LOGENTER("CDbLayer::AddComponentDependencies()");
 	std::wstring dependentId = aComponentDependency.iDependentId;
 
 	if(dependentId.empty())
@@ -393,6 +449,7 @@
 		stmtComponentDeps->Reset();
 	
 		}	
+	LOGEXIT("CDbLayer::AddComponentDependencies()");
 	}
 
 
@@ -458,6 +515,395 @@
 		}
 	}
 
+
+void CDbLayer::AddApplicationRegistrationInfo( int aComponentId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo>& aApplicationRegistrationInfo)
+	{
+	LOGENTER("CDbLayer::AddApplicationRegistrationInfo()");
+	int appflag = 0;
+	int appUid = 0;
+	int error = 0;
+
+	for(CompApplicationRegistrationInfoIterator compApplicationRegistrationInfoIter = aApplicationRegistrationInfo.begin(); compApplicationRegistrationInfoIter != aApplicationRegistrationInfo.end() ; ++compApplicationRegistrationInfoIter )
+	{
+		try {
+			appflag = 0;
+			appUid = AddAppAttribute(aComponentId, compApplicationRegistrationInfoIter->iApplicationAttribute);
+		}
+		catch(CException& aException)
+		{
+			LOGERROR(aException.GetMessageA());
+			LOGERROR("one of AddAppAttribute is already present in database");
+			appflag = 1;
+			error = 1;
+		}
+
+		if(appflag)
+			continue;
+				
+		if (appUid != 0)
+			{
+			AddFileOwnershipInfo(appUid, compApplicationRegistrationInfoIter->iFileOwnershipInfo);
+			AddServiceInfo(appUid, compApplicationRegistrationInfoIter->iApplicationServiceInfo);
+			AddAppLocalizableInfo(appUid, compApplicationRegistrationInfoIter->iApplicationLocalizableInfo);
+			AddProperty(appUid, compApplicationRegistrationInfoIter->iApplicationProperty);
+			}
+		else
+			{
+			std::string errMsg = "AppUid is null.";
+			LOGERROR(errMsg);
+			throw CException(errMsg,ExceptionCodes::ESqlArgumentError);
+			}
+	}
+
+	if(error)
+	{
+		std::string errMsg = "Duplicate entry present in database.";
+		LOGERROR(errMsg);
+		throw CException(errMsg,ExceptionCodes::EFileExists);
+	}
+
+	LOGEXIT("CDbLayer::AddApplicationRegistrationInfo()");
+	}
+
+int CDbLayer::AddAppAttribute( int aComponentId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute>& aAppAttribute)
+	{
+	LOGENTER("CDbLayer::AddAppAttribute()");
+	std::string insertAppAttributes;
+	
+	insertAppAttributes = "INSERT INTO AppRegistrationInfo(AppUid,ComponentId,AppFile,TypeId,Attributes,Hidden,Embeddable,Newfile,Launch,GroupName,DefaultScreenNumber) VALUES(?,?,?,?,?,?,?,?,?,?,?);";
+	std::auto_ptr<CStatement> stmtAppAttribute(iScrDbHandler->PrepareStatement(insertAppAttributes));
+
+	stmtAppAttribute->BindInt64(2, aComponentId);
+	int appUid = 0;
+	std::string appfile;
+	for(ApplicationAttributeIterator applicationAttributeIter = aAppAttribute.begin(); applicationAttributeIter != aAppAttribute.end() ; ++applicationAttributeIter )
+		{
+		if (applicationAttributeIter->iName == L"AppUid")
+			{
+			LOGINFO("CDbLayer::AddAppAttribute()- appuid");
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(1, intValue);
+			appUid = intValue;
+			}
+		else if (applicationAttributeIter->iName == L"AppFile")
+			{
+			stmtAppAttribute->BindStr(3, applicationAttributeIter->iValue);
+			if (applicationAttributeIter->iValue.length() == 0)
+				{
+				std::string errMsg = "Invalid app file.";
+				LOGERROR(errMsg);
+				throw CException(errMsg,ExceptionCodes::ESqlArgumentError);
+				}
+			
+			}
+		else if (applicationAttributeIter->iName == L"TypeId")
+			{
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(4, intValue);
+			}
+		else if (applicationAttributeIter->iName == L"Attributes")
+			{
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(5, intValue);
+			}
+		else if (applicationAttributeIter->iName == L"Hidden")
+			{
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(6, intValue);
+			}
+		else if (applicationAttributeIter->iName == L"Embeddable")
+			{
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(7, intValue);
+			}
+		else if (applicationAttributeIter->iName == L"Newfile")
+			{
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(8, intValue);
+			}
+		else if (applicationAttributeIter->iName == L"Launch")
+			{
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(9, intValue);
+			}
+		else if (applicationAttributeIter->iName == L"GroupName")
+			{
+			stmtAppAttribute->BindStr(10, applicationAttributeIter->iValue);
+			}
+		else if (applicationAttributeIter->iName == L"DefaultScreenNumber")
+			{
+			TInt64 intValue = Util::WideCharToInt64(applicationAttributeIter->iValue.c_str());
+			stmtAppAttribute->BindInt64(11, intValue);
+			}
+		else
+			{
+			std::string errMsg = "Invalid application attribute.";
+			LOGERROR(errMsg);
+			throw CException(errMsg,ExceptionCodes::ESqlArgumentError);
+			}
+		}
+
+		try
+		{
+			stmtAppAttribute->ExecuteStatement();
+			stmtAppAttribute->Reset();
+		}
+		catch(CException& aException)
+		{
+			LOGERROR(aException.GetMessageA());
+			LOGERROR("AppUid Already Present in Database");
+		}
+
+	LOGEXIT("CDbLayer::AddAppAttribute()");
+	return appUid;
+	}
+
+void CDbLayer::AddFileOwnershipInfo( int aAppUid, const std::vector<std::wstring>& aFileOwnershipInfo)
+	{
+	LOGENTER("CDbLayer::AddFileOwnershipInfo()");
+	std::string insertFileOwnershipInfo;
+	
+	for(ConstWstringIterator cWstringIter = aFileOwnershipInfo.begin(); cWstringIter != aFileOwnershipInfo.end() ; ++cWstringIter )
+		{  
+		insertFileOwnershipInfo = "INSERT INTO FileOwnershipInfo(AppUid,FileName) VALUES(?,?);";
+		std::auto_ptr<CStatement> stmtFileOwnershipInfo(iScrDbHandler->PrepareStatement(insertFileOwnershipInfo));
+		
+		stmtFileOwnershipInfo->BindInt64(1, aAppUid);
+		stmtFileOwnershipInfo->BindStr(2, *cWstringIter);
+			
+		stmtFileOwnershipInfo->ExecuteStatement();
+		stmtFileOwnershipInfo->Reset();
+		}
+	LOGEXIT("CDbLayer::AddFileOwnershipInfo()");
+	}
+
+void CDbLayer::AddServiceInfo( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo>& aApplicationServiceInfo)
+	{
+	LOGENTER("CDbLayer::AddServiceInfo()");
+	std::string insertServiceInfo;
+	
+	for(ApplicationServiceInfoIterator serviceInfoIter = aApplicationServiceInfo.begin(); serviceInfoIter != aApplicationServiceInfo.end() ; ++serviceInfoIter )
+		{  
+		insertServiceInfo = "INSERT INTO ServiceInfo(AppUid,Uid) VALUES(?,?);";
+		std::auto_ptr<CStatement> stmtServiceInfo(iScrDbHandler->PrepareStatement(insertServiceInfo));
+		
+		stmtServiceInfo->BindInt64(1, aAppUid);
+		stmtServiceInfo->BindInt64(2, serviceInfoIter->iUid);
+		stmtServiceInfo->ExecuteStatement();
+		stmtServiceInfo->Reset();
+		
+		int serviceId = iScrDbHandler->LastInsertedId();
+		std::string insertDataType;
+		
+		const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType>& datatype = serviceInfoIter->iDataType;
+		for(ApplicationDataTypeIterator dataTypeIter = datatype.begin(); dataTypeIter != datatype.end() ; ++dataTypeIter )
+			{  
+			insertDataType = "INSERT INTO DataType(ServiceId,Priority,Type) VALUES(?,?,?);";
+			std::auto_ptr<CStatement> stmtDataType(iScrDbHandler->PrepareStatement(insertDataType));
+			
+			stmtDataType->BindInt64(1, serviceId);
+			stmtDataType->BindInt64(2, dataTypeIter->iPriority);
+			stmtDataType->BindStr(3, dataTypeIter->iType);
+				
+			stmtDataType->ExecuteStatement();
+			stmtDataType->Reset();
+			}
+		}
+	LOGEXIT("CDbLayer::AddServiceInfo()");
+	}
+
+void CDbLayer::AddAppLocalizableInfo( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo>& aApplicationLocalizableInfo)
+{
+	LOGENTER("CDbLayer::AddAppLocalizableInfo()");
+	for(ApplicationLocalizableInfoIterator localizableInfoIter = aApplicationLocalizableInfo.begin(); localizableInfoIter != aApplicationLocalizableInfo.end() ; ++localizableInfoIter )
+	{
+		AddLocalizableAttribute(aAppUid, localizableInfoIter->iLocalizableAttribute);
+		int localAppInfoId = iScrDbHandler->LastInsertedId();
+		AddViewData(localAppInfoId, localizableInfoIter->iViewData);
+	}
+	LOGEXIT("CDbLayer::AddAppLocalizableInfo()");
+}
+
+void CDbLayer::AddLocalizableAttribute( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute>& aApplicationLocalizableAttribute)
+{
+	LOGENTER("CDbLayer::AddLocalizableAttribute()");
+	std::string insertAppLocalizableInfo;
+		
+	insertAppLocalizableInfo = "INSERT INTO LocalizableAppInfo(AppUid,ShortCaption,GroupName,Locale,CaptionAndIconId) VALUES(?,?,?,?,?);";
+	std::auto_ptr<CStatement> stmtAppLocalizableInfo(iScrDbHandler->PrepareStatement(insertAppLocalizableInfo));
+
+	std::string insertCaptionAndIconInfo;
+		
+	insertCaptionAndIconInfo = "INSERT INTO CaptionAndIconInfo(Caption,NumberOfIcons,IconFile) VALUES(?,?,?);";
+	std::auto_ptr<CStatement> stmtCaptionAndIconInfo(iScrDbHandler->PrepareStatement(insertCaptionAndIconInfo));
+
+	bool captionAndIconInfoPresent = 0;
+	//for every TLocalizableAttribute
+	stmtAppLocalizableInfo->BindInt64(1, aAppUid);
+	for(LocalizableAttributeIterator localizableAttributeIter = aApplicationLocalizableAttribute.begin(); localizableAttributeIter != aApplicationLocalizableAttribute.end() ; ++localizableAttributeIter )
+	{
+		if (localizableAttributeIter->iName == L"ShortCaption")
+		{
+			stmtAppLocalizableInfo->BindStr(2, localizableAttributeIter->iValue);
+		}
+		else if(localizableAttributeIter->iName == L"GroupName")
+		{
+			stmtAppLocalizableInfo->BindStr(3, localizableAttributeIter->iValue);
+		}
+		else if(localizableAttributeIter->iName == L"Locale")
+		{
+			TInt64 intValue = Util::WideCharToInt64(localizableAttributeIter->iValue.c_str());
+			stmtAppLocalizableInfo->BindInt64(4, intValue);
+		}
+		else if(localizableAttributeIter->iName == L"Caption")
+		{
+			stmtCaptionAndIconInfo->BindStr(1, localizableAttributeIter->iValue);
+			captionAndIconInfoPresent = 1;
+		}
+		else if(localizableAttributeIter->iName == L"NumberOfIcons")
+		{
+			TInt64 intValue = Util::WideCharToInt64(localizableAttributeIter->iValue.c_str());
+			stmtCaptionAndIconInfo->BindInt64(2, intValue);
+			captionAndIconInfoPresent = 1;
+		}
+		else if(localizableAttributeIter->iName == L"IconFile")
+		{
+			stmtCaptionAndIconInfo->BindStr(3, localizableAttributeIter->iValue);
+			captionAndIconInfoPresent = 1;
+		}
+		else
+		{
+			std::string errMsg = "Invalid localizable attribute.";
+			LOGERROR(errMsg);
+			throw CException(errMsg,ExceptionCodes::ESqlArgumentError);
+		}
+	}
+	if (captionAndIconInfoPresent)
+	{
+		stmtCaptionAndIconInfo->ExecuteStatement();
+		stmtCaptionAndIconInfo->Reset();
+		int captionAndIconIdForLocalizableInfo = iScrDbHandler->LastInsertedId();
+		stmtAppLocalizableInfo->BindInt64(5, captionAndIconIdForLocalizableInfo);
+	}
+	stmtAppLocalizableInfo->ExecuteStatement();
+	stmtAppLocalizableInfo->Reset();
+	LOGEXIT("CDbLayer::AddLocalizableAttribute()");
+}
+
+
+void CDbLayer::AddViewData( int alocalAppInfoId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData>& aViewData)
+{
+	LOGENTER("CDbLayer::AddViewData()");
+
+	for(ViewDataIterator viewDataIter = aViewData.begin(); viewDataIter != aViewData.end() ; ++viewDataIter )
+	{
+		AddViewDataAttributes(alocalAppInfoId, viewDataIter->iViewDataAttributes);
+	}
+
+	LOGEXIT("CDbLayer::AddViewData()");
+}
+
+
+void CDbLayer::AddViewDataAttributes( int alocalAppInfoId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes>& aViewDataAttribute)
+	{
+	LOGENTER("CDbLayer::AddViewData()");
+	std::string insertViewData;
+
+	insertViewData = "INSERT INTO ViewData(LocalAppInfoId,Uid,ScreenMode,CaptionAndIconId) VALUES(?,?,?,?);";
+	std::auto_ptr<CStatement> stmtViewData(iScrDbHandler->PrepareStatement(insertViewData));
+
+	std::string insertCaptionAndIconInfo;
+		
+	insertCaptionAndIconInfo = "INSERT INTO CaptionAndIconInfo(Caption,NumberOfIcons,IconFile) VALUES(?,?,?);";
+	std::auto_ptr<CStatement> stmtCaptionAndIconInfo(iScrDbHandler->PrepareStatement(insertCaptionAndIconInfo));
+
+	bool captionAndIconInfoPresent = 0;
+	//for every TViewData
+	stmtViewData->BindInt64(1, alocalAppInfoId);
+
+	for(ViewDataAttributeIterator viewDataIter = aViewDataAttribute.begin(); viewDataIter != aViewDataAttribute.end() ; ++viewDataIter )
+		{
+		if (viewDataIter->iName == L"Uid")
+			{
+			TInt64 intValue = Util::WideCharToInt64(viewDataIter->iValue.c_str());
+			stmtViewData->BindInt64(2, intValue);
+			}
+		else if(viewDataIter->iName == L"ScreenMode")
+			{
+			TInt64 intValue = Util::WideCharToInt64(viewDataIter->iValue.c_str());
+			stmtViewData->BindInt64(3, intValue);
+			}
+		else if(viewDataIter->iName == L"Caption")
+			{
+			stmtCaptionAndIconInfo->BindStr(1, viewDataIter->iValue);
+			captionAndIconInfoPresent = 1;
+			}
+		else if(viewDataIter->iName == L"NumberOfIcons")
+			{
+			TInt64 intValue = Util::WideCharToInt64(viewDataIter->iValue.c_str());
+			stmtCaptionAndIconInfo->BindInt64(2, intValue);
+			captionAndIconInfoPresent = 1;
+			}
+		else if(viewDataIter->iName == L"IconFile")
+			{
+			stmtCaptionAndIconInfo->BindStr(3, viewDataIter->iValue);
+			captionAndIconInfoPresent = 1;
+			}
+		else
+			{
+			std::string errMsg = "Invalid view data attribute.";
+			LOGERROR(errMsg);
+			throw CException(errMsg,ExceptionCodes::ESqlArgumentError);
+			}
+		}
+	if (captionAndIconInfoPresent)
+		{
+		stmtCaptionAndIconInfo->ExecuteStatement();
+		stmtCaptionAndIconInfo->Reset();
+		int captionAndIconIdForViewData = iScrDbHandler->LastInsertedId();
+		stmtViewData->BindInt64(4, captionAndIconIdForViewData);
+		}
+	stmtViewData->ExecuteStatement();
+	stmtViewData->Reset();
+	LOGEXIT("CDbLayer::AddViewData()");
+	}
+
+void CDbLayer::AddProperty( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty>& aApplicationProperty)
+	{
+	LOGENTER("CDbLayer::AddProperty()");
+	std::string insertApplicationProperty;
+
+	for(ApplicationPropertyIterator appPropertyIter = aApplicationProperty.begin(); appPropertyIter != aApplicationProperty.end() ; ++appPropertyIter )
+		{  
+
+		insertApplicationProperty = "INSERT INTO AppProperties(AppUid,Locale,Name,ServiceUid,IntValue,StrValue,IsStr8Bit) VALUES(?,?,?,?,?,?,?);";
+		std::auto_ptr<CStatement> stmtAppProperty(iScrDbHandler->PrepareStatement(insertApplicationProperty));
+		
+		stmtAppProperty->BindInt64(1, aAppUid);
+		stmtAppProperty->BindInt(2, appPropertyIter->iLocale);
+		stmtAppProperty->BindStr(3, appPropertyIter->iName);
+		stmtAppProperty->BindInt(4, appPropertyIter->iServiceUid);
+		stmtAppProperty->BindInt(5, appPropertyIter->iIntValue);
+
+		if(appPropertyIter->iIsStr8Bit)
+			{
+			std::string str = Util::wstring2string(appPropertyIter->iStrValue);
+			std::string decodedString = Util::Base64Decode(str);
+			stmtAppProperty->BindBinary(6, str);
+			}
+		else
+			{
+			stmtAppProperty->BindStr(6, appPropertyIter->iStrValue);
+			}
+		
+		stmtAppProperty->BindInt(7, appPropertyIter->iIsStr8Bit);
+
+		stmtAppProperty->ExecuteStatement();
+		stmtAppProperty->Reset();
+		}
+	LOGEXIT("CDbLayer::AddProperty()");
+	}
+
 void CDbLayer::ExecuteStatement(const std::string& aStmtStr)
 	{
 	std::auto_ptr<CStatement> stmt(iScrDbHandler->PrepareStatement(aStmtStr));
--- a/secureswitools/swisistools/source/dbmanager/dblayer.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/dbmanager/dblayer.h	Fri Apr 16 15:05:20 2010 +0300
@@ -53,7 +53,7 @@
 		
 		void AddPreProvisionDetails(const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetailList);
 		
-		void AddComponentDetails(const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, const std::wstring& aSoftwareTypeName);
+		bool AddComponentDetails(const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, const std::wstring& aSoftwareTypeName);
 		
 		int GetInstalledDrives(const std::vector<XmlDetails::TScrPreProvisionDetail::TComponentFile>& aComponentFiles );
 		
@@ -84,7 +84,26 @@
 		void AddFileProperties(int aComponentId, const std::vector<XmlDetails::TScrPreProvisionDetail::TComponentFile::TFileProperty>& aFileProperty);
 		
 		void ExecuteStatement(const std::string& aStmtStr);
+		
 
+		void AddApplicationRegistrationInfo( int aComponentId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo>& aApplicationRegistrationInfo);
+
+		int AddAppAttribute(int aComponentId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute>& aAppAttribute);
+
+		void AddFileOwnershipInfo(int aAppUid, const std::vector<std::wstring>& aFileOwnershipInfo);
+
+		void AddServiceInfo( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo>& aApplicationServiceInfo);
+
+		void AddAppLocalizableInfo( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo>& aApplicationLocalizableInfo);
+
+		void AddLocalizableAttribute( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute>& aApplicationLocalizableAttribute);
+
+		void AddViewData( int alocalAppInfoId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData>& aViewData);
+
+		void AddViewDataAttributes( int alocalAppInfoId, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes>& aViewDataAttribute);
+			
+		void AddProperty( int aAppUid, const std::vector<XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty>& aApplicationProperty);
+				
 		const std::wstring GetLocalTime();
 			
 	private:
--- a/secureswitools/swisistools/source/dumpsis/options.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/dumpsis/options.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -2,7 +2,7 @@
 * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
+* under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
--- a/secureswitools/swisistools/source/interpretsis/commandparser.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsis/commandparser.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -116,11 +116,16 @@
 		#else
 		<< "Usage: " << CommandName () << " [-z dir] [-c dir] [-e] [-k [4.0 | 5.0 | 5.1 | 5.2 | 5.3 | 5.4]]\n"
 		#endif
-		<< "\t\t[-s [sisfile | dir] [+drive [+mcard | +mcardnr | +mcardalone | +mcardalonenr] [+sucert]]] [-s ...]\n"
+		<< "\t\t[-s [sisfile | dir] [+drive [+mcard | +mcardnr | +nonremovablepkg | +mcardalone | +mcardalonenr] [+sucert]]] [-s ...]\n"
 		<< "\t\t[-p param_file] [-d drive] [-r rofsbuild_log_file1,rofsbuild_log_file2,...]\n" 
 		<< "\t\t[-t romstubdir] [-n language_code] [-i config_file] \n"
 		<< "\t\t[-x pkgUID[,pkgUID2,...]] [-w [off | error | warn | info]] [-l logfile]\n\n"
 		<< "Where:\t-h\t\tDisplays help\n"
+		#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+		<< "\t-a\t\tThe path representing the location of Resource files\n"
+		<< "\t  \t\tSpecifying the ROM Drive (-z) is mandatory.\n"
+		<< "\t  \t\tLocalize resource file is read from (Rom_drive\\path_specified_in_resource_file)\n"
+		#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 		<< "\t-c\t\tThe directory representing the system drive on the device\n"
 		<< "\t-d\t\tThe system drive letter [default to 'C']\n"
 		<< "\t-e\t\tDisable eclipsing and SID checks using Z drive \n"
@@ -170,7 +175,7 @@
 
 void CCommandParser::DisplayVersion()
 	{
-	std::cout << "\nINTERPRETSIS  " << " Version  2.1.3 ." << std::endl;
+	std::cout << "\nINTERPRETSIS  " << " Version  3.0.0 ." << std::endl;
 	std::cout << "Copyright (c) 2009 Symbian Software Ltd. All rights reserved.\n " << std::endl;
 	}
  
@@ -208,6 +213,17 @@
 
 		switch (toupper(*++optPtr))
 		    {
+			#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+			case 'A':
+				{
+				if (argc <= 1)
+					throw CCommandParser::ECmdLineNoDirArgument;
+				
+				--argc;
+				aParamList->SetResourceFilePath(*(++argv));
+				break;	
+				}
+			#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 			case 'C':
 				{
 				if (argc <= 1)
@@ -216,6 +232,7 @@
 				--argc;
 				aParamList->SetSystemDrive(*(++argv));
 				break;
+				
 				}
 			case 'D':
 				{	
@@ -224,7 +241,7 @@
 				ConvertMultiByteToWideChar(*++argv,-1, buf, 2048);
 				aParamList->SetSystemDriveLetter(tolower(buf[0]));
 				break;
-				}
+				}					
 			case 'E':
 				{
 				aParamList->SetFlag(CParameterList::EFlagsDisableZDriveChecksSet);
--- a/secureswitools/swisistools/source/interpretsis/main.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsis/main.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -28,9 +28,15 @@
 #include "interpretsis.h"
 #include "logger.h"
 #include "../common/exception.h"
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include "dirparse.h"
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 int main(int argc, const char* argv[])
 	{
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	std::string dbpath;
+#endif	
 	bool pauseWhenDone = false;
 
 	int result= SUCCESS;
@@ -60,10 +66,33 @@
 
 		CInterpretSIS interpretSis(paramList);
 		
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+		if ( paramPtr->IsFlagSet(CParameterList::EFlagsResourceFilePathSet)) 
+		{
+			ParseResourceDir(paramPtr, interpretSis);
+
+			if (NULL != logFile)
+			{
+				bool val = logFile->is_open();
+				logFile->close();
+				delete logFile;
+			}
+			return result;
+		}
+		else
+		{
+			ParseResourceDir(paramPtr, interpretSis);
+		}
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK		
+	
 		result = interpretSis.Install();
 		
 		// Uninstall the sis files
 		interpretSis.Uninstall();
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+		if(result != 0)
+			dbpath=GetDbPath(paramPtr);
+#endif
 		}
     catch( CCommandParser::CmdLineException err )
 		{
@@ -82,6 +111,14 @@
 		e.Display();
 		result = CONFIG_ERROR;
     	}
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	catch(const CResourceFileException& aObject)
+		{
+		LERROR(L"Resource File Parsing Error - ");
+		aObject.Display();
+		result = RSC_PARSING_ERROR;
+		}
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
     catch(const RomManagerException& e)
     	{
 		LERROR(L"ROM Manager Error - ");
@@ -118,13 +155,27 @@
 		result = UNKNOWN_EXCEPTION;
 		LERROR(L"Unknown Error" << std::endl);
 		}
-	
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+	//Restore Database in case of installation error for SA over SA and PU case
+	if(result != 0)
+	{
+		std::string BackupDb(dbpath);
+		BackupDb.append("_backup");
+		if (FileExists(string2wstring(BackupDb)))
+		{	
+			std::string command = "move " + BackupDb + " " + dbpath;
+			int err = system(command.c_str());
+			if (err != 0)
+				LERROR(L"Failed to Restore src.db ");
+		}
+	}
+#endif
 	if (NULL != logFile)
-		{
+	{
 		bool val = logFile->is_open();
 		logFile->close();
 		delete logFile;
-		}
+	}
 
 	return result;
-	}
+}
--- a/secureswitools/swisistools/source/interpretsis/openssllicense.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsis/openssllicense.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
--- a/secureswitools/swisistools/source/interpretsislib/dbconstants.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/dbconstants.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -63,6 +63,28 @@
 std::wstring DbConstants::CompWildCardFileCount = L"CompWildCardFileCount";
 std::wstring DbConstants::CompSidFileName = L"CompSidFileName";
 
+// file description - Registration File Properties
+std::wstring DbConstants::CompAppFile = L"AppFile";
+std::wstring DbConstants::CompAppUid = L"AppUid";
+std::wstring DbConstants::CompTypeId = L"TypeId";
+std::wstring DbConstants::CompAttributes = L"Attributes";
+std::wstring DbConstants::CompHidden = L"Hidden";
+std::wstring DbConstants::CompEmbeddable = L"Embeddable";
+std::wstring DbConstants::CompNewfile = L"Newfile";
+std::wstring DbConstants::CompLaunch = L"Launch";
+std::wstring DbConstants::CompDefaultScreenNumber = L"DefaultScreenNumber";
+std::wstring DbConstants::CompOpaqueData = L"OpaqueData";
+
+// file description - Localization File Properties
+std::wstring DbConstants::CompShortCaption = L"ShortCaption";
+std::wstring DbConstants::CompCaption = L"Caption";
+std::wstring DbConstants::CompNumberOfIcons = L"NumberOfIcons";
+std::wstring DbConstants::CompLocale = L"Locale";
+std::wstring DbConstants::CompIconFile = L"IconFile";
+std::wstring DbConstants::CompGroupName = L"GroupName";
+std::wstring DbConstants::CompUID = L"Uid";
+std::wstring DbConstants::CompScreenMode = L"ScreenMode";
+
 // inROM
 std::wstring DbConstants::CompInRom = L"CompInRom";
 std::wstring DbConstants::CompIsSigned = L"CompIsSigned";
--- a/secureswitools/swisistools/source/interpretsislib/dbconstants.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/dbconstants.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -74,6 +74,28 @@
 	extern std::wstring	CompWildCardFileCount;
 	extern std::wstring	CompSidFileName;
 
+	// file description - Registration File Properties
+	extern std::wstring	CompAppFile;
+	extern std::wstring	CompAppUid;
+	extern std::wstring CompTypeId;
+	extern std::wstring	CompAttributes;
+	extern std::wstring	CompHidden;
+	extern std::wstring	CompEmbeddable;
+	extern std::wstring	CompNewfile;
+	extern std::wstring	CompLaunch;
+	extern std::wstring	CompDefaultScreenNumber;
+	extern std::wstring	CompOpaqueData;
+
+	// file description - Localization File Properties
+	extern std::wstring	CompShortCaption;
+	extern std::wstring	CompCaption;
+	extern std::wstring	CompNumberOfIcons;
+	extern std::wstring	CompLocale;
+	extern std::wstring	CompIconFile;
+	extern std::wstring	CompGroupName;
+	extern std::wstring	CompUID;
+	extern std::wstring	CompScreenMode;
+	
 	// inROM
 	extern std::wstring	CompInRom;
 	extern std::wstring	CompIsSigned;
@@ -133,4 +155,4 @@
 	static const int KDefaultInstalledLanguage = CSISLanguage::ELangEnglish;
 }	
 
-#endif // DBCONSTANTS_H
\ No newline at end of file
+#endif // DBCONSTANTS_H
--- a/secureswitools/swisistools/source/interpretsislib/dbhelper.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/dbhelper.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -31,6 +31,11 @@
 
 const int DbHelper::Absent = -1;
 
+DbHelper::~DbHelper()
+	{
+	delete iScrDbHandler;
+	}
+
 DbHelper::DbHelper( const std::wstring& aDrivePath, bool aIsSystemDrive)
 	{
 	std::string dllName = "sqlite3.dll";
@@ -69,6 +74,19 @@
 	return (uid == aUid);
 	}
 
+TBool DbHelper::IsAppUidInstalled(TUint32 aAppUid) const
+	{
+	std::string selectUid("SELECT AppFile FROM AppRegistrationInfo WHERE AppUid=?;");
+	std::auto_ptr<CStatement> stmtUid(iScrDbHandler->PrepareStatement(selectUid));
+		
+	stmtUid->BindInt(1, aAppUid);
+	
+	if(!stmtUid->ProcessNextRow())
+		return false;
+		
+	return true;
+	}
+
 TInt32 DbHelper::GetComponentId(TInt32 aUid, const std::wstring aPackageName, const std::wstring aVendorName ) const
 	{
 	std::string selectUid("SELECT ComponentId from ComponentProperties where Name='CompUid' and IntValue=? and ComponentId IN (SELECT ComponentId FROM \
@@ -250,6 +268,91 @@
 
 void DbHelper::RemoveEntry( TInt32 aComponentId ) const
 	{
+
+	std::vector<TInt32> appUidList = GetAppRegistrationInfoAppUid(aComponentId);
+	std::vector<TInt32> ::iterator appUidIter;
+	for( appUidIter = appUidList.begin(); appUidIter != appUidList.end() ; ++appUidIter )
+	{
+		// delete FileOwnershipInfo
+		std::string delFileOwnerInfo("DELETE FROM FileOwnershipInfo WHERE AppUid=?;");
+		std::auto_ptr<CStatement> stmtdelFileOwnerInfo(iScrDbHandler->PrepareStatement(delFileOwnerInfo));
+		stmtdelFileOwnerInfo->BindInt(1, *appUidIter);
+		stmtdelFileOwnerInfo->ExecuteStatement();
+
+		// delete AppProperties
+		std::string delAppProperties("DELETE FROM AppProperties WHERE AppUid=?;");
+		std::auto_ptr<CStatement> stmtAppProperties(iScrDbHandler->PrepareStatement(delAppProperties));
+		stmtAppProperties->BindInt(1, *appUidIter);
+		stmtAppProperties->ExecuteStatement();
+
+		std::vector<TInt32> serviceIdList = GetServiceInfoServiceID(*appUidIter);
+		
+		std::vector<TInt32> ::iterator serviceIdIter;
+		for( serviceIdIter = serviceIdList.begin(); serviceIdIter != serviceIdList.end() ; ++serviceIdIter )
+		{
+			// delete DataType
+			std::string delDataType("DELETE FROM DataType WHERE ServiceId=?;");
+			std::auto_ptr<CStatement> stmtDataType(iScrDbHandler->PrepareStatement(delDataType));
+			stmtDataType->BindInt(1, *serviceIdIter);
+			stmtDataType->ExecuteStatement();
+		}
+
+		// delete ServiceInfo
+		std::string delServiceInfo("DELETE FROM ServiceInfo WHERE AppUid=?;");
+		std::auto_ptr<CStatement> stmtServiceInfo(iScrDbHandler->PrepareStatement(delServiceInfo));
+		stmtServiceInfo->BindInt(1, *appUidIter);
+		stmtServiceInfo->ExecuteStatement();
+
+		std::vector<TInt32> localAppInfoIdList = GetLocalAppInfoID(*appUidIter);
+		
+		std::vector<TInt32> ::iterator localAppInfoIdIter;
+		for( localAppInfoIdIter = localAppInfoIdList.begin(); localAppInfoIdIter != localAppInfoIdList.end() ; ++localAppInfoIdIter )
+		{
+			std::vector<TInt32> viewDataCaptionIdList = GetViewDataCaptionAndIconID(*localAppInfoIdIter);
+			
+			std::vector<TInt32> ::iterator viewDataCaptionIdIter;
+			for( viewDataCaptionIdIter = viewDataCaptionIdList.begin(); viewDataCaptionIdIter != viewDataCaptionIdList.end() ; ++viewDataCaptionIdIter )
+			{
+				// delete CaptionAndIconInfo
+				std::string delCaptionInfo("DELETE FROM CaptionAndIconInfo WHERE CaptionAndIconId=?;");
+				std::auto_ptr<CStatement> stmtCaptionInfo(iScrDbHandler->PrepareStatement(delCaptionInfo));
+				stmtCaptionInfo->BindInt(1, *viewDataCaptionIdIter);
+				stmtCaptionInfo->ExecuteStatement();
+			}
+
+			// delete ViewData
+			std::string delViewData("DELETE FROM ViewData WHERE LocalAppInfoId=?;");
+			std::auto_ptr<CStatement> stmtViewData(iScrDbHandler->PrepareStatement(delViewData));
+			stmtViewData->BindInt(1, *localAppInfoIdIter);
+			stmtViewData->ExecuteStatement();
+		}
+
+		std::vector<TInt32> LocalCaptionIdList = GetLocalCaptionAndIconID(*appUidIter);
+		std::vector<TInt32> ::iterator LocalCaptionIdIter;
+		for( LocalCaptionIdIter = LocalCaptionIdList.begin(); LocalCaptionIdIter != LocalCaptionIdList.end() ; ++LocalCaptionIdIter )
+		{
+			// delete CaptionAndIconInfo
+			std::string delCaptionInfo("DELETE FROM CaptionAndIconInfo WHERE CaptionAndIconId=?;");
+			std::auto_ptr<CStatement> stmtCaptionInfo(iScrDbHandler->PrepareStatement(delCaptionInfo));
+			stmtCaptionInfo->BindInt(1, *LocalCaptionIdIter);
+			stmtCaptionInfo->ExecuteStatement();
+		}
+
+		// delete LocalizableAppInfo
+		std::string delLocalizableAppInfo("DELETE FROM LocalizableAppInfo WHERE AppUid=?;");
+		std::auto_ptr<CStatement> stmtLocalizableAppInfo(iScrDbHandler->PrepareStatement(delLocalizableAppInfo));
+		stmtLocalizableAppInfo->BindInt(1, *appUidIter);
+		stmtLocalizableAppInfo->ExecuteStatement();
+
+	}
+
+	// delete AppRegistrationInfo
+	std::string delAppRegistrationInfo("DELETE FROM AppRegistrationInfo WHERE ComponentId=?;");
+	std::auto_ptr<CStatement> stmtAppRegistrationInfo(iScrDbHandler->PrepareStatement(delAppRegistrationInfo));
+	stmtAppRegistrationInfo->BindInt(1, aComponentId);
+	stmtAppRegistrationInfo->ExecuteStatement();
+
+	
 	// delete component properties
 	std::string delCompProps("DELETE FROM ComponentProperties WHERE ComponentId=?;");
 	std::auto_ptr<CStatement> stmtDelCompProps(iScrDbHandler->PrepareStatement(delCompProps));
@@ -844,6 +947,85 @@
 	return stmtCompProperty->IntColumn(0);
 	}
 
+std::vector<TInt32> DbHelper::GetServiceInfoServiceID(TInt32 aAppUid) const
+{
+	std::vector<TInt32> serviceIdList;
+	std::string selectServiceId("SELECT ServiceId FROM ServiceInfo WHERE AppUid=?;");
+	std::auto_ptr<CStatement> stmtServiceId(iScrDbHandler->PrepareStatement(selectServiceId));
+	
+	stmtServiceId->BindInt(1, aAppUid);
+	while(stmtServiceId->ProcessNextRow())
+	{
+		serviceIdList.push_back(stmtServiceId->IntColumn(0));
+	}
+	
+	return serviceIdList;
+}
+
+
+std::vector<TInt32> DbHelper::GetLocalAppInfoID(TInt32 aAppUid) const
+{
+	std::vector<TInt32> localAppInfoIdList;
+	std::string selectLocalAppInfoId("SELECT LocalAppInfoId FROM LocalizableAppInfo WHERE AppUid=?;");
+	std::auto_ptr<CStatement> stmtLocalAppInfoId(iScrDbHandler->PrepareStatement(selectLocalAppInfoId));
+	
+	stmtLocalAppInfoId->BindInt(1, aAppUid);
+	while(stmtLocalAppInfoId->ProcessNextRow())
+	{
+		localAppInfoIdList.push_back(stmtLocalAppInfoId->IntColumn(0));
+	}
+	
+	return localAppInfoIdList;
+}
+
+
+std::vector<TInt32> DbHelper::GetLocalCaptionAndIconID(TInt32 aAppUid) const
+{
+	std::vector<TInt32> localCaptionAndIconIdList;
+	std::string selectLocalCaptionAndIconId("SELECT CaptionAndIconId FROM LocalizableAppInfo WHERE AppUid=?;");
+	std::auto_ptr<CStatement> stmtLocalCaptionAndIconId(iScrDbHandler->PrepareStatement(selectLocalCaptionAndIconId));
+	
+	stmtLocalCaptionAndIconId->BindInt(1, aAppUid);
+	while(stmtLocalCaptionAndIconId->ProcessNextRow())
+	{
+		localCaptionAndIconIdList.push_back(stmtLocalCaptionAndIconId->IntColumn(0));
+	}
+	
+	return localCaptionAndIconIdList;
+}
+
+
+std::vector<TInt32> DbHelper::GetViewDataCaptionAndIconID(TInt32 aLocalAppInfoID) const
+{
+	std::vector<TInt32> viewCaptionIdList;
+	std::string selectViewCaptionId("SELECT CaptionAndIconId FROM ViewData WHERE LocalAppInfoId=?;");
+	std::auto_ptr<CStatement> stmtViewCaptionId(iScrDbHandler->PrepareStatement(selectViewCaptionId));
+	
+	stmtViewCaptionId->BindInt(1, aLocalAppInfoID);
+	while(stmtViewCaptionId->ProcessNextRow())
+	{
+		viewCaptionIdList.push_back(stmtViewCaptionId->IntColumn(0));
+	}
+	
+	return viewCaptionIdList;
+}
+
+
+std::vector<TInt32> DbHelper::GetAppRegistrationInfoAppUid(TInt32 aComponentId) const
+{
+	std::vector<TInt32> appUidList;
+	std::string selectAppUid("SELECT AppUid FROM AppRegistrationInfo WHERE ComponentId=?;");
+	std::auto_ptr<CStatement> stmtAppUid(iScrDbHandler->PrepareStatement(selectAppUid));
+
+	stmtAppUid->BindInt(1, aComponentId);
+	while(stmtAppUid->ProcessNextRow())
+	{
+		appUidList.push_back(stmtAppUid->IntColumn(0));
+	}
+
+	return appUidList;
+}
+
 TInt32 DbHelper::GetComponentPropertyIntFormattedValue(TInt32 aComponentId, std::wstring aComponentPropertyName, TInt32 aIntFormatter) const
 	{
 	TInt32 propertyValue = 0;
--- a/secureswitools/swisistools/source/interpretsislib/dbhelper.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/dbhelper.h	Fri Apr 16 15:05:20 2010 +0300
@@ -48,7 +48,9 @@
 	{
 	public:
 		DbHelper( const std::wstring& aDrivePath, bool aIsSystemDrive);
+		~DbHelper();
 		TBool IsInstalled(TInt32 aUid) const;
+		TBool IsAppUidInstalled(TUint32 aAppUid) const;
 		bool InternalizeIfExists(SisRegistryObject& aSisRegistryObject, const TUint32 aUid ) const;
 		
 		bool GetIsRemovable( TInt32 aComponentId ) const;
@@ -73,6 +75,11 @@
 		TInt GetIndex( TUint32 aPackageUid) const;
 
 	private:
+		std::vector<TInt32> GetAppRegistrationInfoAppUid(TInt32 aComponentId) const;
+		std::vector<TInt32> GetServiceInfoServiceID(TInt32 aAppUid) const;
+		std::vector<TInt32> GetLocalAppInfoID(TInt32 aAppUid) const;
+		std::vector<TInt32> GetLocalCaptionAndIconID(TInt32 aAppUid) const;
+		std::vector<TInt32> GetViewDataCaptionAndIconID(TInt32 aLocalAppInfoID) const;
 		TInt32 GetComponentPropertyIntValue( TInt32 aComponentId, std::wstring aComponentPropertyName, TInt32 aDefaultValue = DbHelper::Absent ) const;
 		TInt32 GetComponentPropertyIntFormattedValue(TInt32 aComponentId, std::wstring aComponentPropertyName, TInt32 aIntFormatter) const;
 		std::wstring GetComponentPropertyStrValue(TInt32 aComponentId, std::wstring aComponentPropertyName, TInt32 aIntFormatter) const;
--- a/secureswitools/swisistools/source/interpretsislib/errors.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/errors.h	Fri Apr 16 15:05:20 2010 +0300
@@ -62,7 +62,10 @@
 	PACKAGE_NOT_FOUND = -22,
 	ENV_NOT_SPECIFIED = -23,
 	DB_EXCEPTION = -24,
-	
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	RSC_PARSING_ERROR = -25,
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+
 	// errors related to database registration
 	GLOBALID_CREATION_ERROR = -40,
 	DATABASE_ENTRY_MISSING = -41,
--- a/secureswitools/swisistools/source/interpretsislib/filedescription.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/filedescription.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -28,7 +28,27 @@
 FileDescription::~FileDescription ()
 	{
 	}
+	
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+FileDescription::FileDescription(const CSISFileDescription& aFile, TInt aSid, const TInt aTargetDrive, const std::wstring& aFileName, const std::wstring& aLocalName)
+	: iTarget(aFileName),
+	iLocalFile(aLocalName),
+	iMimeType(aFile.MimeType().GetString()),
+	iOperation(aFile.Operation()),
+	iOperationOptions(aFile.OperationOptions()),
+	iUncompressedLength(aFile.UncompressedLength()),
+	iIndex(aFile.FileIndex()),
+	iSid(aSid)
+{
+	const unsigned char* data = aFile.Hash().Blob().Data();
+	TUint32 len = aFile.Hash().Blob().Size();
 
+	std::string hashData((char*)data, len);
+
+	iHash.SetData(hashData);
+	iHash.SetHashId(HashContainer::EHashSHA);
+}
+#else
 FileDescription::FileDescription(const CSISFileDescription& aFile, TInt aSid, const TInt aTargetDrive, const std::wstring& aFileName)
 	: iTarget(aFileName),
 	iMimeType(aFile.MimeType().GetString()),
@@ -46,6 +66,7 @@
 	iHash.SetData(hashData);
 	iHash.SetHashId(HashContainer::EHashSHA);
 }
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 void FileDescription::Internalize(Deserialiser& des)
 	{
--- a/secureswitools/swisistools/source/interpretsislib/filedescription.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/filedescription.h	Fri Apr 16 15:05:20 2010 +0300
@@ -43,7 +43,12 @@
 	Constructor
 	*/
 	FileDescription () {};
+	#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	FileDescription (const CSISFileDescription& aFile, TInt aSid, const TInt aTargetDrive, const std::wstring& aFileName);
+	#else
+	FileDescription (const CSISFileDescription& aFile, TInt aSid, 
+						const TInt aTargetDrive, const std::wstring& aFileName, const std::wstring& aLocalName);
+	#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 	virtual ~FileDescription ();
 
@@ -98,8 +103,21 @@
 	void SetTarget(const std::wstring& aTarget)
 	{ iTarget = aTarget; }
 
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	const std::wstring& GetLocalFile() const
+	{ return iLocalFile; }
+
+	void SetLocalFile(const std::wstring& aLocalFile)
+	{ iLocalFile = aLocalFile; }
+	#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
 private:
 	std::wstring  iTarget;
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	// Full file name to the PC location
+	std::wstring iLocalFile;
+	#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	
 	std::wstring  iMimeType;
 	TInt        iOperation;
 	TInt        iOperationOptions;
--- a/secureswitools/swisistools/source/interpretsislib/installer.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/installer.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -21,7 +21,10 @@
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 #include "dbhelper.h" 
-
+#include "dirparse.h"
+#ifndef __TOOLS2_LINUX__
+#include <windows.h>
+#endif 
 #endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 #include <exception>
 #include <sstream>
@@ -283,6 +286,11 @@
 	InstallableFiles installable;
 	GetInstallableFiles(file, installable, *iExpressionEvaluator, aInstallSISFile.iTargetDrive);
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	TBool iBackupFlag = false;
+	Backup(file, installable, iBackupFlag);
+#endif
+
 	// Uninstall the same package (if found) prior to any installation
 	UninstallPkg(file);
 
@@ -290,8 +298,37 @@
 
 	InstallFiles(installable, iParamList.SystemDriveLetter());
 
+#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	UpdateRegistry(file, installable, aInstallSISFile, aInstallSISFile.iSUFlag);
-	
+#else
+	try {
+
+		UpdateRegistry(file, installable, aInstallSISFile, aInstallSISFile.iSUFlag);
+	}
+	catch  (...)
+	{//Update Registry Failed. UnInstall the files.
+		InstallableFiles::const_iterator filedesIter; 
+		std::wstring itargetLocalFile;
+
+		for(filedesIter = installable.begin() ; filedesIter != installable.end(); ++filedesIter)
+		{
+		    itargetLocalFile = (*filedesIter)->GetLocalTarget();
+			
+			if (FileExists(itargetLocalFile))
+			{
+				RemoveFile(itargetLocalFile);
+				RemoveHashForFile(itargetLocalFile, iParamList.SystemDriveLetter(), iParamList.SystemDrivePath());
+			}
+		}
+		Restore(file, installable, iBackupFlag);
+		FreeInstallableFiles(installable);
+		return RSC_PARSING_ERROR;
+	}
+
+	if(iBackupFlag)
+		RemoveBackup(file, installable);
+#endif
+
 	if (aInstallSISFile.iGenerateStub)
 	{
 		CreateStubSisFile(aInstallSISFile, file);
@@ -419,6 +456,145 @@
 	iRegistry.GenerateStubRegistry();
 }
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+// Backup all installed files for this Uid's packages and all the SisRegistry Entries
+void Installer::Backup(const SisFile& aFile, InstallableFiles& aInstallable, TBool& aBackupFlag)
+{
+	TUint32 uid = aFile.GetPackageUid();
+	TUint32 installType = aFile.GetInstallType();
+
+	// Check to see the SA is installed, else backup is not required.
+	if (iRegistry.IsInstalled(uid) && ((installType == CSISInfo::EInstInstallation) || (installType == CSISInfo::EInstPartialUpgrade)))
+	{
+		aBackupFlag = true;
+		int err = 0;
+		LINFO(L"Backup package \"" << aFile.GetPackageName() << L"\" prior to re-installation");
+
+		// Backup all installed files for this Uid's packages and all the SisRegistry Entries
+		iRegistry.BackupCtl(uid);
+
+		//Backup SCR DB
+		std::string DbPath = iRegistry.GetDbPath();
+		if (FileExists(string2wstring(DbPath)))
+		{	
+			std::string BackupDb(DbPath);
+			BackupDb.append("_backup");
+
+		 	err=FileCopyA(DbPath.c_str(),BackupDb.c_str(),0);
+			if (err == 0)
+				LERROR(L"Failed to Backup Database scr.db ");
+		}
+
+		// Backup all installed files for this Uid's packages and all the SisRegistry Entries
+		InstallableFiles::const_iterator filedesIter; 
+		//Backup files
+		for(filedesIter = aInstallable.begin() ; filedesIter != aInstallable.end(); ++filedesIter)
+		{
+			std::wstring itargetLocalFile = (*filedesIter)->GetLocalTarget();
+			if (FileExists(itargetLocalFile))
+			{
+				std::wstring itargetBackupFile = (*filedesIter)->GetLocalTarget();
+				itargetBackupFile.append(L"_backup");
+				int pos =0;
+				if((pos = itargetBackupFile.find(L"\\sys\\bin\\", 0)) != std::wstring::npos)
+				{
+					BackupHashForFile(itargetLocalFile, iParamList.SystemDriveLetter(), iParamList.SystemDrivePath());
+				}
+
+				std::string iLocalFile = wstring2string(itargetLocalFile);
+				std::string iBackupFile = wstring2string(itargetBackupFile);
+
+				err=FileCopyA(iLocalFile.c_str(),iBackupFile.c_str(),0);
+				if (err == 0)
+					LERROR(L"Failed to Backup installable file ");
+			}
+		}
+	}
+}
+
+// Remove Backup of all installed files for this Uid's packages and all the SisRegistry Entries
+void Installer::RemoveBackup(const SisFile& aFile, InstallableFiles& aInstallable)
+{
+	TUint32 uid = aFile.GetPackageUid();
+	TUint32 installType = aFile.GetInstallType();
+
+	// Check to see the SA is installed, else backup is not required.
+	if (iRegistry.IsInstalled(uid) && ((installType == CSISInfo::EInstInstallation) || (installType == CSISInfo::EInstPartialUpgrade)))
+	{
+		LINFO(L"Remove Backup of package \"" << aFile.GetPackageName() << L"\" after re-installation success");
+		// Remove all installed files for this Uid's packages and all the SisRegistry Entries
+		iRegistry.RemoveCtlBackup(uid);
+
+		//Remove Backup SCR DB
+		std::string DbPath = iRegistry.GetDbPath();
+		std::string BackupDb(DbPath);
+		BackupDb.append("_backup");
+		std::wstring DbBackup = string2wstring(BackupDb);
+
+		if (FileExists(DbBackup))
+			RemoveFile(DbBackup);
+	
+		// Remove all installed files for this Uid's packages and all the SisRegistry Entries
+		InstallableFiles::const_iterator filedesIter; 
+		std::wstring itargetLocalFile;
+		std::wstring itargetBackupFile;
+
+		for(filedesIter = aInstallable.begin() ; filedesIter != aInstallable.end(); ++filedesIter)
+		{
+		    itargetLocalFile = (*filedesIter)->GetLocalTarget();
+			itargetBackupFile = (*filedesIter)->GetLocalTarget();
+			itargetBackupFile.append(L"_backup");
+			
+			if (FileExists(itargetBackupFile))
+			{
+				RemoveFile(itargetBackupFile);
+				RemoveHashForFile(itargetBackupFile, iParamList.SystemDriveLetter(), iParamList.SystemDrivePath());
+			}
+		}
+	}
+}
+
+// Restore all installed files for this Uid's packages and all the SisRegistry Entries
+void Installer::Restore(const SisFile& aFile, InstallableFiles& aInstallable, TBool& aBackupFlag)
+{
+	TUint32 uid = aFile.GetPackageUid();
+	TUint32 installType = aFile.GetInstallType();
+
+	// Check to see the SA is installed, else backup is not required.
+	if((installType == CSISInfo::EInstInstallation) || (installType == CSISInfo::EInstPartialUpgrade))
+	{
+		LINFO(L"Restoring Installed Package ");
+
+		// Restore all .ctl file for this Uid's packages and all the SisRegistry Entries
+		iRegistry.RestoreCtl(uid, aBackupFlag);
+
+		// Restore all installed files for this Uid's packages and all the SisRegistry Entries
+		InstallableFiles::const_iterator filedesIter; 
+		for(filedesIter = aInstallable.begin() ; filedesIter != aInstallable.end(); ++filedesIter)
+		{
+			std::wstring itargetLocalFile = (*filedesIter)->GetLocalTarget();
+			std::wstring itargetBackupFile = (*filedesIter)->GetLocalTarget();
+			itargetBackupFile.append(L"_backup");
+			if (FileExists(itargetBackupFile))
+			{
+				int pos =0;
+				if((pos = itargetBackupFile.find(L"\\sys\\bin\\", 0)) != std::wstring::npos)
+				{
+					RestoreHashForFile(itargetLocalFile, iParamList.SystemDriveLetter(), iParamList.SystemDrivePath());
+				}
+
+				std::string iLocalFile = wstring2string(itargetLocalFile);
+				std::string iBackupFile = wstring2string(itargetBackupFile);
+				
+				int err = FileMoveA(iBackupFile.c_str(),iLocalFile.c_str());
+
+				if (err == 0)
+					LERROR(L"Failed to Restore file ");
+			}
+		}
+	}
+}
+#endif
 
 struct CheckDependencyMet
 {
--- a/secureswitools/swisistools/source/interpretsislib/installer.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/installer.h	Fri Apr 16 15:05:20 2010 +0300
@@ -68,7 +68,11 @@
 
 	void UninstallPkg(const SisFile& aSis); // Uninstall the same package (if found)
 											// prior to installation
-
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	void Backup(const SisFile& aFile, InstallableFiles& aInstallable, TBool& aBackupFlag);
+	void RemoveBackup(const SisFile& aFile, InstallableFiles& aInstallable);
+	void Restore(const SisFile& aFile, InstallableFiles& aInstallable, TBool& aBackupFlag);
+#endif
 	bool DependenciesOk(const SisFile& aFile);			// Check to see if the sis file
 														// meets it's dependencies
 
@@ -92,7 +96,7 @@
 	const SisRegistryObject& AddRegistry(const SisFile& aFile,	// Create the registry entries for
 		const InstallableFiles& aInstalled, const bool aSUFlag);	// the installed sis file
 
-	void RemoveHashForFile(const std::wstring& aFile);
+	//void RemoveHashForFile(const std::wstring& aFile);
 
 	bool CheckDependency(const CSISDependency* aDep);	
 
--- a/secureswitools/swisistools/source/interpretsislib/interpretsis.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/interpretsis.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -114,4 +114,8 @@
 		}
 	}
 
+const SisRegistry* CInterpretSIS::GetSisRegistry() const
+	{
+	return iSisRegistry;
+	}
 // End of File
--- a/secureswitools/swisistools/source/interpretsislib/interpretsis.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/interpretsis.h	Fri Apr 16 15:05:20 2010 +0300
@@ -62,6 +62,8 @@
 	 * Un-install installed applications specified while creating this class.
 	 */
 	void Uninstall();
+
+	const SisRegistry* GetSisRegistry() const;	
 	
 private:
 	void ConstructL();
@@ -74,4 +76,4 @@
 	Installer*		iInstaller;
 	};
 
-#endif //__INTERPRETSIS_H__
\ No newline at end of file
+#endif //__INTERPRETSIS_H__
--- a/secureswitools/swisistools/source/interpretsislib/parameterlist.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/parameterlist.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -40,6 +40,17 @@
 	{
 	}
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+void CParameterList::SetResourceFilePath(const std::string& aFilePath)
+	{
+	iResourceFilePath = StringUtils::FixPathDelimiters(aFilePath);
+	if (!IsDirectory(iResourceFilePath))
+		{
+		throw EParamInvalidDir;
+		}
+	iFlags |= EFlagsResourceFilePathSet;
+	}
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
 void CParameterList::SetSystemDrive(const std::string& aFilePath)
 	{
--- a/secureswitools/swisistools/source/interpretsislib/parameterlist.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/parameterlist.h	Fri Apr 16 15:05:20 2010 +0300
@@ -116,7 +116,11 @@
         EFlagsSysDriveSet           = 0x0010,
         EFlagsStubDirectorySet      = 0x0020,
         EFlagsConfigIniSet          = 0x0040,
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+		EFlagsResourceFilePathSet   = 0x0100,
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 		EFlagsDisableZDriveChecksSet= 0x0080
+
         };
 
 public: // Constructors & destructor
@@ -135,6 +139,13 @@
 	 * @param aError type of error.
 	 */
 	static void DisplayError(TParamException aError);
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	/**
+	 * Set the path which represent the system drive.
+	 * @param File-system path which represents system drive
+	 */
+	void SetResourceFilePath(const std::string& aFilePath);
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	/**
 	 * Set the path which represent the system drive.
 	 * @param File-system path which represents system drive
@@ -239,6 +250,12 @@
 	 * Get the system drive path.
 	 */
 	inline const std::wstring&	SystemDrivePath() const;
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	/**
+	 * Get the Resource File path.
+	 */
+	inline const std::wstring&	ResourceFilePath() const;
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	/**
 	 * Gets the ROM drive (Z) path in the file-system.
 	 */
@@ -291,7 +308,10 @@
 	SISFileList				iFileNames;
     OptionList				iRomLogFiles;
 	OptionList				iPkgUIDs;
-	std::wstring			iSystemDrivePath; 
+	std::wstring			iSystemDrivePath;
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	std::wstring			iResourceFilePath;
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	std::wstring			iZDrive; 
     std::wstring			iConfigFile;
     std::wstring			iSisStubPath;
@@ -327,6 +347,13 @@
 	return iSystemDrivePath;
 	}
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+inline const std::wstring& CParameterList::ResourceFilePath() const
+	{
+	return iResourceFilePath;
+	}
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
 inline const std::wstring& CParameterList::RomDrivePath() const
 	{
 	return iZDrive;
--- a/secureswitools/swisistools/source/interpretsislib/sisregistry.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/sisregistry.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -31,8 +31,10 @@
 #include <iostream>
 #include <stdexcept>
 #include <iostream>
+#include "dirparse.h"
+#include "parse.h"
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 
-#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 // constants 
 #define IGNORE_FORMATTING -1
 #define ENABLE 1
@@ -1447,32 +1449,29 @@
 
 void SisRegistry::UpdateInstallationInformation(XmlDetails::TScrPreProvisionDetail aScrPreProvisionDetail)
 	{
-	CXmlGenerator xmlgenerator;
+	CXmlGenerator xmlGenerator;
 	char* tmpFileName = tmpnam(NULL);
 	std::wstring filename(string2wstring(tmpFileName));
-	
-	xmlgenerator.WritePreProvisionDetails(filename , aScrPreProvisionDetail);						
+
+	int isRomApplication = 0;
+	xmlGenerator.WritePreProvisionDetails(filename , aScrPreProvisionDetail, isRomApplication);
 						
 	std::string executable = "scrtool.exe";
 	std::string command;
 	command = executable + " -d " + GetDbPath() + " -p " + tmpFileName;
-	
+
 	int error = system(command.c_str());
-	
+
+	int err = remove(tmpFileName);
+	if(err != 0)
+		LERROR(L"Temporary file removal failed.");
+
 	if(error != 0)
-		{
+	{
 		std::string err = "Scrtool failed to upload the database registry entry.";
 		LERROR(L"Scrtool failed to upload the database registry entry.");
 		throw InterpretSisError(err, DATABASE_UPDATE_FAILED);
-		}
-		
-	error = remove(tmpFileName);
-
-	if(error != 0)
-		{
-		LERROR(L"Temporary file removal failed.");
-		}
-	
+	}
 	}
 
 std::string SisRegistry::GetDbPath()
@@ -1573,7 +1572,11 @@
 	    {
 		if (*currFile != L"." && *currFile != L"..")
 		    {
-			RemoveFile(path + *currFile);
+			#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+				int pos = 0;
+				if((pos = currFile->find(L".ctl_backup", 0)) == std::wstring::npos)
+			#endif
+					RemoveFile(path + *currFile);
 		    }
 
 		++currFile;
@@ -1604,7 +1607,11 @@
 				{
 				if (*currFile != L"." && *currFile != L"..")
 					{
-					RemoveFile(path + *currFile);
+					#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+						int pos = 0;
+						if((pos = currFile->find(L".ctl_backup", 0)) == std::wstring::npos)
+					#endif
+							RemoveFile(path + *currFile);
 					}
 				++currFile;
 				}
@@ -1620,6 +1627,91 @@
 		}
 	}
 
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+void SisRegistry::BackupCtl(TUint32 aUid)
+{
+	std::list<std::wstring> regDirFiles;
+	std::wstring path = GetRegistryDir( iParamList.SystemDrivePath(), aUid );
+    GetDirContents(path, regDirFiles);
+	std::list<std::wstring>::iterator currFile = regDirFiles.begin();
+
+	std::wstring  path1 = FixPathDelimiterstap(path);
+	// Backup all .ctl files in the system drive for this package
+	while (currFile != regDirFiles.end())
+	{
+		if (*currFile != L"." && *currFile != L"..")
+	    {
+			std::string ifile = wstring2string(path1 +*currFile);
+			std::string ibackupfile(ifile);
+			ibackupfile.append("_backup");
+
+			int err=FileCopyA(ifile.c_str(),ibackupfile.c_str(),0);
+			if (err == 0)
+				LERROR(L"Failed to Backup .ctl ");
+		}
+		++currFile;
+    }
+}
+
+void SisRegistry::RestoreCtl(TUint32 aUid, TBool& aBackupFlag)
+{
+	std::list<std::wstring> regDirFiles;
+	std::wstring path = GetRegistryDir( iParamList.SystemDrivePath(), aUid );
+    GetDirContents(path, regDirFiles);
+	std::list<std::wstring>::iterator currFile = regDirFiles.begin();
+
+	// Restore all .ctl files in the system drive for this package
+	while (currFile != regDirFiles.end())
+	{
+		if (*currFile != L"." && *currFile != L"..")
+	    {
+			if(aBackupFlag)
+			{
+				int pos =0;
+				if((pos = currFile->find(L".ctl_backup", 0)) == std::wstring::npos)
+				{
+					std::string ifile = wstring2string(path +*currFile);
+					std::string ibackupfile(ifile);
+					ibackupfile.append("_backup");
+
+					RemoveFile(path + *currFile);
+				 	int err = FileMoveA(ibackupfile.c_str(),ifile.c_str());
+					if (err == 0)
+						LERROR(L"Failed to Restore .ctl ");
+				}
+			}
+			else
+			{
+				RemoveFile(path + *currFile);
+			}
+		}
+		++currFile;
+    }
+}
+
+void SisRegistry::RemoveCtlBackup(TUint32 aUid)
+{
+	std::list<std::wstring> regDirFiles;
+	std::wstring path = GetRegistryDir( iParamList.SystemDrivePath(), aUid );
+    GetDirContents(path, regDirFiles);
+	std::list<std::wstring>::iterator currFile = regDirFiles.begin();
+	
+	// Remove all .ctl backup files in the system drive for this package
+	while (currFile != regDirFiles.end())
+	{
+		if (*currFile != L"." && *currFile != L"..")
+	    {
+			std::wstring ifile(path +*currFile);
+			ifile.append(L"_backup");
+			
+			if (FileExists(ifile))
+				RemoveFile(ifile);
+		}
+		++currFile;
+    }
+}
+#endif
+
 TUint32 SisRegistry::GetUid(TUint32 aSid) const
 	{
 	return iDbHelper->GetUid(aSid);
@@ -1655,6 +1747,9 @@
 	AddEmbeddedPackages(component, aSisRegistryObject.GetEmbeddedPackages());
 	AddProperties(component, aSisRegistryObject.GetProperties());
 	AddFileDescription(component, aSisRegistryObject.GetFileDescriptions());
+	#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	AddApplicationRegistrationInfoL(component, aSisRegistryObject.GetFileDescriptions(), aSisRegistryObject.GetInRom());
+	#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	
 	// inROM
 	if(DbConstants::KDefaultIsInRom != aSisRegistryObject.GetInRom())
@@ -1959,6 +2054,7 @@
 		// add the location in the component files table
 		XmlDetails::TScrPreProvisionDetail::TComponentFile componentFile;
 		componentFile.iLocation = (*filedesIter)->GetTarget();
+
 		AddFileDescriptionAsFileProperty(componentFile, *filedesIter);
 		aComponent.iComponentFiles.push_back(componentFile);
 		}
@@ -1967,6 +2063,77 @@
 		AddComponentProperty(aComponent, DbConstants::CompWildCardFileCount, wildcardFileCount, IGNORE_FORMATTING);	
 	}
 
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+void SisRegistry::AddApplicationRegistrationInfoL(XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, const std::vector<FileDescription*>& aFileDescription, int aInRom )
+{
+	std::vector<FileDescription*>::const_iterator filedesIter;
+	std::wstring iLocalFile;
+	std::string RegistrationFileName;
+	
+	//Find Registration File from list of filelist
+	for(filedesIter = aFileDescription.begin() ; filedesIter != aFileDescription.end(); ++filedesIter)
+	{
+		// if it has wild card characters then donot process. Continue.
+		if( IsFileWideCard((*filedesIter)->GetLocalFile()) ) 
+		{
+			continue;
+		}
+
+		iLocalFile = (*filedesIter)->GetLocalFile();
+		RegistrationFileName = wstring2string(iLocalFile);
+
+		std::string iRomPath = wstring2string(iParamList.RomDrivePath());
+		if(aInRom)
+		{
+			std::string localpath = FullNameWithoutDrive(RegistrationFileName);
+			RegistrationFileName = iRomPath + localpath;
+		}
+
+		//Return 0 for Registration file else 1
+		TInt err = FindRegistrationResourceFileL(RegistrationFileName);
+
+		if(err)
+			continue;
+
+		size_t found;
+		std::string folder;
+		found=RegistrationFileName.find("private\\10003a3f\\");
+
+		if( found != string::npos ) 
+			folder = RegistrationFileName.substr(0,found); 
+		else
+			folder = RegistrationFileName; 
+
+		CAppInfoReader* appInfoReader = NULL;
+		appInfoReader = CAppInfoReader::NewL(RegistrationFileName, NullUid, folder); 
+		if (!appInfoReader)
+		{
+			std::string errMsg= "Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+		else
+		{
+			TBool readSuccessful=EFalse;
+
+			readSuccessful= appInfoReader->ReadL(aFileDescription, iRomPath, aInRom);
+		
+			if (readSuccessful)
+			{
+				CreateApplicationRegistrationInfoL(aComponent,appInfoReader);
+			}
+			else
+			{
+				delete appInfoReader;
+				std::string errMsg= "Reading Resource File failed.";
+				throw CResourceFileException(errMsg);
+			}
+		}
+		delete appInfoReader;
+	}
+}
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
 void SisRegistry::AddFileDescriptionAsFileProperty	(	XmlDetails::TScrPreProvisionDetail::TComponentFile& aComponentFile, 
 												const FileDescription* aFileDescription
 										)
--- a/secureswitools/swisistools/source/interpretsislib/sisregistry.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/sisregistry.h	Fri Apr 16 15:05:20 2010 +0300
@@ -60,6 +60,11 @@
 	~SisRegistry();
 
 public: // API
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	void BackupCtl(TUint32 aUid);
+	void RestoreCtl(TUint32 aUid, TBool& aBackupFlag);
+	void RemoveCtlBackup(TUint32 aUid);
+#endif
 	TBool IsInstalled(TUint32 aUid) const;
 	const SisRegistryPackage& SidToPackage(TUint32 aSid);
 	void SidToFileName(TUint32 aSid, std::wstring& aFileName);
@@ -109,6 +114,7 @@
 	TUint32 GetUid(TUint32 aSid) const;
 	TUint32 GetUid(const std::wstring& aSidFile) const;
 	bool GetInRom(TUint32 aUid) const;
+	std::string GetDbPath();
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	const DbHelper* GetDbHelper() const;	
 #endif
@@ -180,7 +186,14 @@
 	void AddFileDescription	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
 								const std::vector<FileDescription*>& aFileDescription 
 							);
-	
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	void AddApplicationRegistrationInfoL	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+								const std::vector<FileDescription*>& aFileDescription,
+								int aInRom 
+							);
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK	
+
 	void AddFileDescriptionAsFileProperty	(	XmlDetails::TScrPreProvisionDetail::TComponentFile& aComponentFile, 
 												const FileDescription* aFileDescription
 											);
@@ -260,8 +273,6 @@
 	
 	void GenerateDbRegistryEntry(const SisRegistryObject& aSisRegistryObject, bool aOriginVerified);
 
-	std::string GetDbPath();
-
 	std::wstring GetGlobalId( TUint32 aUid , TInt aInstallType, std::wstring aPackageName);
 
 	void SetOriginVerification(XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, bool aOriginVerified);
--- a/secureswitools/swisistools/source/interpretsislib/sisregistryobject.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/sisregistryobject.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -124,8 +124,12 @@
 {
 	for( InstallableFiles::const_iterator curr = aFiles.begin(); curr != aFiles.end(); ++curr )
 	{	
-		InstallableFile* installableFile= *curr;		
+		InstallableFile* installableFile= *curr;	
+		#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 		FileDescription* f = new FileDescription(*installableFile->FileDescription() , installableFile->Sid(), aTargetDrive, installableFile->GetTarget());
+		#else
+		FileDescription* f = new FileDescription(*installableFile->FileDescription() , installableFile->Sid(), aTargetDrive, installableFile->GetTarget(),installableFile->GetLocalTarget());
+		#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 		iFileDescriptions.push_back(f);
 	}
 
@@ -380,8 +384,11 @@
 					aSids.push_back(aSid);
 				}
 			}
-
+			#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK //Just to ignore compiler
+			FileDescription* aFileDescription = new FileDescription(fileDesc, aSid, L'Z', fileDesc.Target().GetString(), fileDesc.Target().GetString());
+			#else
 			FileDescription* aFileDescription = new FileDescription(fileDesc, aSid, L'Z', fileDesc.Target().GetString());
+			#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 			iFileDescriptions.push_back(aFileDescription);
 		}
 		SetSids(aSids);
@@ -724,7 +731,11 @@
 	{	
 		InstallableFile* installableFile= *curr;
 		TUint32 sid = installableFile->Sid();
+		#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+		FileDescription* f = new FileDescription(*installableFile->FileDescription() , sid, iSelectedDrive, installableFile->GetTarget(),installableFile->GetLocalTarget());
+		#else
 		FileDescription* f = new FileDescription(*installableFile->FileDescription() , sid, iSelectedDrive, installableFile->GetTarget());
+		#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 		iFileDescriptions.push_back(f);
 
 		// If the SID is there already there is no reason to add it again
@@ -745,8 +756,13 @@
 	{	
 		InstallableFile* installableFile= *curr;
 		TUint32 sid = installableFile->Sid();
+		#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 		FileDescription f = FileDescription(*installableFile->FileDescription(), sid,
-											iSelectedDrive, installableFile->GetTarget());
+											iSelectedDrive, installableFile->GetTarget(),installableFile->GetLocalTarget());
+		#else
+		FileDescription f = FileDescription(*installableFile->FileDescription(), sid,
+										iSelectedDrive, installableFile->GetTarget());
+		#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 		
 		FileDescriptions::const_iterator end = iFileDescriptions.end();
 		for (FileDescriptions::iterator curr2 = iFileDescriptions.begin();
--- a/secureswitools/swisistools/source/interpretsislib/xmlgenerator.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/xmlgenerator.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -67,7 +67,10 @@
 	{}
 
 
-void CXmlGenerator::WritePreProvisionDetails(const std::wstring aXmlFileName, const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetail)
+void CXmlGenerator::WritePreProvisionDetails(const std::wstring aXmlFileName, 
+												const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetail,
+												int& aRomApplication
+												)
 	{
 	try 
 		{
@@ -112,7 +115,7 @@
 			DOMElement*  component = domDocument->createElement(L"Component");
 			rootElement->appendChild(component);
 
-			WriteComponent(component,domDocument.get(), *compIter);
+			WriteComponent(component,domDocument.get(), *compIter, aRomApplication);
 			}
 		
 		// do the serialization through DOMWriter::writeNode();
@@ -163,8 +166,19 @@
 	aDomWriter->setEncoding(L"UTF-16");
 	}
 
-void CXmlGenerator::WriteComponent( DOMElement* aRootElement, DOMDocument* aDocument, const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent)
+void CXmlGenerator::WriteComponent( DOMElement* aRootElement, DOMDocument* aDocument, 
+										const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+										int& aRomApplication
+										)
 	{
+
+	if (aRomApplication) 
+	{
+		int isRomApplication = 1;
+		std::wstring isRomApp = Utils::IntegerToWideString(isRomApplication);
+		AddChildElement(aRootElement, aDocument, L"RomApplication", isRomApp.c_str());
+	}
+	
 	std::wstring isRemovable = Utils::IntegerToWideString(aComponent.iComponentDetails.iIsRemovable);
 	AddChildElement(aRootElement, aDocument, L"Removable", isRemovable.c_str() );
 	
@@ -191,6 +205,9 @@
 	WriteComponentFiles(aRootElement, aDocument, aComponent.iComponentFiles);
 
 	WriteComponentDependencies(aRootElement, aDocument, aComponent.iComponentDependency);
+
+	WriteAppRegInfo(aRootElement, aDocument, aComponent.iApplicationRegistrationInfo);
+
 	}
 
 void CXmlGenerator::WriteComponentVersion
@@ -260,6 +277,261 @@
 		}
 	}
 
+
+/**
+ * Writes Class TAppRegistrationInfo Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppRegInfo	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppRegistrationInfo>& aAppRegInfo 
+					)
+{
+	std::vector<AppRegistrationInfo>::const_iterator compFileIter;
+	for( compFileIter = aAppRegInfo.begin() ; compFileIter != aAppRegInfo.end() ; ++compFileIter)
+	{
+		DOMElement* compFileRoot = AddTag(aRootElement, aDocument, L"ApplicationRegistrationInfo");
+
+		WriteAppAttributes(compFileRoot, aDocument, compFileIter->iApplicationAttribute);
+
+		const std::vector<AppOpaqueDataType>& aAppOpaqueDataType = compFileIter->iOpaqueDataType;
+		std::vector<AppOpaqueDataType>::const_iterator fileAppOpaqueDataType;
+
+		for( fileAppOpaqueDataType = aAppOpaqueDataType.begin() ; fileAppOpaqueDataType != aAppOpaqueDataType.end() ; ++fileAppOpaqueDataType)
+		{
+			if(0 == fileAppOpaqueDataType->iServiceUid)
+			{
+				DOMElement* filePropValueRoot = AddTag(compFileRoot, aDocument, L"OpaqueData");
+				AddChildElement(filePropValueRoot,aDocument, L"Data", fileAppOpaqueDataType->iOpaqueData.c_str());
+				std::wstring iLocale = Utils::IntegerToWideString(fileAppOpaqueDataType->iLocale);
+				AddChildElement(filePropValueRoot,aDocument, L"OpaqueLocale", iLocale.c_str());
+			}
+		}
+
+		for(vector<std::wstring>::iterator mimeiter = compFileIter->iFileOwnershipInfo.begin() ; mimeiter != compFileIter->iFileOwnershipInfo.end() ; ++mimeiter )
+		{
+			DOMElement* filePropRoot = AddTag(compFileRoot, aDocument, L"FileOwnershipinfo");
+
+			AddChildElement(filePropRoot,aDocument, L"FileName",  mimeiter->c_str());
+		}
+
+		WriteAppServiceInfo(compFileRoot, aDocument, compFileIter->iApplicationServiceInfo, compFileIter->iOpaqueDataType);
+		WriteAppLocalizableInfo(compFileRoot, aDocument, compFileIter->iApplicationLocalizableInfo);
+	}
+}
+
+/**
+ * Writes Class TAppLocalizableInfo Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppLocalizableInfo	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppLocalizableInfo>& aAppLocalizableInfo
+					)
+{
+	std::vector<AppLocalizableInfo>::const_iterator filePropIter;
+	for( filePropIter = aAppLocalizableInfo.begin() ; filePropIter != aAppLocalizableInfo.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationLocalizableInfo");
+
+		WriteAppLocalizableAttribute(filePropRoot, aDocument, filePropIter->iLocalizableAttribute);
+		WriteAppLocalizableViewData(filePropRoot, aDocument, filePropIter->iViewData);
+	}
+}
+
+/**
+ * Writes Class TAppLocalizableAttribute Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppLocalizableAttribute	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppLocalizableAttribute>& aAppLocalizableAttribute 
+					)
+{
+	std::vector<AppLocalizableAttribute>::const_iterator filePropIter;
+	for( filePropIter = aAppLocalizableAttribute.begin() ; filePropIter != aAppLocalizableAttribute.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"LocalizableAttribute");
+		DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"LocalizableAttribute_Value");
+
+		if(filePropIter->iIsIntValue)
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"LocalizableAttribute_IntValue", filePropIter->iValue.c_str());
+		}
+		else
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"LocalizableAttribute_StrValue", filePropIter->iValue.c_str());
+		}
+		filePropRoot->setAttribute(L"Name", filePropIter->iName.c_str());
+	}
+}
+
+/**
+ * Writes Class TAppViewData Info in XML. 
+ */
+
+ void CXmlGenerator::WriteAppLocalizableViewData 
+					 ( 
+						 DOMElement* aRootElement, DOMDocument* aDocument, 
+						 const std::vector<AppViewData>& aAppViewData 
+					 )
+ {
+	 std::vector<AppViewData>::const_iterator filePropIter;
+	 for( filePropIter = aAppViewData.begin() ; filePropIter != aAppViewData.end() ; ++filePropIter)
+	 {
+		 DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ViewData");
+		 WriteAppLocalizableViewDataAttributes(filePropRoot, aDocument, filePropIter->iViewDataAttributes);
+	 }
+ }
+
+ void CXmlGenerator::WriteAppLocalizableViewDataAttributes 
+					 ( 
+						 DOMElement* aRootElement, DOMDocument* aDocument, 
+						 const std::vector<AppViewDataAttributes>& aAppViewDataAttributes 
+					 )
+ {
+	 std::vector<AppViewDataAttributes>::const_iterator filePropIter;
+	 for( filePropIter = aAppViewDataAttributes.begin() ; filePropIter != aAppViewDataAttributes.end() ; ++filePropIter)
+	 {
+		 DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ViewDataAttribute");
+		 DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"ViewData_Value");
+ 
+		 if(filePropIter->iIsIntValue)
+		 {
+			 AddChildElement(filePropValueRoot, aDocument, L"ViewData_IntValue", filePropIter->iValue.c_str());
+		 }
+		 else
+		 {
+			 AddChildElement(filePropValueRoot, aDocument, L"ViewData_StrValue", filePropIter->iValue.c_str());
+		 }
+		 filePropRoot->setAttribute(L"Name", filePropIter->iName.c_str());
+	 }
+ }
+
+/**
+ * Writes Class TAppServiceInfo Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppServiceInfo	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppServiceInfo>& aAppServiceInfo,
+						const std::vector<AppOpaqueDataType>& aAppOpaqueData 
+					)
+{
+	std::vector<AppServiceInfo>::const_iterator filePropIter;
+	std::vector<AppOpaqueDataType>::const_iterator fileAppPropIter;
+	for( filePropIter = aAppServiceInfo.begin() ; filePropIter != aAppServiceInfo.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationServiceInfo");
+	
+		std::wstring iUid = Utils::IntegerToWideString(filePropIter->iUid);
+		AddChildElement(filePropRoot,aDocument, L"Uid", iUid.c_str());
+
+		for( fileAppPropIter = aAppOpaqueData.begin() ; fileAppPropIter != aAppOpaqueData.end() ; ++fileAppPropIter)
+		{
+			if(filePropIter->iUid == fileAppPropIter->iServiceUid)
+			{
+				if(!fileAppPropIter->iOpaqueData.empty())
+				{
+					DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"ServiceOpaqueData");
+					AddChildElement(filePropValueRoot,aDocument, L"ServiceData", fileAppPropIter->iOpaqueData.c_str());
+					std::wstring iLocale = Utils::IntegerToWideString(fileAppPropIter->iLocale);
+					AddChildElement(filePropValueRoot,aDocument, L"ServiceOpaqueLocale", iLocale.c_str());
+				}
+			}
+		}
+
+		WriteAppDataType(filePropRoot, aDocument, filePropIter->iDataType);
+	}
+}
+
+/**
+ * Writes Class TDataType Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppDataType	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppDataType>& aAppDataType 
+					)
+{
+	std::vector<AppDataType>::const_iterator filePropIter;
+	for( filePropIter = aAppDataType.begin() ; filePropIter != aAppDataType.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationDataType");
+
+		std::wstring iPriority = Utils::IntegerToWideString(filePropIter->iPriority);
+		AddChildElement(filePropRoot,aDocument, L"Priority", iPriority.c_str());
+		AddChildElement(filePropRoot, aDocument, L"Type", filePropIter->iType.c_str());
+	}
+}
+
+/**
+ * Writes Class TApplicationAttribute Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppAttributes	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<ApplicationAttribute>& aAppAttributes 
+					)
+{
+	std::vector<ApplicationAttribute>::const_iterator filePropIter;
+	for( filePropIter = aAppAttributes.begin() ; filePropIter != aAppAttributes.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationAttribute");
+		DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"ApplicationAttribute_Value");
+
+		if(filePropIter->iIsIntValue)
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"ApplicationAttribute_IntValue", filePropIter->iValue.c_str());
+		}
+		else
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"ApplicationAttribute_StrValue", filePropIter->iValue.c_str());
+		}
+		filePropRoot->setAttribute(L"Name", filePropIter->iName.c_str());
+	}
+}
+
+/**
+ * Writes Class TApplicationProperty Info in XML. 
+ */
+void CXmlGenerator::WriteAppProperty	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppProperty>& aAppProperty 
+					)
+{
+	std::vector<AppProperty>::const_iterator filePropIter;
+	for( filePropIter = aAppProperty.begin() ; filePropIter != aAppProperty.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationProperty");
+
+
+		std::wstring iLocale = Utils::IntegerToWideString(filePropIter->iLocale);
+		AddChildElement(filePropRoot,aDocument, L"Locale", iLocale.c_str());
+
+		AddChildElement(filePropRoot,aDocument, L"Name", filePropIter->iName.c_str());
+
+		std::wstring iServiceUid = Utils::IntegerToWideString(filePropIter->iServiceUid);
+		AddChildElement(filePropRoot,aDocument, L"ServiceUid", iServiceUid.c_str());
+
+		std::wstring iIntValue = Utils::IntegerToWideString(filePropIter->iIntValue);
+		AddChildElement(filePropRoot,aDocument, L"IntValue", iIntValue.c_str());
+
+		AddChildElement(filePropRoot, aDocument, L"StrValue", filePropIter->iStrValue.c_str());
+
+		std::wstring iIsStr8Bit = Utils::IntegerToWideString(filePropIter->iIsStr8Bit);
+		AddChildElement(filePropRoot,aDocument, L"IsStr8Bit", iIsStr8Bit.c_str());
+
+	}
+}
+
 void CXmlGenerator::WriteComponentFiles	
 					( 
 						DOMElement* aRootElement, DOMDocument* aDocument, 
--- a/secureswitools/swisistools/source/interpretsislib/xmlgenerator.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/xmlgenerator.h	Fri Apr 16 15:05:20 2010 +0300
@@ -38,7 +38,20 @@
 #include <xercesc/sax/ErrorHandler.hpp>
 #include <xercesc/dom/DOM.hpp>
 
+#include "parameterlist.h"
 
+using namespace std;
+
+#define AppRegistrationInfo XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo
+#define ApplicationAttribute XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute 
+#define AppDataType XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType 
+#define AppServiceInfo XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo 
+#define AppLocalizableInfo XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo
+#define AppLocalizableAttribute XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute 
+#define AppViewData XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData 
+#define AppViewDataAttributes XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes 
+#define AppProperty XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty 
+#define AppOpaqueDataType XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType
 #define ComponentLocalizable XmlDetails::TScrPreProvisionDetail::TComponentLocalizable
 #define ComponentProperty XmlDetails::TScrPreProvisionDetail::TComponentProperty
 #define ComponentFile XmlDetails::TScrPreProvisionDetail::TComponentFile
@@ -46,6 +59,7 @@
 #define ComponentDependency XmlDetails::TScrPreProvisionDetail::TComponentDependency
 #define ComponentDependencyDetail XmlDetails::TScrPreProvisionDetail::TComponentDependency::TComponentDependencyDetail
 
+
 class CXmlGenerator
 	{
 
@@ -64,14 +78,18 @@
 		/**
 		 * Retrieves software environment details, from the supplied xml file. 
 		 */
-		void WritePreProvisionDetails(const std::wstring aXmlFileName, const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetail);
+		void WritePreProvisionDetails(const std::wstring aXmlFileName, 
+											const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetail,
+											int& aRomApplication
+										);
 		
 		
 	private:	
 
 		void WriteComponent(	XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
 								XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
-								const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent
+								const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent,
+								int& aRomApplication
 							);
 
 		void WriteComponentVersion	(	
@@ -94,6 +112,71 @@
 						const std::vector<ComponentProperty>& aComponentProperties 
 					);
 
+		void WriteAppRegInfo	
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppRegistrationInfo>& aAppRegInfo 
+					);
+
+
+		void WriteAppAttributes	
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<ApplicationAttribute>& aAppAttributes 
+					);
+
+		void WriteAppProperty	
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppProperty>& aAppProperty 
+					);
+
+		void WriteAppServiceInfo 
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppServiceInfo>& aAppServiceInfo,
+						const std::vector<AppOpaqueDataType>& aAppOpaqueData
+					);
+
+		void WriteAppDataType 
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppDataType>& aAppDataType 
+					);
+
+		void WriteAppLocalizableInfo 
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppLocalizableInfo>& aAppLocalizableInfo 
+					);
+
+		void WriteAppLocalizableAttribute 
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppLocalizableAttribute>& aAppLocalizableAttribute 
+					);
+
+		void WriteAppLocalizableViewData 
+					( 
+						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppViewData>& aAppViewData 
+					);
+
+		void WriteAppLocalizableViewDataAttributes 
+					 ( 
+ 						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
+						XERCES_CPP_NAMESPACE::DOMDocument* aDocument, 
+						const std::vector<AppViewDataAttributes>& aAppViewDataAttributes 
+					 );
+
 		void WriteComponentFiles	
 					( 
 						XERCES_CPP_NAMESPACE::DOMElement* aRootElement, 
--- a/secureswitools/swisistools/source/makesis/makesis.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/makesis/makesis.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
@@ -498,7 +498,7 @@
 			iVerbose(false)
 	{}
 
-int CMakeSIS::Run(int argc, wchar_t* argv[])
+int CMakeSIS::RunL(int argc, wchar_t* argv[])
 // Inputs   : argc, argv, envp - The command line passed to the process
 	{
 	int err=1;
@@ -542,7 +542,7 @@
 		
 		
 		bool isStubFile= (iCmdOptions.Flags() & CParseCmd::EOptMakeStub) != 0;
-		pkgParser.MakeSis(iCmdOptions.SourceFile(), iCmdOptions.TargetFile(), isStubFile, iCmdOptions.InterpretSisReport());
+		pkgParser.MakeSisL(iCmdOptions.SourceFile(), iCmdOptions.TargetFile(), isStubFile, iCmdOptions.InterpretSisReport());
 		err = 0;
 
 		if (iCmdOptions.InterpretSisReport())
@@ -599,7 +599,7 @@
 */
 	wchar_t **argv1	= CommandLineArgs(argc,argv);
 	CMakeSIS app;
-	int reply = app.Run(argc, argv1);
+	int reply = app.RunL(argc, argv1);
 	cleanup(argc,argv1);
 	return reply;
 	}
--- a/secureswitools/swisistools/source/makesis/makesis.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/makesis/makesis.h	Fri Apr 16 15:05:20 2010 +0300
@@ -51,7 +51,7 @@
 public:
 	CMakeSIS();
 		
-	int  Run(int argc, wchar_t* argv[]);
+	int  RunL(int argc, wchar_t* argv[]);
 	
 	bool ParseSource();
 	bool WriteTarget();
--- a/secureswitools/swisistools/source/makesis/openssllicense.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/makesis/openssllicense.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
--- a/secureswitools/swisistools/source/makesislib/packageparser.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/makesislib/packageparser.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -175,7 +175,7 @@
 
 	}
 
-void CPackageParser::MakeSis(const wchar_t* aPkgFileName, const wchar_t* aSisFileName, bool aMakeStub, bool aReportInterpretSisError)
+void CPackageParser::MakeSisL(const wchar_t* aPkgFileName, const wchar_t* aSisFileName, bool aMakeStub, bool aReportInterpretSisError)
 	{
 	iMakeStub = aMakeStub;
 	iReportInterpretSisError = aReportInterpretSisError;
--- a/secureswitools/swisistools/source/makesislib/packageparser.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/makesislib/packageparser.h	Fri Apr 16 15:05:20 2010 +0300
@@ -194,7 +194,7 @@
 	 * @param aMakeStub boolean which tells whether to create stub or not.
 	 * @param aReportInterpretSisError whether to report interpretsis failure or not.
 	 */
-	void MakeSis(const wchar_t* aPkgFileName, const wchar_t* aSisFileName, bool aMakeStub, bool aReportInterpretSisError);
+	void MakeSisL(const wchar_t* aPkgFileName, const wchar_t* aSisFileName, bool aMakeStub, bool aReportInterpretSisError);
 	
 	/**
 	 * This function will parse the package file. In case of any error it will
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/apaid.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,75 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: class TAppServiceInfo represents the Service Info
+// structure of Resource File. Member Function of this Class are defined. 
+//
+
+/** 
+* @file apaid.cpp
+*
+* @internalComponent
+* @released
+*/
+
+#include "apaid.h"
+#include <cassert>
+
+//
+// class TAppServiceInfo
+//
+
+//Default Constructor for class TAppServiceInfo
+TAppServiceInfo::TAppServiceInfo()
+	: iUid(NullUid),
+	  iDataTypes(0)
+{
+}
+
+//Destructor for class TAppServiceInfo
+TAppServiceInfo::~TAppServiceInfo()
+{
+}
+
+//Constructor for class TAppServiceInfo
+TAppServiceInfo::TAppServiceInfo(TUid aUid, 
+	std::vector<TDataTypeWithPriority*> aDataTypes)
+	: iUid(aUid),
+	  iDataTypes(aDataTypes)
+{
+}
+
+//Releases the data member
+void TAppServiceInfo::Release()
+{
+
+	if(0 < iDataTypes.size())
+		iDataTypes.clear();
+}
+
+/*
+* Member function of Class TAppServiceInfo to return private member
+* variable iUid
+*/
+TUid TAppServiceInfo::GetUid()
+{
+	return iUid;
+}
+
+/*
+* Member function of Class TAppServiceInfo to return private member
+* variable iDataTypes
+*/
+std::vector<TDataTypeWithPriority*> TAppServiceInfo::GetDataType()
+{
+	return iDataTypes;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/apaid.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,114 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// apaid.h - Application capabilities.
+//
+/** 
+* @file apaid.h
+*
+* @internalComponent
+* @released
+*/
+
+#ifndef __APAID_H__
+#define __APAID_H__
+#include<iostream>
+#include<vector>
+#include "commontypes.h"
+using namespace std;
+#include "apmstd.h"		// class TDataTypeWithPriority
+#include "uidtype.h"
+
+class TAppCapability
+{
+public:
+	/** Defines an application's support for embeddability. */
+	enum TEmbeddability {
+		/** An application cannot be embedded. */
+		ENotEmbeddable=0,
+		/** An application can be run embedded or standalone and can read/write embedded document-content. */
+		EEmbeddable=1,
+		/** An application can only be run embedded and can read/write embedded document-content. */
+		EEmbeddableOnly=2,
+		/** An application can be run embedded or standalone and cannot read/write embedded document-content. */
+		EEmbeddableUiOrStandAlone=5,
+		/** An application can only be run embedded and cannot read/write embedded document-content. */
+		EEmbeddableUiNotStandAlone=6 };
+	/** Defines an application's attributes as a set of bit flags. */
+	enum TCapabilityAttribute
+		{
+		/** This functionality is deprecated from v9.5 onwards.
+		@deprecated
+		*/
+		EBuiltAsDll			= 0x00000001,
+		/** If set, the application provides control panel functionality. */
+		EControlPanelItem	= 0x00000002,
+		/** If set, the application is not a native executable, and hence the "path" and "extension" (as well as the "name") must be provided in the app_file field of the APP_REGISTRATION_INFO resource. */
+		ENonNative			= 0x00000004
+		};
+public:
+	/** Indicates the extent to which the application can be embedded. */
+	TEmbeddability iEmbeddability;
+	/** Indicates whether the application is document-based and supports being asked 
+	to create a new file. */
+	TUint iSupportsNewFile;
+	/** Indicates whether the existence of the application should be advertised to the 
+	user. If this is set to ETrue, the application does not appear on the Extras 
+	Bar (or equivalent). */
+	TUint iAppIsHidden;  // not shown in the Shell etc.
+	/** Allows the application to be launched in the foreground (when set to EFalse) 
+	or in the background (when set to ETrue). */
+	TUint iLaunchInBackground; // Series 60 extension to allow apps to be launched in the background
+	/** Stores the application's logical group name. */
+	TAppGroupName iGroupName; // Series 60 extension to allow apps to be categorized according a logical group name, e.g. 'games'
+
+	/** Indicates the application attributes. One or more values from TCapabilityAttribute may be specified. */
+	TUint iAttributes;
+private:
+	// expandable class - add new members to the end, add them to the end of int/ext also, and increment the version no.
+	// default value for all data members must be 0
+	enum { EVersion=4 };
+private:
+	TInt iTAppCapability_Reserved1;
+	};
+
+
+/** Application service information.
+
+Encapsulates a service UID and associated opaque data.
+
+An instance of this class provides information about
+a specific implementation of the service identified by
+the encapsulated service UID.
+
+@publishedPartner
+@released
+*/
+
+class TAppServiceInfo
+	{
+public:
+	 TAppServiceInfo();
+	 ~TAppServiceInfo();
+	 TAppServiceInfo(TUid aUid, std::vector<TDataTypeWithPriority*> aDataTypes);
+	 void Release();
+	 TUid GetUid();
+	 std::vector<TDataTypeWithPriority*> GetDataType();
+	 
+private:
+	TUid iUid;
+	std::vector<TDataTypeWithPriority*> iDataTypes;
+	TInt iTAppServiceInfo;
+	};
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/aplappinforeader.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,1323 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// aplappinforeader.cpp
+//
+/** 
+* @file aplappinforeader.cpp
+*
+* @internalComponent
+* @released
+*/
+
+#include <stdlib.h> 
+#include <iostream.h> 
+#include <string> 
+#include "aplappinforeader.h"
+#include "barsc2.h"
+#include "barsread2.h"
+#include <cassert>
+#include "parse.h"
+#include "uidtype.h"
+#include "stringutils.h"
+#include "is_utils.h"
+#include "apsecutils.h"
+#include "parse.h"
+
+using namespace std;
+
+const TUint KNonLocalized = 0;
+
+#define REINTERPRET_CAST(type,exp) (reinterpret_cast<type>(exp))
+
+const TUint KResourceOffsetMask = 0xFFFFF000;
+
+std::string KAppBinaryPathAndExtension("\\sys\\bin\\.exe");
+
+const TInt KAppRegistrationInfoResourceId = 1;
+
+// The 2nd UID that defines a resource file as being an application registration resource file.
+const TUid KUidAppRegistrationFile = {0x101F8021};
+
+/**
+@internalTechnology
+*/
+std::string KAppResourceFileExtension(".rsc");
+
+std::string KLitPathForUntrustedRegistrationResourceFiles("\\private\\10003a3f\\import\\apps\\");
+
+//
+// CAppInfoReader
+//
+
+// The behaviour of the Take-methods of this class is a little non-standard, as it
+// transfers ownership of the pointer owned by a CAppInfoReader derived object
+// to the caller. This means that this function is only designed to be called once.
+// Doing things this way provides a small performance optimisation by enabling the caller
+// to delete it's stored pointer, and replace it with one returned by this function,
+// instead of having to copy the object (copying could be expensive for the methods
+// of this class that need to return arrays).
+
+
+CAppInfoReader* CAppInfoReader::NewL(const std::string& aRegistrationFileName, TUid aAppUid, const std::string& aLocalizeFilePath)
+{
+	CAppInfoReader* self = new CAppInfoReader(aRegistrationFileName, aAppUid, aLocalizeFilePath);
+	if(NULL == self)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	return self;
+}
+
+CAppInfoReader::CAppInfoReader(const std::string& aRegistrationFileName, TUid aAppUid, const std::string& aLocalizeFilePath) :
+	iAppUid(aAppUid),
+	iDefaultScreenNumber(0),
+	iNonMbmIconFile(false),
+	iApplicationLanguage(ELangNone),
+	iIndexOfFirstOpenService(KErrNotFound),
+	iRegistrationFileName(aRegistrationFileName),
+	iDrivePath(aLocalizeFilePath)
+	{
+
+	 	iAppBinaryFullName = NULL;;
+		iCapability.iGroupName = NULL;
+		iCaption = NULL;
+		iShortCaption = NULL;
+		iViewDataArray = NULL;;
+		iOwnedFileArray = NULL;
+		iIconFileName = NULL;
+	 	iLocalisableResourceFileName = NULL;
+		iServiceArray = NULL;
+	}
+
+CAppInfoReader::~CAppInfoReader()
+{
+	delete iAppBinaryFullName;
+	delete iCaption;
+	delete iShortCaption;
+	if(iViewDataArray)
+		iViewDataArray->clear();
+	delete iViewDataArray;
+	if(iOwnedFileArray)
+		iOwnedFileArray->clear();
+	delete iOwnedFileArray;
+	delete iIconFileName;
+	delete iLocalisableResourceFileName;
+	if(iServiceArray)
+		iServiceArray->clear();
+	delete iServiceArray;
+	if(iAppLocalizableInfo.size())
+		iAppLocalizableInfo.clear();
+	if(iOpaqueDataArray.size())
+		iOpaqueDataArray.clear();
+}
+
+Ptr16* CAppInfoReader::AppBinaryFullName()
+{
+	Ptr16* fileName = iAppBinaryFullName;
+	return fileName;
+}
+
+TUidType CAppInfoReader::AppBinaryUidType() const
+{
+	return iAppBinaryUidType;
+}
+
+TUid CAppInfoReader::AppUid() const
+{
+	return iAppUid;
+}
+
+void CAppInfoReader::Capability(TAppCapability& aCapabilityBuf) const
+{
+	memcpy(&aCapabilityBuf, &iCapability,sizeof(TAppCapability));
+}
+
+TUint CAppInfoReader::DefaultScreenNumber() const
+{
+	return iDefaultScreenNumber;
+}
+
+Ptr16* CAppInfoReader::Caption()
+{
+	Ptr16* caption = iCaption;
+	iCaption = NULL; // ownership transferred to caller
+	return caption;
+}
+
+Ptr16* CAppInfoReader::ShortCaption()
+{
+	Ptr16* shortCaption = iShortCaption;
+	iShortCaption = NULL; // ownership transferred to caller
+	return shortCaption;
+}
+
+TInt CAppInfoReader::NumOfAppIcons() const
+{
+	return iNumOfAppIcons;
+}
+
+std::vector<CAppViewData*>* CAppInfoReader::Views()
+{
+	std::vector<CAppViewData*>* viewDataArray = iViewDataArray;
+	iViewDataArray = NULL; // ownership transferred to caller
+	return viewDataArray;
+}
+
+std::vector<CAppLocalizableInfo*> CAppInfoReader::LocalizableInfo()
+{
+	std::vector<CAppLocalizableInfo*> AppLocalizableInfo = iAppLocalizableInfo;
+	return AppLocalizableInfo;
+}
+
+std::vector<CAppLocalOpaqueDataInfo*> CAppInfoReader::GetOpaqueDataArray()
+{
+	std::vector<CAppLocalOpaqueDataInfo*> opaqueDataArray = iOpaqueDataArray;
+	return opaqueDataArray;
+}
+
+std::vector<Ptr16*>* CAppInfoReader::OwnedFiles()
+{
+	std::vector<Ptr16*>* ownedFileArray = iOwnedFileArray;
+	iOwnedFileArray = NULL; // ownership transferred to caller
+	return ownedFileArray;
+}
+
+Ptr16* CAppInfoReader::IconFileName()
+{
+	Ptr16* iconFileName = iIconFileName;
+	iIconFileName = NULL; // ownership transferred to caller
+	return iconFileName;
+}
+
+TBool CAppInfoReader::NonMbmIconFile() const
+{
+	return iNonMbmIconFile;
+}
+
+Ptr16* CAppInfoReader::LocalisableResourceFileName()
+{
+	Ptr16* localisableResourceFileName = iLocalisableResourceFileName;
+	iLocalisableResourceFileName = NULL; // ownership transferred to caller
+	return localisableResourceFileName;
+}
+
+TLanguage CAppInfoReader::AppLanguage() const
+{
+	return iApplicationLanguage;
+}
+
+std::vector<TAppServiceInfo*>* CAppInfoReader::ServiceArray(TInt& aIndexOfFirstOpenService)
+{
+	std::vector<TAppServiceInfo*>* serviceArray = iServiceArray;
+	iServiceArray = NULL;
+	aIndexOfFirstOpenService = iIndexOfFirstOpenService;
+	return serviceArray;
+}
+
+TBool CAppInfoReader::ReadL(const std::vector<FileDescription*>& aFileDescription, std::string& aRomPath, int aInRom )
+{
+		TUint fileOffset = 0;
+		TInt fileLength = 0;
+		TUid firstUid(KExecutableImageUidVal);
+		TUid middleUid(KUidApp);
+		TInt err;
+		TInt LocalizeError = 0;
+		TUid reguid;
+		CResourceFile* registrationFile = new CResourceFile(iRegistrationFileName, fileOffset, fileLength);
+		if(NULL==registrationFile)
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+	
+		if(registrationFile)
+		{
+			iAppUid = registrationFile->ReadAppUidL();
+			if(!iAppUid.GetUid())
+			{
+				std::string errMsg= "Failed : Invalid Resource File. Null Application UID.";
+				throw CResourceFileException(errMsg);
+			}
+
+			reguid = registrationFile->ReadFileUidL();
+			if(reguid.GetUid()!= KUidAppRegistrationResourceFile)
+			{
+				std::string errMsg= "Failed : Invalid Resource File. UID2 is not defined.";
+				throw CResourceFileException(errMsg);
+			}
+		}
+	
+		// set the TUidType for the app binary
+		// cannot read the TEntry info from the app binary because it's in \sys\bin
+		iAppBinaryUidType = TUidType(firstUid, middleUid, iAppUid); 
+		
+		RResourceReader resourceReader;
+		resourceReader.OpenL(registrationFile, KAppRegistrationInfoResourceId); 
+	
+		TUint localisableResourceId = 1; // only initialising this here to keep the compiler happy, as it's concerned that the variable might be used without having been initialised. The variable should be initialised later, before it's used
+	
+		try {
+				ReadMandatoryInfoL(resourceReader);
+			
+				err = ReadNonLocalisableInfoL(resourceReader, localisableResourceId);
+	
+				if (!err)
+				{	
+					err = ReadNonLocalisableOptionalInfoL(resourceReader, registrationFile);
+				}
+			}
+			catch(const CResourceFileException& aObject)
+			{
+			
+				delete registrationFile;
+				cout<< aObject.GetMsg()<< endl;
+				return EFalse; // might have read something, but failed to setup enough info to make it worthwhile trying to read any more
+			}
+		
+		TBool useDefaultIcons = ETrue;
+	
+		if(iLocalisableResourceFileName)
+		{
+			std::string localizeFileName = Ptr16ToString(iLocalisableResourceFileName);
+
+			std::vector<FileDescription*>::const_iterator filedesIter;
+			//std::wstring iFile;
+			std::wstring iLocalizeFile;
+			//std::string aFileName;
+			std::string iLocalFilePath;
+
+			std::string iLocalFileExt(".r");
+			
+			for(filedesIter = aFileDescription.begin() ; filedesIter != aFileDescription.end(); ++filedesIter)
+			{
+				iLocalizeFile = (*filedesIter)->GetLocalFile();
+			
+				iLocalFilePath = wstring2string(iLocalizeFile);
+
+				if((iLocalFilePath.find(localizeFileName,0) == std::wstring::npos) 
+						|| (iLocalFilePath.find(iLocalFileExt,0) == std::wstring::npos))
+					continue;
+
+				size_t found;
+				std::string Locale;
+				int iLocale = 0;
+			
+				found=iLocalFilePath.find_last_of(".");
+				if(found)
+					Locale = iLocalFilePath.substr(found+2);
+
+				iLocale = atoi(Locale.c_str()); 
+				if(!iLocale)
+					iLocale = KNonLocalized;
+			
+				CResourceFile* tlocalisableFile = NULL;
+
+				if(aInRom)
+				{
+					std::string LocalFile = FullNameWithoutDrive(iLocalFilePath);
+					iLocalFilePath = aRomPath + LocalFile;
+				}
+
+				try {
+					// open the localisable resource file	
+					tlocalisableFile = new CResourceFile(iLocalFilePath, 0, 0);
+					if(NULL==tlocalisableFile)
+					{
+						std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+						throw CResourceFileException(errMsg);
+					}
+	
+					if (!err)
+					{
+						if (tlocalisableFile && (localisableResourceId & KResourceOffsetMask))
+							tlocalisableFile->ConfirmSignatureL();
+
+						err = ReadLocalisableInfoLoopL(*tlocalisableFile, localisableResourceId, useDefaultIcons, iLocale);
+					}
+						
+					delete tlocalisableFile;
+				}
+				catch(const CResourceFileException& aObject)
+				{
+					LocalizeError = 1;
+					aObject.Display();
+					delete tlocalisableFile;
+				}
+			}
+		}
+	
+	// if anything went wrong, we tell the caller that the read was unsuccessful. Some
+	// of the members of this class may contain data which is not complete, but this doesn't matter
+	// because the caller shouldn't try to access the data if the read was unsuccessful
+	TBool readSuccessful = 0;
+	if(!LocalizeError)
+		readSuccessful = (err == KErrNone);
+	delete registrationFile;
+	return readSuccessful;
+}
+
+
+// reads as much info as it can
+// at least captions and icons must be setup on return from this method (using defaults if necessary)
+TBool CAppInfoReader::ReadL()
+{
+	TUint fileOffset = 0;
+	TInt fileLength = 0;
+	TUid firstUid(KExecutableImageUidVal);
+	TUid middleUid(KUidApp);
+	TInt err;
+	TInt LocalizeError = 0;
+	TUid reguid;
+	
+	CResourceFile* registrationFile = new CResourceFile(iRegistrationFileName, fileOffset, fileLength);
+	if(NULL==registrationFile)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+
+	if(registrationFile)
+	{
+		iAppUid = registrationFile->ReadAppUidL();
+		if(!iAppUid.GetUid())
+		{
+			std::string errMsg= "Failed : Invalid Resource File. Null Application UID.";
+			throw CResourceFileException(errMsg);
+		}
+
+		reguid = registrationFile->ReadFileUidL();
+		if(reguid.GetUid()!= KUidAppRegistrationResourceFile)
+		{
+			std::string errMsg= "Failed : Invalid Resource File. UID2 is not defined.";
+			throw CResourceFileException(errMsg);
+		}
+	}
+
+	// set the TUidType for the app binary
+	// cannot read the TEntry info from the app binary because it's in \sys\bin
+	iAppBinaryUidType = TUidType(firstUid, middleUid, iAppUid);	
+	
+	RResourceReader	resourceReader;
+	resourceReader.OpenL(registrationFile, KAppRegistrationInfoResourceId);	
+
+	TUint localisableResourceId = 1; // only initialising this here to keep the compiler happy, as it's concerned that the variable might be used without having been initialised. The variable should be initialised later, before it's used
+
+	try {
+			ReadMandatoryInfoL(resourceReader);
+		
+			err = ReadNonLocalisableInfoL(resourceReader, localisableResourceId);
+
+			if (!err)
+			{	
+				err = ReadNonLocalisableOptionalInfoL(resourceReader, registrationFile);
+			}
+		}
+		catch(const CResourceFileException& aObject)
+		{
+		
+			delete registrationFile;
+			cout<< aObject.GetMsg()<< endl;
+			return EFalse; // might have read something, but failed to setup enough info to make it worthwhile trying to read any more
+		}
+	
+	TBool useDefaultIcons = ETrue;
+
+	if(iLocalisableResourceFileName)
+	{
+		std::string localizeFileName = Ptr16ToString(iLocalisableResourceFileName);
+		std::string folder;
+		std::string file;
+		size_t found;
+		std::string iLocalPath(iDrivePath);
+
+	  	found=localizeFileName.find_last_of("/\\");
+	  	if(found)
+	  		folder = localizeFileName.substr(0,found);
+	  	else
+	  		folder.assign("\\");
+	  	
+	  	file = localizeFileName.substr(found+1);
+		file.append(".");
+		
+		iLocalPath.append(folder);
+				
+		std::wstring iFilePath = string2wstring(iLocalPath);
+		std::wstring iFileName = string2wstring(file);
+		iLocalPath.append("\\");
+
+		std::list<std::wstring> locDirs;
+		GetDirContents( iFilePath, locDirs );
+
+	 	std::list<std::wstring>::iterator curr = locDirs.begin();
+		for( curr = locDirs.begin(); curr != locDirs.end(); ++curr )
+		{
+			if (curr->find(iFileName,0) != std::wstring::npos)
+			{
+			    std::string fName;
+				std::string sAbsolutePath;
+				sAbsolutePath.assign(iLocalPath);
+			 	fName = Ucs2ToUtf8( *curr );
+
+			   	sAbsolutePath.append(fName);
+				//cout << sAbsolutePath<<endl;
+				
+				std::string Locale;
+				int iLocale = 0;
+		
+				found=fName.find_last_of(".");
+				if(found)
+				   	Locale = fName.substr(found+2);
+
+				iLocale = atoi(Locale.c_str()); 
+			    if(!iLocale)
+					iLocale = KNonLocalized;
+				   
+				CResourceFile* tlocalisableFile = NULL;
+
+				try {
+					// open the localisable resource file	
+					tlocalisableFile = new CResourceFile(sAbsolutePath, 0, 0);
+					if(NULL==tlocalisableFile)
+					{
+						std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+						throw CResourceFileException(errMsg);
+					}
+
+					if (!err)
+					{
+						if (tlocalisableFile && (localisableResourceId & KResourceOffsetMask))
+							tlocalisableFile->ConfirmSignatureL();
+
+						err = ReadLocalisableInfoLoopL(*tlocalisableFile, localisableResourceId, useDefaultIcons, iLocale);
+					}
+					
+					delete tlocalisableFile;
+				}
+				catch(const CResourceFileException& aObject)
+				{
+					LocalizeError = 1;
+					aObject.Display();
+					delete tlocalisableFile;
+				}
+			}
+		}
+	}
+
+	// if anything went wrong, we tell the caller that the read was unsuccessful. Some
+	// of the members of this class may contain data which is not complete, but this doesn't matter
+	// because the caller shouldn't try to access the data if the read was unsuccessful
+	TBool readSuccessful = 0;
+	if(!LocalizeError)
+		readSuccessful = (err == KErrNone);
+	delete registrationFile;
+	return readSuccessful;
+}
+
+// this method reads the minimum information required to register an app
+// if this fails (Leaves), we say the read has been unsuccessful
+
+void CAppInfoReader::ReadMandatoryInfoL(RResourceReader& aResourceReader)
+{
+	aResourceReader.ReadUint32L(); // skip over LONG reserved_long
+	aResourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+	// read LTEXT app_file
+	PtrC16* appFile = aResourceReader.ReadTPtrCL();
+	if(NULL==appFile)
+	{
+		std::string errMsg= "Failed : Invalid Resource File Name. Application File Name is Mendatory.";
+		throw CResourceFileException(errMsg);
+	}
+
+	TInt err=0;
+	// this object gets used for 2 purposes: first to check that a ParsePtrC can be created over "appFile" without it panicking, and second to construct iAppBinaryFullName
+	err = FindWild(appFile); // do this before creating a TParsePtrC, since TParsePtrC's constructor panics if it fails (which would provide an easy way for malware to kill the Apparc server)
+
+	if(err==1)
+	{
+		std::string errMsg= "Failed : Invalid Resource File Name : Wild Characters Present.";
+		throw CResourceFileException(errMsg);
+	}
+		
+	ParsePtrC appFileParser(appFile);
+
+	// read LONG attributes
+	iCapability.iAttributes = aResourceReader.ReadUint32L();
+
+
+	if(!appFileParser.NamePresent())
+	{
+		appFileParser.SetToNull();	//Pointer pointing to the content of Resource file. To be destroyed by RResourceReader.
+		std::string errMsg= "Failed : Invalid Resource File Name : Name Not Present.";
+		throw CResourceFileException(errMsg);
+	}
+		
+	std::string appNameWithoutExtension(appFileParser.Name());
+	std::string registrationFileDrive;
+	
+	string::size_type index = iRegistrationFileName.find( ':' );
+	if( index != string::npos )
+		registrationFileDrive.assign(iRegistrationFileName, index-1, 2);
+
+	if (iCapability.iAttributes & TAppCapability::ENonNative)
+	{
+		if (!appFileParser.PathPresent() || !appFileParser.ExtPresent())
+		{
+			appFileParser.SetToNull();	//Pointer pointing to the content of Resource file. To be destroyed by RResourceReader.
+			std::string errMsg= "Failed : Invalid Resource File Name : Path And Extension Not Present.";
+			throw CResourceFileException(errMsg);
+		}
+
+		std::string appFilePath(appFileParser.Path());
+		std::string appFileNameAndExt(appFileParser.NameAndExt());
+
+		if (appFileParser.DrivePresent())
+			registrationFileDrive = appFileParser.Drive();
+
+		err = FindWild(registrationFileDrive, appFilePath, appFileNameAndExt);
+		if(err==1)
+		{
+			appFileParser.SetToNull();	//Pointer pointing to the content of Resource file. To be destroyed by RResourceReader.
+			std::string errMsg= "Failed : Invalid Resource File Name : Wild Characters Present.";
+			throw CResourceFileException(errMsg);
+		}
+	}
+	else if (iCapability.iAttributes & TAppCapability::EBuiltAsDll)
+	{
+		appFileParser.SetToNull();	//Pointer pointing to the content of Resource file. To be destroyed by RResourceReader.
+		std::string errMsg= "Failed : legacy dll-style app.";
+		throw CResourceFileException(errMsg);
+	}
+	else
+	{
+		// exe-style app
+		err = FindWild(registrationFileDrive, KAppBinaryPathAndExtension, appNameWithoutExtension);
+		if(err==1)
+		{
+			appFileParser.SetToNull();	//Pointer pointing to the content of Resource file. To be destroyed by RResourceReader.
+			std::string errMsg= "Failed : Invalid Resource File Name : Wild Characters Present.";
+			throw CResourceFileException(errMsg);
+		}
+	}
+
+	iAppBinaryFullName = new Ptr16(appFileParser.FullName()->iMaxLength);
+	if(NULL==iAppBinaryFullName || NULL == iAppBinaryFullName->GetPtr())
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	iAppBinaryFullName->UpdateLength(appFileParser.FullName()->iMaxLength);
+	BufCpy(iAppBinaryFullName->GetPtr(),appFileParser.FullName()->iPtr,appFileParser.FullName()->iMaxLength);
+
+	appFileParser.SetToNull();	//Pointer pointing to the content of Resource file. To be destroyed by RResourceReader.
+	appFile->iPtr = NULL;		//Pointer pointing to the content of Resource file. To be destroyed by RResourceReader.
+	delete appFile;
+}
+
+/*
+* Converts PtrC16* to Ptr16* datatype. Creates a Buffer copy.
+*/
+
+Ptr16* CAppInfoReader::CreateFullIconFileNameL(const PtrC16* aIconFileName) const
+{
+	Ptr16* filename = NULL;
+
+	if (aIconFileName->iMaxLength == 0)
+		return NULL;
+
+	/*
+	 * aIconFileName may contain a valid string in some format (for eg. URI format) other than path to a regular file on disk
+	 * and that can be a mbm or non-mbm file. Such a filename will be reported as invalid filename by iFs.IsValidName() method. 
+	 * aIconFileName will be returned since it is a valid string. 
+	 */	
+	
+	ParsePtrC parsePtr(aIconFileName);
+
+	if (parsePtr.IsWild() || !parsePtr.PathPresent() || !parsePtr.NamePresent())
+		return NULL;
+
+	filename = new Ptr16(aIconFileName->iMaxLength);
+	if(NULL==filename || NULL == filename->GetPtr())
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	filename->UpdateLength(aIconFileName->iMaxLength);
+	BufCpy(filename->GetPtr(),aIconFileName->iPtr,aIconFileName->iMaxLength);
+
+	std::wstring iFileName = Ptr16ToWstring(filename);
+	std::wstring iFilePath = string2wstring(iDrivePath);
+	std::string fullnamewitoutdrive = parsePtr.FullNameWithoutDrive();
+	std::wstring iFilename1 = string2wstring(fullnamewitoutdrive);
+
+	if(parsePtr.DrivePresent())
+		iFilePath.append(iFilename1);
+	else
+		iFilePath.append(iFileName);
+	
+	// check for fully qualified icon filename
+	if (parsePtr.DrivePresent() && FileExists(iFileName))
+	{
+		parsePtr.SetToNull();
+		return filename;	
+	}
+	else
+	{
+		// check for icon file on same drive as localisable resource file
+		std::string localisableResourceFileDrive = parsePtr.Drive();
+		TInt ret = FindWild(aIconFileName);
+		if(ret == 0 && FileExists(iFilePath))
+		{
+			parsePtr.SetToNull();
+			return filename;
+		}
+		else
+		{
+			ParsePtrC parsePtr_reg(iRegistrationFileName);
+			std::string registrationFileDrive = parsePtr_reg.Drive();
+
+			if(registrationFileDrive.compare(localisableResourceFileDrive))
+			{
+				// check for icon file on same drive as registration file
+				std::string Registrationfilepath(parsePtr_reg.FullPath());
+				Registrationfilepath.append(parsePtr.NameAndExt());
+				std::wstring iRegFilePath = string2wstring(Registrationfilepath);
+				std::string iconfile = parsePtr.StrName();
+					
+				ret = FindWild(registrationFileDrive,iconfile,localisableResourceFileDrive);
+				if(ret == 0 && FileExists(iRegFilePath))
+				{
+					parsePtr_reg.SetToNull();
+					parsePtr.SetToNull();
+					return filename;
+				}
+			}
+			parsePtr_reg.SetToNull();
+		}
+	}
+
+	parsePtr.SetToNull();	//To Avoid double delete in destructor. To be destroyed by RResourceReader.
+							//Same as iIconFileName data member of class CAppInfoReader. Destructor will delete.
+	return NULL;					// Or to be deleted by calling function.
+}
+
+/*
+* Read Localizable resource file.
+@ Param: aResourceFile - Localizable file Handler.
+@ Param: aResourceId of Localizable file.
+*/
+
+TInt CAppInfoReader::ReadLocalisableInfoLoopL(CResourceFile& aResourceFile, TUint aResourceId, TBool& aUseDefaultIcons, TInt& iLocale)
+{
+	CAppLocalizableInfo* localinfo = CAppLocalizableInfo::NewL(iRegistrationFileName, iDrivePath);
+	RResourceReader resourceReader;
+	resourceReader.OpenL(&aResourceFile, aResourceId); //original
+
+	localinfo->SetLocale(iLocale);
+
+	resourceReader.ReadUint32L(); // skip over LONG reserved_long
+	resourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+	// read LTEXT short_caption
+	Ptr16* shortCaption = resourceReader.ReadHBufCL();
+	localinfo->SetShortCaption(shortCaption);
+
+	resourceReader.ReadUint32L(); // skip over LONG reserved_long
+	resourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+	// read LTEXT caption
+	Ptr16* caption = resourceReader.ReadHBufCL();
+	if(NULL == caption)
+	{
+		Ptr16* appBinaryFullName = CAppInfoReader::AppBinaryFullName();
+
+		caption = new Ptr16(appBinaryFullName->GetLength());
+		if(NULL == caption)
+			{
+				std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+			}
+		BufCpy(caption->GetPtr(),appBinaryFullName->GetPtr(),appBinaryFullName->GetLength());
+		caption->UpdateLength(appBinaryFullName->GetLength());
+	}
+	localinfo->SetCaption(caption);
+	
+	// read WORD number_of_icons
+	const TInt numOfIcons = resourceReader.ReadInt16L();
+	localinfo->SetNumOfAppIcons(numOfIcons);
+
+	// read LTEXT icon_file
+	iIconFileName = NULL;
+	PtrC16* iconFile = resourceReader.ReadTPtrCL();
+	if(NULL != iconFile)
+	{
+		Ptr16*	iconFileName = CreateFullIconFileNameL(iconFile);
+		
+		if (iconFileName)
+		{
+			localinfo->SetIconFileName(iconFileName);
+			aUseDefaultIcons = EFalse;
+			iNonMbmIconFile = ETrue;
+			iconFile->iPtr = NULL;
+			delete iconFile;
+		}
+		else
+		{
+			iconFile->iPtr = NULL;
+			delete iconFile;
+			std::string errMsg= "Failed : Icon File not present in Device.";
+			throw CResourceFileException(errMsg);
+		}
+	}
+
+	//Read ViewData  of Localizable file.
+	localinfo->ReadViewDataL(resourceReader);
+
+	// Read LTEXT group_name
+	// If a localised group name has been specified, it overrides
+	// The group name (if any), specified by APP_REGISTRATION_INFO
+
+	PtrC16* groupName = resourceReader.ReadTPtrCL();
+
+	if(NULL != groupName)
+	{
+		if (groupName->iMaxLength > 0)
+		{
+			Ptr16* gName = new Ptr16(groupName->iMaxLength);
+			if(NULL==gName || NULL == gName->GetPtr())
+			{
+				delete groupName;
+				std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+			}
+			gName->UpdateLength(groupName->iMaxLength);
+			BufCpy(gName->GetPtr(),groupName->iPtr,groupName->iMaxLength);
+			localinfo->SetGroupName(gName);
+			groupName->iPtr = NULL; //To Avoid double delete in destructor. To be destroyed by RResourceReader.
+		}
+	}
+
+	iAppLocalizableInfo.push_back(localinfo);
+	delete groupName;
+	return 0;
+}
+
+void CAppInfoReader::ReadOpaqueDataL(TUint aResourceId, CResourceFile* aRegistrationFile, TUint32 aServiceUid)
+{
+	Ptr8* opaqueData = NULL;
+	int iLocale = 0;
+
+	if (aResourceId == 0)
+	{
+		opaqueData = new Ptr8(1);
+		if(NULL==opaqueData || NULL==opaqueData->GetPtr())
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+		*(opaqueData->GetPtr()) = 0;
+		opaqueData->UpdateLength(1);
+	}
+	else
+	{
+		if (aResourceId & KResourceOffsetMask)
+		{
+			if(iLocalisableResourceFileName)
+			{
+				std::string localizeFileName = Ptr16ToString(iLocalisableResourceFileName);
+				std::string folder;
+				std::string file;
+				size_t found;
+				size_t find;
+				std::string iLocalPath(iDrivePath);
+		
+				found=localizeFileName.find_last_of("/\\");
+				if(found)
+					folder = localizeFileName.substr(0,found);
+				else
+					folder.assign("\\");
+			
+				file = localizeFileName.substr(found+1);
+				file.append(".");
+			
+				iLocalPath.append(folder);
+					
+				std::wstring iFilePath = string2wstring(iLocalPath);
+				std::wstring iFileName = string2wstring(file);
+				iLocalPath.append("\\");
+		
+				std::list<std::wstring> locDirs;
+				GetDirContents( iFilePath, locDirs );
+			
+				std::list<std::wstring>::iterator curr = locDirs.begin();
+				for( curr = locDirs.begin(); curr != locDirs.end(); ++curr )
+				{
+					if (curr->find(iFileName,0) != std::wstring::npos)
+					{
+						std::string fName;
+						std::string sAbsolutePath;
+						std::string Locale;
+						sAbsolutePath.assign(iLocalPath);
+						fName = Ucs2ToUtf8( *curr );
+
+						find=fName.rfind("backup");
+						if(find != string::npos)
+							continue;
+
+						sAbsolutePath.append(fName);										
+						found=fName.find_last_of(".");
+						if(found)
+							Locale = fName.substr(found+2);
+			
+						iLocale = atoi(Locale.c_str()); 
+						if(!iLocale)
+							iLocale = KNonLocalized;
+					   
+						CResourceFile* tlocalisableFile = NULL;
+			
+						// open the localisable resource file	
+						tlocalisableFile = new CResourceFile(sAbsolutePath, 0, 0);
+						if(NULL==tlocalisableFile)
+						{
+							std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+							throw CResourceFileException(errMsg);
+						}
+			
+						if (tlocalisableFile)
+						{
+							if (tlocalisableFile && (aResourceId & KResourceOffsetMask))
+								tlocalisableFile->ConfirmSignatureL();
+
+							opaqueData = tlocalisableFile->AllocReadL(aResourceId);
+
+							if(opaqueData)
+							{
+								const TUint8* currentPtr=opaqueData->GetPtr();//TUint8 pointer is used
+									
+								//resource string length is limited to 255 characters max.
+								const TInt unicodeLength=*currentPtr;
+		
+								++currentPtr;
+								if (unicodeLength!=0)
+								{
+									if (REINTERPRET_CAST(TUint,currentPtr)&0x1)
+									{			
+										// The resource compiler puts out a padding byte (arbitrarily 0xab)
+										// to ensure the alignment of Unicode strings within each resource.
+										if(*currentPtr!=0xab)
+										{
+											std::string errMsg= "Failed : Trying to access invalid registrationFile";
+											throw CResourceFileException(errMsg);
+										}
+										++currentPtr;
+									}
+								}
+								
+								opaqueData->SetPtr(currentPtr);
+								opaqueData->ForceLength(unicodeLength*2);
+							}
+							else
+							{
+								opaqueData = new Ptr8(1);
+								if(NULL==opaqueData || NULL==opaqueData->GetPtr())
+								{
+									std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+									throw CResourceFileException(errMsg);
+								}
+								*(opaqueData->GetPtr()) = 0;
+								opaqueData->SetLength(1);
+							}
+
+							CAppLocalOpaqueDataInfo* opaqueInfo = CAppLocalOpaqueDataInfo::NewL(iLocale, aServiceUid, opaqueData);
+							iOpaqueDataArray.push_back(opaqueInfo);
+							
+						}
+						delete tlocalisableFile;
+					}
+				}
+			}
+		}
+		else
+		{	// expecting opaque data to be in the registration file
+			assert(aRegistrationFile);
+			opaqueData = aRegistrationFile->AllocReadL(aResourceId); //lint !e613 Suppress ossible use of null pointer
+
+			const TUint8* currentPtr=opaqueData->GetPtr();//TUint8 pointer is used
+
+			//resource string length is limited to 255 characters max.
+			const TInt unicodeLength=*currentPtr;
+		
+			++currentPtr;
+			if (unicodeLength!=0)
+			{
+				if (REINTERPRET_CAST(TUint,currentPtr)&0x1)
+				{
+					// The resource compiler puts out a padding byte (arbitrarily 0xab)
+					// to ensure the alignment of Unicode strings within each resource.
+					if(*currentPtr!=0xab)
+					{
+						std::string errMsg= "Failed : Trying to access invalid registrationFile";
+						throw CResourceFileException(errMsg);
+					}
+					++currentPtr;
+				}
+			}
+
+			opaqueData->SetPtr(currentPtr);
+			opaqueData->SetLength(unicodeLength*2);
+
+			CAppLocalOpaqueDataInfo* opaqueInfo = CAppLocalOpaqueDataInfo::NewL(iLocale, aServiceUid, opaqueData);
+			iOpaqueDataArray.push_back(opaqueInfo);
+		}
+	}
+}
+
+TInt CAppInfoReader::ReadNonLocalisableOptionalInfoL(RResourceReader& aResourceReader, CResourceFile* aRegistrationFile)	
+{
+	// read LEN WORD STRUCT service_list[]
+	TInt serviceCount = 0;
+	TInt err = 0;
+	// service information was not present in the first release of the registration file
+	// APP_REGISTRATION_INFO resource struct
+	// this method must not leave if the registration file doesn't contain service information, so the
+	// following call to ReadInt16L is trapped to ensure this method doesn't leave just because
+	// there is no more information in the resource to read (KErrEof)
+
+	serviceCount = aResourceReader.ReadInt16L();
+
+	if (!iServiceArray && serviceCount > 0)
+	{
+		iServiceArray = new std::vector<TAppServiceInfo*>;
+
+		if(NULL==iServiceArray){
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+	}
+	
+	while (serviceCount--)
+	{
+		const TUid serviceUid = {aResourceReader.ReadUint32L()};
+		
+		if ((serviceUid == KOpenServiceUid) && (iOpenServiceIsLegacy))
+		{
+			assert(iIndexOfFirstOpenService == 0);
+			// If we found an Open service in the SERVICE_INFO declaration
+			// then we must ignore the legacy one
+			if ( 0 < iServiceArray->size() )
+			{
+				(*iServiceArray)[0]->Release();
+				iServiceArray->erase(iServiceArray->begin());
+			}
+			iOpenServiceIsLegacy = EFalse;
+			iIndexOfFirstOpenService = KErrNotFound;
+		}
+		
+		std::vector<TDataTypeWithPriority*>* mimeTypesSupported = new std::vector<TDataTypeWithPriority*>;
+		if(NULL==mimeTypesSupported)
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+
+		ReadMimeTypesSupportedL(aResourceReader, *mimeTypesSupported);
+		
+		const TUint resourceId = aResourceReader.ReadUint32L();
+
+		ReadOpaqueDataL(resourceId, aRegistrationFile, serviceUid.iUid);
+
+		TAppServiceInfo* serviceInfo = new TAppServiceInfo(serviceUid, *mimeTypesSupported);
+		if(NULL==serviceInfo)
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+
+		iServiceArray->push_back(serviceInfo);
+
+		if ((serviceUid == KOpenServiceUid) && (iIndexOfFirstOpenService < 0))
+			iIndexOfFirstOpenService = iServiceArray->size() - 1;
+	}
+
+	// read LLINK opaque_data
+	const TUint resourceId = aResourceReader.ReadUint32L();
+
+	ReadOpaqueDataL(resourceId, aRegistrationFile, 0);
+
+	return 0;
+}
+
+TInt CAppInfoReader::ReadNonLocalisableInfoL(RResourceReader& aResourceReader, TUint& aLocalisableResourceId)
+{
+	// read LTEXT localisable_resource_file
+	PtrC16*	localisableResourceFileName = aResourceReader.ReadTPtrCL();
+	if(NULL == localisableResourceFileName)
+	{
+		iLocalisableResourceFileName = NULL;
+	}
+	else
+	{
+		if (localisableResourceFileName->iMaxLength > 0 )
+		{
+			ParsePtrC parsePtr(localisableResourceFileName);
+
+			if(parsePtr.IsValidName())
+			{
+				iLocalisableResourceFileName = NULL;
+				std::string errMsg= "Failed : Invalid localisable Resource File Name";
+				throw CResourceFileException(errMsg);
+			}
+			
+			std::string registrationFileDrive;
+	
+			string::size_type index = iRegistrationFileName.find( ':' );
+			if( index != string::npos )
+				registrationFileDrive.assign(iRegistrationFileName, index-1, 2);
+
+			TInt err=0;
+			std::string sTemp = parsePtr.StrName();
+			err = FindWild(registrationFileDrive, KAppResourceFileExtension, sTemp);
+			if(err==1)
+			{
+				std::string errMsg= "Failed : Invalid drive for Registration File";
+				throw CResourceFileException(errMsg);
+			}
+
+			iLocalisableResourceFileName = new Ptr16(parsePtr.FullName()->iMaxLength);
+			if(NULL==iLocalisableResourceFileName || NULL==iLocalisableResourceFileName->GetPtr())
+			{
+				std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+			}
+
+			iLocalisableResourceFileName->UpdateLength(parsePtr.FullName()->iMaxLength);
+			BufCpy(iLocalisableResourceFileName->GetPtr(),parsePtr.FullName()->iPtr,parsePtr.FullName()->iMaxLength);
+
+			parsePtr.SetToNull();	//To Avoid double Delete in destructor.
+		}
+	}
+	// read LONG localisable_resource_id
+	aLocalisableResourceId = aResourceReader.ReadUint32L();
+
+	iCapability.iAppIsHidden = aResourceReader.ReadInt8L();
+	iCapability.iEmbeddability = static_cast<TAppCapability::TEmbeddability>(aResourceReader.ReadInt8L());
+	iCapability.iSupportsNewFile = aResourceReader.ReadInt8L();
+	iCapability.iLaunchInBackground = aResourceReader.ReadInt8L();
+
+	PtrC16* iTemp = aResourceReader.ReadTPtrCL();
+	if(NULL==iTemp || NULL==iTemp->iPtr)
+		iCapability.iGroupName = NULL;
+	else 
+	{
+		iCapability.iGroupName = new Ptr16(iTemp->iMaxLength);
+		if(NULL==iCapability.iGroupName || NULL == iCapability.iGroupName->GetPtr())
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+		iCapability.iGroupName->UpdateLength(iTemp->iMaxLength);
+		BufCpy(iCapability.iGroupName->GetPtr(), iTemp->iPtr, iTemp->iMaxLength );
+	}
+	// read BYTE default_screen_number
+	iDefaultScreenNumber = aResourceReader.ReadUint8L();
+ 	
+	//read the datatypes
+	std::vector<TDataTypeWithPriority*>* datatypes = new std::vector<TDataTypeWithPriority*>;
+	if(NULL==datatypes)
+	{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+	}
+
+	ReadMimeTypesSupportedL(aResourceReader, *datatypes);
+	//dataTypes is deleted if 
+	// A. There are no legacy datatypes
+	// B. Control panel plugin apps are not allowed to register MIME types.If they happen to have any, these datatypes should be ignored.
+	iServiceArray = NULL;
+	if ((iCapability.iAttributes & TAppCapability::EControlPanelItem) || (datatypes->size() == 0))
+		delete datatypes;
+	else
+	{
+		iServiceArray = new std::vector<TAppServiceInfo*>;
+		if(NULL==iServiceArray)
+		{
+				delete datatypes;
+				std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+		}
+
+		Ptr8* opaqueData = new Ptr8(1);
+		if(NULL==opaqueData || NULL==opaqueData->GetPtr())
+		{
+			delete datatypes;
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+		*(opaqueData->GetPtr()) = 0;
+		opaqueData->UpdateLength(0);
+
+		TAppServiceInfo* serviceInfo = new TAppServiceInfo(KOpenServiceUid, *datatypes);
+		if(NULL==serviceInfo)
+		{
+			delete datatypes;
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+		iServiceArray->push_back(serviceInfo);
+		iIndexOfFirstOpenService = 0;
+		iOpenServiceIsLegacy = ETrue;
+	}
+
+	// read LEN WORD STRUCT file_ownership_list[]
+	const TInt fileOwnershipArraySize = aResourceReader.ReadInt16L();
+
+	iOwnedFileArray = NULL;
+	if (fileOwnershipArraySize > 0)
+	{
+		iOwnedFileArray = new std::vector<Ptr16*>;
+		if(NULL==iOwnedFileArray)
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+	}
+	for (TInt i=0; i < fileOwnershipArraySize; i++)
+	{
+		PtrC16* fileNamePtr_temp = aResourceReader.ReadTPtrCL();
+		if(NULL != fileNamePtr_temp)
+		{
+			Ptr16* fileNamePtr = new Ptr16(fileNamePtr_temp->iMaxLength);
+			if(NULL==fileNamePtr || NULL==fileNamePtr->GetPtr())
+			{
+				std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+			}
+			fileNamePtr->UpdateLength(fileNamePtr_temp->iMaxLength);			  
+			BufCpy(fileNamePtr->GetPtr(),fileNamePtr_temp->iPtr,fileNamePtr_temp->iMaxLength);
+			iOwnedFileArray->push_back(fileNamePtr);
+		}
+		else
+		{
+			Ptr16* fileNamePtr = NULL;
+			iOwnedFileArray->push_back(fileNamePtr);
+		}
+	}
+
+	return 0;
+}
+
+// This method can be used to check whether app has a WriteDeviceCap 
+// and its sid is trusted
+void CAppInfoReader::ReadAppSecurityInfo()
+{
+    if (!iSecurityInfoHasBeenRead)
+    {
+		if(NULL==iAppBinaryFullName)
+		{
+			std::string errMsg= "Failed : Invalid Application Name";
+			throw CResourceFileException(errMsg);
+		}
+
+		Ptr16* iBinaryName = new Ptr16(iAppBinaryFullName->GetLength());
+		if(NULL == iBinaryName)
+		{
+				std::string errMsg= "Failed : Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+		}
+		BufCpy(iBinaryName->GetPtr(),iAppBinaryFullName->GetPtr(),iAppBinaryFullName->GetLength());
+		iBinaryName->UpdateLength(iAppBinaryFullName->GetLength());
+
+		const TInt err = CApaSecurityUtils::CheckAppSecurity( *iBinaryName, 
+                                        iHasWriteDeviceDataCap, iIsSidTrusted, iDrivePath);
+
+		delete iBinaryName;
+	
+        if ( KErrNone != err )
+        {
+            iHasWriteDeviceDataCap = EFalse;
+            iIsSidTrusted = EFalse;
+        }
+
+        iSecurityInfoHasBeenRead = ETrue;   
+     }
+}
+
+
+void CAppInfoReader::ReadMimeTypesSupportedL(RResourceReader& aResourceReader,
+	std::vector<TDataTypeWithPriority*>& aMimeTypesSupported)
+{
+	// read LEN WORD STRUCT datatype_list[]
+	const TInt dataTypeArraySize = aResourceReader.ReadInt16L();
+	if (dataTypeArraySize <= 0)
+		return;
+	
+	for (TInt i=0; i < dataTypeArraySize; i++)
+	{
+		TDataTypePriority priority = static_cast<TDataTypePriority>(aResourceReader.ReadInt32L());
+
+		//Check for data priority of UnTrusted apps however the trusted apps will not have any restrictions 
+		//over the data priority.	
+		//If an untrusted app has write device data capability (i.e. still has priority = KDataTypePrioritySystem),
+		//do not restrict to KDataTypeUnTrustedPriorityThreshold
+		if (priority > KDataTypeUnTrustedPriorityThreshold || priority == KDataTypePrioritySystem )
+	    {
+		    ReadAppSecurityInfo();
+
+            if (priority == KDataTypePrioritySystem)
+            {
+                // Check that the app has capability WriteDeviceData
+                if (!iHasWriteDeviceDataCap)
+                    priority = KDataTypePriorityNormal;
+            }
+            else
+            {
+                //data priority for UnTrusted apps would be capped if it is greater than the threshold priority i.e, KMaxTInt16.
+                TInt match=iRegistrationFileName.find(KLitPathForUntrustedRegistrationResourceFiles);
+                if (match != KErrNotFound && !iIsSidTrusted) 
+                {
+                    //if registration file is in import directory and 
+                    //its sid is in unprotected range - downgrade the priority
+                    priority = KDataTypeUnTrustedPriorityThreshold;	
+                }
+             }
+	    }
+
+		PtrC8* dataTypePtr  = aResourceReader.ReadTPtrC8L();
+		if(NULL != dataTypePtr)
+		{
+			TDataType* dataType = new TDataType(dataTypePtr);
+			if(NULL==dataType)
+			{
+				std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+			}
+			TDataTypeWithPriority* dataTypeWithPriority = new TDataTypeWithPriority(*dataType, priority);
+			if(NULL==dataTypeWithPriority)
+			{	
+				delete dataType;
+				std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+				throw CResourceFileException(errMsg);
+			}
+			aMimeTypesSupported.push_back(dataTypeWithPriority);
+		}
+		else
+		{
+			TDataTypeWithPriority* dataTypeWithPriority = NULL;
+			aMimeTypesSupported.push_back(dataTypeWithPriority);
+		}
+	}
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/aplappinforeader.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,111 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// aplappinforeader.h
+//
+/** 
+* @file aplappinforeader.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef __APLAPPINFOREADER_H__
+#define __APLAPPINFOREADER_H__
+
+
+#include "apaid.h"
+#include <vector>
+#include "apmstd.h"
+#include "barsc2.h"
+#include "barsread2.h"
+#include "e32lang.h"
+#include "aplapplistitem.h"
+#include "filedescription.h"
+
+using namespace std;
+
+/**
+Reads application information from a combination of registration file,
+optional localisable resource file and optional icon file.
+
+@internalComponent
+*/
+class CAppInfoReader
+	{
+public:
+	static CAppInfoReader* NewL(const std::string& aRegistrationFileName, TUid aAppUid, const std::string& aLocalizeFilePath);
+	TBool ReadL();
+	TBool ReadL(const std::vector<FileDescription*>& aFileDescription, std::string& aRomPath, int aInRom);
+	~CAppInfoReader();
+public:
+	Ptr16* AppBinaryFullName();
+	TUidType AppBinaryUidType() const;
+	TUid AppUid() const;
+	void Capability(TAppCapability& aCapabilityBuf) const;
+	TUint DefaultScreenNumber() const;
+	std::vector<CAppViewData*>* Views();
+	std::vector<CAppLocalizableInfo*> LocalizableInfo();
+	std::vector<CAppLocalOpaqueDataInfo*> GetOpaqueDataArray();
+	std::vector<Ptr16*>* OwnedFiles();
+	
+	Ptr16* Caption();
+	Ptr16* ShortCaption();
+	TInt NumOfAppIcons() const;
+	Ptr16* IconFileName();
+	TBool NonMbmIconFile() const;
+	
+	Ptr16* LocalisableResourceFileName();
+	TLanguage AppLanguage() const;
+	std::vector<TAppServiceInfo*>* ServiceArray(TInt& aIndexOfFirstOpenService);
+	Ptr16* CreateFullIconFileNameL(const PtrC16* aIconFileName) const;
+	
+private:
+	CAppInfoReader(const std::string& aRegistrationFileName, TUid aAppUid, const std::string& aLocalizeFilePath);
+	void ReadMimeTypesSupportedL(RResourceReader& aResourceReader, std::vector<TDataTypeWithPriority*>& aMimeTypesSupported);
+	void ReadMandatoryInfoL(RResourceReader& aResourceReader);
+	TInt ReadNonLocalisableInfoL(RResourceReader& aResourceReader, TUint& aLocalisableResourceId);
+	TInt ReadNonLocalisableOptionalInfoL(RResourceReader& aResourceReader, CResourceFile* aRegistrationFile);
+	TInt ReadLocalisableInfoLoopL(CResourceFile& aResourceFile, TUint aResourceId, TBool& aUseDefaultIcons, TInt& iLocale);
+	void ReadOpaqueDataL(TUint aResourceId, CResourceFile* aRegistrationFile, TUint32 aServiceUid);
+	void ReadAppSecurityInfo();
+		
+private:
+	TUid iAppUid;
+	Ptr16* iAppBinaryFullName;
+	TUidType iAppBinaryUidType;
+	TAppCapability iCapability;
+	TUint iDefaultScreenNumber;
+	Ptr16* iCaption;
+	Ptr16* iShortCaption;
+	TInt iNumOfAppIcons;
+	std::vector<CAppViewData*>* iViewDataArray;
+	std::vector<Ptr16*>* iOwnedFileArray;
+	Ptr16* iIconFileName;
+	TBool iNonMbmIconFile; // ETrue if icon filename is not an MBM file, however, EFalse does not necessarily mean it is an MBM file
+	Ptr16* iLocalisableResourceFileName;
+	TLanguage iApplicationLanguage;
+	std::vector<TAppServiceInfo*>* iServiceArray;
+	TInt iIndexOfFirstOpenService;
+	TBool iOpenServiceIsLegacy;
+	std::vector<CAppLocalOpaqueDataInfo*> iOpaqueDataArray;
+private:
+	const std::string& iRegistrationFileName;
+	const std::string& iDrivePath;
+	std::vector<CAppLocalizableInfo*> iAppLocalizableInfo;
+	TBool iHasWriteDeviceDataCap;
+    TBool iIsSidTrusted;
+    // This flag is used to determine if app security info was allready read
+    TBool iSecurityInfoHasBeenRead;
+	};
+
+#endif	// __APLAPPINFOREADER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/aplapplistitem.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,461 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// aplapplistitem.cpp
+//
+/** 
+* @file aplapplistitem.cpp
+*
+* @internalComponent
+* @released
+*/
+#include "aplapplistitem.h"
+#include "barsc2.h"
+#include "parse.h"
+#include "uidtype.h"
+
+//
+// class CAppLocalOpaqueDataInfo
+//
+
+//Default Constructor for class CAppLocalOpaqueDataInfo
+CAppLocalOpaqueDataInfo::CAppLocalOpaqueDataInfo()
+	: iServiceUid(0),
+	  iLocale(0),
+	  iOpaqueData(NULL)
+{
+}
+
+//Destructor for class CAppLocalOpaqueDataInfo
+CAppLocalOpaqueDataInfo::~CAppLocalOpaqueDataInfo()
+{
+	delete iOpaqueData;
+}
+
+//Constructor for class CAppLocalOpaqueDataInfo
+CAppLocalOpaqueDataInfo::CAppLocalOpaqueDataInfo(TInt aLocale, TUint32 aServiceUid, Ptr8* aOpaqueData)
+	: iLocale(aLocale),
+	  iServiceUid(aServiceUid),
+	  iOpaqueData(aOpaqueData)
+{
+	assert(iOpaqueData);
+}
+
+
+CAppLocalOpaqueDataInfo* CAppLocalOpaqueDataInfo::NewL(TInt aLocale, TUint32 aServiceUid, Ptr8* aOpaqueData)
+{
+	CAppLocalOpaqueDataInfo* self=new CAppLocalOpaqueDataInfo(aLocale, aServiceUid, aOpaqueData);
+	if(NULL==self)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+
+	return self;	
+}
+
+
+Ptr8* CAppLocalOpaqueDataInfo::GetOpaqueData()
+{
+	return iOpaqueData;
+}
+
+TUint32 CAppLocalOpaqueDataInfo::GetServiceUid()
+{
+	return iServiceUid;
+}
+
+TInt CAppLocalOpaqueDataInfo::GetLocale()
+{
+	return iLocale;
+}
+
+//
+// Class CAppLocalizableInfo
+//
+CAppLocalizableInfo::~CAppLocalizableInfo()
+{
+	delete iCaption;
+	delete iShortCaption;
+	delete iGroupName;
+	delete iIconFileName;
+	if(iViewDataArray)
+		iViewDataArray->clear();
+	delete iViewDataArray;
+	delete iOpaqueData;
+}
+
+CAppLocalizableInfo::CAppLocalizableInfo(const std::string& aRegistrationFileName, const std::string& aLocalizeFilePath)
+	: iNumOfAppIcons(0),
+	iRegistrationFilePath(aRegistrationFileName),
+	iLocalPath(aLocalizeFilePath)
+{
+	iCaption = NULL;
+	iShortCaption = NULL;
+	iIconFileName = NULL;
+	iGroupName = NULL;
+	iViewDataArray = NULL;
+	iOpaqueData = NULL;
+}
+
+CAppLocalizableInfo* CAppLocalizableInfo::NewL(const std::string& aRegistrationFileName,const std::string& aLocalizeFilePath)
+{
+	CAppLocalizableInfo* self=new CAppLocalizableInfo(aRegistrationFileName, aLocalizeFilePath);
+	if(NULL==self)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+
+	return self;	
+}
+
+
+void CAppLocalizableInfo::SetCaption(Ptr16* Caption)
+{	
+	iCaption = Caption;
+}
+void CAppLocalizableInfo::SetShortCaption(Ptr16* ShortCaption)
+{
+	iShortCaption = ShortCaption;
+}
+void CAppLocalizableInfo::SetGroupName(Ptr16* GroupName)
+{
+	iGroupName = GroupName;
+}
+void CAppLocalizableInfo::SetIconFileName(Ptr16* IconFileName)
+{
+	iIconFileName = IconFileName;
+}
+
+void CAppLocalizableInfo::SetNumOfAppIcons(TInt NumOfAppIcons)
+{
+	iNumOfAppIcons = NumOfAppIcons;
+}
+
+void CAppLocalizableInfo::SetLocale(TInt Locale)
+{
+	iLocale = Locale;
+}
+
+void CAppLocalizableInfo::SetOpaqueData(Ptr8* OpaqueData)
+{
+	iOpaqueData = OpaqueData;
+}
+
+std::vector<CAppViewData*>* CAppLocalizableInfo::GetViewDataArray()
+{
+	return iViewDataArray;
+}
+Ptr16* CAppLocalizableInfo::GetGroupName()
+{
+	return iGroupName;
+}
+
+Ptr16* CAppLocalizableInfo::GetCaption()
+{
+	return iCaption;
+}
+
+Ptr16* CAppLocalizableInfo::GetShortCaption()
+{
+	return iShortCaption;
+}
+
+Ptr16* CAppLocalizableInfo::GetIconFileName()
+{
+	return iIconFileName;
+}
+
+TInt CAppLocalizableInfo::GetNumOfAppIcons()
+{
+	return iNumOfAppIcons;
+}
+
+TInt CAppLocalizableInfo::GetLocale()
+{
+	return iLocale;
+}	
+
+Ptr8* CAppLocalizableInfo::GetOpaqueData()
+{
+	return iOpaqueData;
+}
+
+//Read ViewData struct of Localizable resource file.
+void CAppLocalizableInfo::ReadViewDataL(RResourceReader& aResourceReader)
+{
+	// read LEN WORD STRUCT view_list[]
+	const TInt numOfViews = aResourceReader.ReadInt16L();
+
+	if (numOfViews > 0)
+	{
+		iViewDataArray = new std::vector<CAppViewData*>;
+		if(NULL==iViewDataArray)
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+	}
+
+	for(TInt view = 0; view < numOfViews; ++view)
+	{
+		CAppViewData* viewData = CAppViewData::NewL();
+		aResourceReader.ReadUint32L(); // skip over LONG reserved_long
+		aResourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+		// read LONG uid
+		const TUid viewUid =  {aResourceReader.ReadInt32L()};
+		viewData->SetUid(viewUid);
+		// read LONG screen_mode
+		const TInt screenMode = aResourceReader.ReadInt32L();
+		viewData->SetScreenMode(screenMode);
+
+		aResourceReader.ReadUint32L(); // skip over LONG reserved_long
+		aResourceReader.ReadUint32L(); // skip over LLINK reserved_llink
+
+		// read LTEXT caption
+		PtrC16* viewCaption = aResourceReader.ReadTPtrCL();
+		if(NULL != viewCaption)
+		{
+			viewData->SetCaptionL(viewCaption);
+
+			viewCaption->iPtr = NULL; //To Avoid double delete in destructor. To be destroyed by RResourceReader.
+			delete viewCaption;
+		}
+		// read WORD number_of_icons
+		const TInt numOfViewIcons = aResourceReader.ReadInt16L();
+		viewData->SetNumOfViewIcons(numOfViewIcons);
+
+		// read LTEXT icon_file
+		PtrC16* viewIconFile = aResourceReader.ReadTPtrCL();
+		if(NULL != viewIconFile)
+		{
+
+			Ptr16*	fullViewIconFileName = ViewDataIconFileNameL(viewIconFile);
+			if (fullViewIconFileName)
+			{
+				viewData->SetIconFileNameL(fullViewIconFileName);
+				viewData->SetNonMbmIconFile(true);
+				delete fullViewIconFileName;
+			}
+			else
+			{
+				viewIconFile->iPtr = NULL;
+				viewIconFile->iMaxLength = 0;
+
+				if (numOfViewIcons > 0 && iIconFileName)
+				{ // default to app icon filename
+					viewIconFile->iPtr = iIconFileName->GetPtr(); 
+					viewIconFile->iMaxLength = iIconFileName->GetLength();
+				std::string errMsg= "Failed : ServiceInfo Icon File not present in Device.";
+				throw CResourceFileException(errMsg);
+				}
+			}
+		}
+
+		iViewDataArray->push_back(viewData);
+		if(NULL != viewIconFile)
+		{
+			viewIconFile->iPtr = NULL; //To Avoid double delete in destructor. To be destroyed by RResourceReader.
+		}
+		delete viewIconFile;
+	}
+
+}
+
+
+Ptr16* CAppLocalizableInfo::ViewDataIconFileNameL(const PtrC16* aIconFileName) const
+{
+	Ptr16* filename = NULL;
+	if (aIconFileName->iMaxLength == 0)
+		return NULL;
+
+	/*
+	 * aIconFileName may contain a valid string in some format (for eg. URI format) other than path to a regular file on disk
+	 * and that can be a mbm or non-mbm file. Such a filename will be reported as invalid filename by iFs.IsValidName() method. 
+	 * aIconFileName will be returned since it is a valid string. 
+	 */	
+	ParsePtrC parsePtr(aIconFileName);
+	if (parsePtr.IsWild() || !parsePtr.PathPresent() || !parsePtr.NamePresent())
+		return NULL;
+
+	filename = new Ptr16(aIconFileName->iMaxLength);
+	if(NULL==filename || NULL == filename->GetPtr())
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	filename->UpdateLength(aIconFileName->iMaxLength);
+	BufCpy(filename->GetPtr(),aIconFileName->iPtr,aIconFileName->iMaxLength);
+
+	std::wstring iFileName = Ptr16ToWstring(filename);
+	std::wstring iFilePath = string2wstring(iLocalPath);
+	std::string fullnamewitoutdrive = parsePtr.FullNameWithoutDrive();
+	std::wstring iFilename1 = string2wstring(fullnamewitoutdrive);
+
+	if(parsePtr.DrivePresent())
+		iFilePath.append(iFilename1);
+	else
+		iFilePath.append(iFileName);
+
+	// check for fully qualified icon filename
+	if (parsePtr.DrivePresent() && FileExists(iFileName))
+	{
+		parsePtr.SetToNull();
+		return filename;	
+	}
+	else
+	{
+		// check for icon file on same drive as localisable resource file
+		std::string localisableResourceFileDrive = parsePtr.Drive();
+		TInt ret = FindWild(aIconFileName);
+		if(ret == 0 && FileExists(iFilePath))
+		{
+			parsePtr.SetToNull();
+			return filename;
+		}
+		else
+		{
+			ParsePtrC parsePtr_reg(iRegistrationFilePath);
+			std::string registrationFileDrive = parsePtr_reg.Drive();
+
+			if(registrationFileDrive.compare(localisableResourceFileDrive))
+			{
+				// check for icon file on same drive as registration file
+				std::string registrationfilepath(parsePtr_reg.FullPath());
+				registrationfilepath.append(parsePtr.NameAndExt());
+				std::wstring iRegFilePath = string2wstring(registrationfilepath);
+				std::string iconfile = parsePtr.StrName();
+			
+				ret = FindWild(registrationFileDrive,iconfile,localisableResourceFileDrive);
+				if(ret == 0 && FileExists(iRegFilePath))
+				{
+					parsePtr_reg.SetToNull();
+					parsePtr.SetToNull();
+					return filename;
+				}
+			}
+			parsePtr_reg.SetToNull();
+		}
+	}
+	parsePtr.SetToNull();	//To Avoid double delete in destructor. To be destroyed by RResourceReader.
+							//Same as iIconFileName data member of class CAppInfoReader. Destructor will delete.
+	return NULL;					// Or to be deleted by calling function.
+}
+
+//
+// Class CAppViewData
+//
+
+CAppViewData::~CAppViewData()
+{
+	delete iCaption;
+	delete iIconFileName;
+}
+
+CAppViewData::CAppViewData()
+	: iNonMbmIconFile(false),iNumOfViewIcons(0),iScreenMode(0)
+{
+	iCaption = NULL;
+	iIconFileName = NULL;
+	iUid = NullUid;
+}
+
+CAppViewData* CAppViewData::NewL()
+{
+	CAppViewData* self=new CAppViewData();
+	if(NULL==self)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+
+	return self;	
+}
+
+void CAppViewData::SetUid(TUid aUid)
+{
+	iUid=aUid;
+}
+
+void CAppViewData::SetScreenMode(TInt aScreenMode)
+{
+	iScreenMode=aScreenMode;
+}
+
+void CAppViewData::SetCaptionL(const PtrC16* aCaption)
+{
+	if(aCaption != NULL)
+	{
+		iCaption=new Ptr16(aCaption->iMaxLength);
+		if(NULL==iCaption || NULL==iCaption->GetPtr())
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+		iCaption->UpdateLength(aCaption->iMaxLength);
+		BufCpy(iCaption->GetPtr(),aCaption->iPtr,aCaption->iMaxLength);
+	}
+	else
+		iCaption = NULL;
+}
+
+void CAppViewData::SetIconFileNameL(const Ptr16* aFileName)
+{
+	if(aFileName != NULL)
+	{
+		iIconFileName = new Ptr16(aFileName->GetLength());
+		if(NULL==iIconFileName || NULL==iIconFileName->GetPtr())
+		{
+			std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+			throw CResourceFileException(errMsg);
+		}
+		iIconFileName->UpdateLength(aFileName->GetLength());
+		BufCpy(iIconFileName->GetPtr(),aFileName->GetPtr(),aFileName->GetLength());
+	}
+	else
+		iIconFileName = NULL;
+}
+
+void CAppViewData::SetNumOfViewIcons(TInt aNumOfViewIcons)
+{
+	iNumOfViewIcons = aNumOfViewIcons;
+}
+
+void CAppViewData::SetNonMbmIconFile(TBool aNonMbmIconFile)
+{
+	iNonMbmIconFile = aNonMbmIconFile;
+}
+
+TUid CAppViewData::Uid() const
+{
+	return iUid;
+}
+
+Ptr16* CAppViewData::GetCaption()
+{
+	return iCaption;
+}
+TInt CAppViewData::GetScreenMode()
+{
+	return iScreenMode;
+}
+Ptr16* CAppViewData::GetIconFileName()
+{
+	return iIconFileName;
+}
+TInt CAppViewData::GetNumOfViewIcons()
+{
+	return iNumOfViewIcons;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/aplapplistitem.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,137 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// aplapplistitem.h
+//
+/** 
+* @file aplapplistitem.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef __APLAPPLISTITEM_H__
+#define __APLAPPLISTITEM_H__
+
+#include "apaid.h"
+#include "barsread2.h"
+#include "stringutils.h"
+#include "is_utils.h"
+
+/**
+The CAppLocalOpaqueDataInfo class represents the data associated with an application OpaqueData.
+
+@internalComponent
+*/
+class CAppLocalOpaqueDataInfo
+	{
+public:
+	~CAppLocalOpaqueDataInfo();
+	CAppLocalOpaqueDataInfo();
+	CAppLocalOpaqueDataInfo(TInt 	aLocale, TUint32 aServiceUid, Ptr8* aOpaqueData);
+	static CAppLocalOpaqueDataInfo* NewL(TInt aLocale, TUint32 aServiceUid, Ptr8* aOpaqueData);
+	Ptr8* GetOpaqueData();
+	TUint32 GetServiceUid();
+	TInt GetLocale();
+
+private:
+	Ptr8* 	iOpaqueData;
+	TUint32	iServiceUid;
+	TInt 	iLocale;
+	};
+
+/**
+The CApaAppViewData class represents the data associated with an application view.
+
+@internalComponent
+*/
+class CAppViewData
+	{
+public:
+	TUid Uid() const;
+	inline Ptr16 Caption() const;
+public:
+	~CAppViewData();
+	static CAppViewData* NewL();
+	void SetUid(TUid aUid);
+	void SetCaptionL(const PtrC16* aCaption);
+	void SetScreenMode(TInt aScreenMode);
+	void SetIconFileNameL(const Ptr16* aFileName);
+	void SetNonMbmIconFile(TBool aNonMbmIconFile);
+	void SetNumOfViewIcons(TInt aNumOfViewIcons);
+	Ptr16* GetCaption();
+	TInt GetScreenMode();
+	Ptr16* GetIconFileName();
+	TInt GetNumOfViewIcons();
+	CAppViewData();
+
+private:
+	Ptr16* iCaption;
+	TUid iUid;
+	TInt iScreenMode;
+	Ptr16* iIconFileName;
+	TBool iNonMbmIconFile;
+	TInt iNumOfViewIcons;
+	};
+
+//
+// inlines
+//
+
+inline Ptr16 CAppViewData::Caption() const
+	{ return *iCaption; }
+
+/**
+Reads application information from a combination of localizable registration file,
+
+@internalComponent
+*/
+
+class CAppLocalizableInfo
+{
+public:
+		~CAppLocalizableInfo();
+	static CAppLocalizableInfo* NewL(const std::string& aRegistrationFileName, const std::string& aLocalizeFilePath);
+		CAppLocalizableInfo(const std::string& aRegistrationFileName,const std::string& aLocalizeFilePath);
+	void SetCaption(Ptr16* Caption);
+	void SetShortCaption(Ptr16* ShortCaption);
+	void SetGroupName(Ptr16* GroupName);
+	void SetIconFileName(Ptr16* IconFileName);
+	void SetNumOfAppIcons(TInt NumOfAppIcons);
+	void SetLocale(TInt Locale);
+	void SetOpaqueData(Ptr8* OpaqueData);
+	void ReadViewDataL(RResourceReader& resourceReader);
+	Ptr16* ViewDataIconFileNameL(const PtrC16* aIconFileName) const;
+	std::vector<CAppViewData*>* GetViewDataArray();	
+	Ptr16* GetGroupName();
+	Ptr16* GetCaption();
+	Ptr16* GetShortCaption();
+	Ptr16* GetIconFileName();
+	TInt GetNumOfAppIcons();
+	TInt GetLocale();
+	Ptr8* GetOpaqueData();
+	
+private:
+	std::vector<CAppViewData*>* iViewDataArray;
+	Ptr16* iGroupName;
+	Ptr16* iCaption;
+	Ptr16* iShortCaption;
+	TInt iNumOfAppIcons;
+	Ptr16* iIconFileName;
+	TInt iLocale;
+	Ptr8* iOpaqueData;
+	const std::string& iRegistrationFilePath;
+	const std::string& iLocalPath;
+};
+
+
+#endif //__APLAPPLISTITEM_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/apmstd.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,85 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file APMSTD.cpp
+*
+* @internalComponent
+* @released
+*/
+#include "apmstd.h"
+#include "barsc2.h"
+#include "parse.h"
+
+//
+// class TDataType
+//
+
+TDataType::TDataType()
+	:iDataType(),
+	iUid(NullUid)
+/** Default constructor.
+
+Sets an empty data type string and sets the associated UID to NullUid. */
+	{}
+
+
+TDataType::~TDataType()
+/** Default destructor.
+
+Sets an empty data type string and sets the associated UID to NullUid. */
+{
+	delete iDataType;
+}
+
+TDataType::TDataType(const PtrC8* aDataType)
+	:iUid(NullUid)
+/** Copy constructor.
+
+@param aDataType The data type to be copied. */
+{
+	iDataType = new Ptr8(aDataType->iMaxLength);
+	if(NULL==iDataType)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	iDataType->UpdateLength(aDataType->iMaxLength);
+	BufCpy8(iDataType->GetPtr(), aDataType->iPtr, aDataType->iMaxLength);
+}
+
+
+Ptr8* TDataType::GetDataType()
+{
+	return iDataType;
+}
+
+
+//
+// class TDataTypeWithPriority
+//
+
+/** Default constructor */
+TDataTypeWithPriority::TDataTypeWithPriority()
+{
+}
+
+/** Constructor taking a data type and a priority value.
+
+@param aDataType The data type.
+@param aPriority The priority value. */
+TDataTypeWithPriority::TDataTypeWithPriority(const TDataType& aDataType, TDataTypePriority aPriority)
+	: iDataType(aDataType),
+	iPriority(aPriority)
+	{}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/apmstd.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,181 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file apmstd.h
+*
+* @internalComponent
+* @released
+*/
+#if !defined (__APMSTD_H__)
+#define __APMSTD_H__
+
+#include "commontypes.h"
+
+/**
+@publishedAll
+@released
+
+The largest possible value for a TInt16.
+*/
+const TInt KMaxTInt16=0x7fff;
+
+/**
+@publishedAll
+@released
+
+The smallest possible value for a TInt16.
+*/
+const TInt KMinTInt16=(-32768);
+
+/**
+@publishedAll
+@released
+*/
+const TInt KMaxDataTypeLength=256;
+
+/** Defines the priority associated with a data type.
+
+The priority is used by a device to resolve the current preferred handler 
+of a data type, in the absence of any user preferences.
+
+@publishedAll
+@released
+@see TDataTypeWithPriority */
+typedef TInt32 TDataTypePriority;
+
+/** Reserved for future use. 
+
+@publishedAll
+@released */
+const TInt32 KDataTypePriorityUserSpecified=KMaxTInt16;
+
+/** Trusted applications may use this priority value to ensure 
+    their MIME type associations cannot be overridden by 
+    self signed (untrusted) applications.
+
+@publishedAll
+@released
+@see TDataTypeWithPriority */
+const TInt32 KDataTypePriorityTrustedHigh = 0xC000;
+
+/** This is Threshold priority for Un-Trusted apps i.e., for the applications which reside 
+in \\private\\10003a3f\\import\\apps and have a SID which is in the unprotected range. This is to avoid Un-Trusted app's claiming for priority higher 
+than the threshold, if they claim for priority higher than the Threshold then it would be 
+reduced to KDataTypeUnTrustedPriorityThreshold.
+
+@publishedAll
+@released */
+const TInt32 KDataTypeUnTrustedPriorityThreshold=KMaxTInt16;
+
+/** A priority value associated with a data (MIME) type. Associating an application 
+with a data type at this priority means that this application, and no other, 
+should ever handle the data type. Use sparingly.
+
+@publishedAll
+@released
+@see TDataTypeWithPriority */
+const TInt32 KDataTypePriorityHigh=10000;
+
+/** A priority value associated with a data (MIME) type. Associating an application 
+with a data type at this priority means that the data type is the primary 
+type for that application. For example, "text/plain" files for a text editor.
+
+@publishedAll
+@released
+@see TDataTypeWithPriority */
+const TInt32 KDataTypePriorityNormal=0;
+
+/** A priority value associated with a data (MIME) type. Associating an application 
+with a data type at this priority means that the data type is a secondary 
+type for that application. For example, "text/plain" files for a web browser.
+
+@publishedAll
+@released
+@see TDataTypeWithPriority */
+const TInt32 KDataTypePriorityLow=-10000;
+
+/** A priority value associated with a data (MIME) type. Associating an application 
+with a data type at this priority means that the data type is a last resort 
+for that application. Use sparingly.
+
+@publishedAll
+@released
+@see TDataTypeWithPriority */
+const TInt32 KDataTypePriorityLastResort=-20000;
+
+/** Reserved for future use. 
+
+@publishedAll
+@released */
+const TInt32 KDataTypePriorityNotSupported=KMinTInt16;
+
+/** This is a special priority that overrides any user settings. Applications must
+have EWriteDeviceData to use this priority. If they have not then they will be
+downgraded to KDataTypePriorityNormal.
+
+@publishedPartner
+@released
+@see TDataTypeWithPriority */
+const TInt32 KDataTypePrioritySystem = 0xFFF9;
+
+
+/** A data type.
+
+The class maintains a string that describes the data type and an associated 
+UID.
+
+A data type is also referred to as a MIME type. 
+
+@publishedAll
+@released */
+class TDataType
+	{
+public:
+	 TDataType();
+	 ~TDataType();
+	 TDataType(const PtrC8* aDataType);
+     Ptr8* GetDataType();
+	 
+private:
+	Ptr8* iDataType;
+	TUid iUid;
+	};
+
+class TDataTypeWithPriority
+/** A data (MIME) type and a priority value for that data type.
+
+The priority is used to resolve the current preferred handler of a data type, 
+in the absence of any user preferences. An AIF file can associate an application 
+with a data (MIME) type that is not native to Symbian OS. A priority value 
+can be specified that allows the device to choose the highest priority application 
+that can handle that data type.
+
+@publishedAll 
+@released 
+@see TDataType
+@see TDataTypePriority */
+	{
+public:
+	 TDataTypeWithPriority();
+	 TDataTypeWithPriority(const TDataType& aDataType, TDataTypePriority aPriority);
+
+public:
+	/** The data type. */
+	TDataType iDataType;
+	/** The priority value. */
+	TDataTypePriority iPriority;
+	};
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/apsecutils.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,139 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Security issues related methods used across apparc
+// 
+// apsecutils.cpp
+//
+
+#include "apsecutils.h"
+#include <stdlib.h> 
+#include <iostream.h> 
+#include <fstream>
+#include <string> 
+#include "parse.h"
+
+using namespace std;
+
+TUint32 CApaSecurityUtils::iCapabilities = 0;
+TUint32 CApaSecurityUtils::iSecureID = 0;
+
+/** 
+ * Determines whether an EXE SID is within the protected range\d
+ * 
+ * @param aSid The SID to check
+ * @return ETrue if it is protected
+ */
+inline TBool CApaSecurityUtils::HasWriteDeviceDataCap( const TUint32 aCapability )
+{
+     // If bit 6 is set then WriteDeviceData capability is enabled
+     return (aCapability & 0x20) ? 1 : 0;
+} 
+
+/** 
+ * Determines whether an EXE SID is within the protected range\d
+ * 
+ * @param aSid The SID to check
+ * @return ETrue if it is protected
+ */
+inline TBool CApaSecurityUtils::IsSidProtected( const TUint32 aSid )
+{
+     // If bit 31 is set then Sid is unprotected
+     return (aSid & 0x80000000) ? 0 : 1;
+} 
+
+TInt CApaSecurityUtils::GetInfo(std::string& aFilename)
+{
+	const TUint8 kHeaderSize= 4;
+	TUint8 header[kHeaderSize];
+
+	std::ifstream* iFileContents;	
+	iFileContents= new std::ifstream(aFilename.c_str(), std::ios::in|std::ios::binary);
+
+	if(!iFileContents->good())
+	{
+		if (iFileContents->is_open())
+		{
+			iFileContents->close();
+		}
+		if(iFileContents)
+			delete iFileContents;
+		return 1;
+	}
+	
+	TInt aPos=0x80;
+	// Seek to the offset specified by "aPos"
+	iFileContents->seekg(aPos, std::ios_base::beg);
+	iFileContents->read((char*)header, kHeaderSize); 
+	memcpy((TUint8*)&iSecureID,header,4);
+
+	aPos=0x88;
+	// Seek to the offset specified by "aPos"
+	iFileContents->seekg(aPos, std::ios_base::beg);
+	iFileContents->read((char*)header, kHeaderSize); 
+	memcpy((TUint8*)&iCapabilities,header,4);
+
+	if (iFileContents->is_open())
+	{
+		iFileContents->close();
+	}
+
+	if(iFileContents)
+		delete iFileContents;
+	
+	return 0;
+}
+
+/**
+ * Check if application has a WriteDeviceData capability
+ * and if it's SID is in the protected range
+ * 
+ * @param aAppFilename path to application exe file
+ * @param aHasWriteDeviceDataCap returns ETrue if app has WriteDeviceData cap
+ * @param aIsSidProtected returns ETrue if application SID is in the protected range
+ * @return KErrNone if succesful, error code otherwise
+ */
+TInt CApaSecurityUtils::CheckAppSecurity( const Ptr16 aAppFilename, 
+                                           TBool& aHasWriteDeviceDataCap, 
+                                           TBool& aIsSidProtected,
+                                           const std::string& aDerivedPath)
+
+{ 
+    aHasWriteDeviceDataCap = EFalse;
+    aIsSidProtected = EFalse;
+
+	std::string Filename = Ptr16ToString(&aAppFilename);
+	std::string Path(aDerivedPath);
+	Path.append("\\sys\\bin\\");
+	Path.append(Filename);
+	Path.append(".exe");
+	
+    TInt ret = CApaSecurityUtils::GetInfo(Path);
+
+    if ( KErrNone == ret )
+    {
+        if( HasWriteDeviceDataCap( TUint32( iCapabilities) ) )
+        {
+            aHasWriteDeviceDataCap = ETrue;
+        }
+
+        if( IsSidProtected( TUint32( iSecureID) ) )
+        {
+            aIsSidProtected = ETrue;
+        }
+    }
+
+    return ret;
+}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/apsecutils.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// apsecutils.h
+//
+
+/** 
+* @file apsecutils.h
+*
+* @internalComponent
+* @released
+*/
+
+#ifndef __APSECUTILS_H__
+#define __APSECUTILS_H__
+
+#include "commontypes.h"
+/** AppArc security utils.
+
+This is a set of security related methods for apparc internal usage.
+
+*/
+class CApaSecurityUtils
+    {
+public:
+    static TInt CheckAppSecurity( const Ptr16 aAppFilename, 
+                                           TBool& aHasWriteDeviceDataCap, 
+                                           TBool& aIsSidProtected,
+                                           const std::string& aDerivedPath);
+
+	static TInt GetInfo(std::string& aFilename);
+
+private:
+    inline static TBool IsSidProtected( const TUint32 aSid );
+	inline static TBool HasWriteDeviceDataCap( const TUint32 aCapability );
+
+private:
+	static TUint32 iCapabilities;
+	static TUint32 iSecureID;
+    };
+    
+#endif // __APSECUTILS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barsc2.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,137 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file barsc2.cpp
+*
+* @internalComponent
+* @released
+*/
+#include <iostream>
+#include <sstream>
+#include "barsc2.h"
+#include <string>
+
+CResourceFile::CResourceFile(const std::string& aName,TUint32 aFileOffset, TInt aFileSize)
+	{
+	// Creating the implementation instance with a placement new operator.
+	new (iImpl) RResourceFileImpl;
+	
+	// Open the resource file for reading.
+	Impl()->OpenL(aName, aFileOffset, aFileSize);
+	}
+
+
+CResourceFile::~CResourceFile()
+	{
+	RResourceFileImpl* impl = Impl();
+	impl->~RResourceFileImpl();
+	}
+
+
+Ptr8* CResourceFile::AllocReadL(const TInt& aResourceId)
+	{
+	return Impl()->AllocReadL(aResourceId);
+	}
+
+/** Initialises the offset value from the first resource.
+
+The function tests to catch cases where the first resource is not an RSS_SIGNATURE.
+It assumes that the first resource in the file consists of
+two 32-bit integers. The first integer contains the version number and
+the second is a self-referencing link whose value is the offset for
+the resources in the file, plus 1.This function must be called before
+calling Offset(), AllocReadL(), AllocReadLC() or ReadL().
+@leave The function leaves if this resource id is not in this
+resource file or the file is corrupted. */
+void CResourceFile::ConfirmSignatureL()
+	{
+	Impl()->ConfirmSignatureL();
+	}
+
+// Read Uid3 of Resource File
+TUid CResourceFile::ReadAppUidL()
+	{
+	// Unicode compressed RSC file will have 19 bytes header.
+	const TUint8 Read_Byte = 4;
+	TUint8 header[Read_Byte];
+	sTUid uid;
+		
+	// Read Uid3 of Resource File
+	Impl()->ReadL(8,header,Read_Byte);
+	// Get the Third UID
+	memcpy((TUint8*)&uid.iUid1,header,Read_Byte);
+
+	TUid iUid = {uid.iUid1};
+	return iUid;
+	}
+
+// Read Uid2 of Resource File
+TUid CResourceFile::ReadFileUidL()
+	{
+	// Unicode compressed RSC file will have 19 bytes header.
+	const TUint8 Read_Byte = 4;
+	TUint8 header[Read_Byte];
+	sTUid uid;
+		
+	// Read Uid3 of Resource File
+	Impl()->ReadL(4,header,Read_Byte);
+	// Get the Third UID
+	memcpy((TUint8*)&uid.iUid1,header,Read_Byte);
+
+	TUid iUid = {uid.iUid1};
+	return iUid;
+	}
+
+TBool CResourceFile::OwnsResourceId(const TInt& aResourceId) const
+	{
+	return Impl()->OwnsResourceId(aResourceId);
+	}
+
+
+RResourceFileImpl* CResourceFile::Impl()
+	{
+	return reinterpret_cast <RResourceFileImpl*> (iImpl);
+	}
+
+
+const RResourceFileImpl* CResourceFile::Impl() const
+	{
+	return reinterpret_cast <const RResourceFileImpl*> (iImpl);
+	}
+
+
+void CResourceFileException::Display() const 
+	{
+	std::ostringstream errDispStream;
+	errDispStream<<iValue;
+	errDispStream<<std::endl;
+
+// Note: Remove the following tow sentences after integrating with Interpretsis.	
+	std::string str = errDispStream.str();
+	std::cout<<str;
+
+//  Note: Put this when integrating with InterpretSis
+//	std::wstring finalMessage = Utf8ToUcs2( errDispStream.str() );
+//  LERROR( finalMessage );
+	}
+
+	/**
+	Get the exception message
+	*/
+std::string CResourceFileException::GetMsg()
+	{
+		return iValue;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barsc2.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,158 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file barsc2.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef __BARSC2_H__
+#define __BARSC2_H__
+
+#include <string>
+#include "barscimpl.h"
+
+class RResourceFileImpl;
+
+/**
+This class accesses a resource file and reads the resource data into a buffer.
+Interpretation of the data is achieved using the RResourceReader class.
+*/
+class CResourceFile 
+	{
+public:
+	/**
+	Initializes in place the implementation object and 
+	opens the resource file for reading.
+	@param aName Resource file name
+	@param aFileOffset Resource file offset
+	@param aFileSize Resource file size	
+	*/
+	CResourceFile(const std::string& aName, TUint32 aFileOffset, TInt aFileSize);
+	
+	/**
+	Cleanup the allocated memory
+	*/
+	~CResourceFile();
+	
+	/** 
+	Reads a resource into a heap and returns the correspoding pointer to it.
+	
+	Ownership of the allocated heap is passed to the caller who must destroy 
+	it when it is no longer needed.
+
+	The search for the resource uses the following algorithm:
+
+	@param aResourceId The numeric id of the resource to be read.
+	@return Pointer to the allocated heap memory containing the resource.
+	*/
+	Ptr8* AllocReadL(const TInt& aResourceId);
+
+	/** Initialises the offset value from the first resource.
+
+	The function assumes that the first resource in the file consists of
+	two 32-bit integers. The first integer contains the version number and
+	the second is a self-referencing link whose value is the offset for
+	the resources in the file, plus 1.This function must be called before
+	calling Offset(), AllocReadL(), AllocReadLC() or ReadL().
+
+	@param aSignature This argument value is not used by the function.
+	@leave The function leaves if this resource id is not in this
+	resource file or the file is corrupted. */
+	void ConfirmSignatureL();
+	
+	/** 
+	Tests whether the resource file owns the specified resource id.
+	@param aResourceId The resource id to test.
+	@return True, if the resource file owns the id, false otherwise.
+	*/
+	TBool OwnsResourceId(const TInt& aResourceId) const;
+
+	/** 
+	Reads Resource File Uid3.
+	@param  Void
+	@return Uid3 of Resource File.
+	*/
+
+	TUid ReadAppUidL();
+
+	/** 
+	Reads Resource File Uid2.
+	@param  Void
+	@return Uid2 of Resource File.
+	*/
+
+	TUid ReadFileUidL();
+	 
+private:
+	/**
+	prevent default copy constructor
+	*/
+	CResourceFile(const CResourceFile&);
+	/**
+	prevent default assignment operator
+	*/
+	CResourceFile& operator=(const CResourceFile&);
+	/** 
+	@return Non-const pointer to the implementation. 
+	*/
+	RResourceFileImpl* Impl();
+	/** 
+	@return Const pointer to the implementation. 
+	*/
+	const RResourceFileImpl* Impl() const;
+
+private:
+	enum
+		{
+		KRscFileSize = 24,
+		};
+	TUint8 iImpl[KRscFileSize];
+	};
+
+
+/**
+This class implements the exception handling mechanism
+required for resource file parsing.
+*/
+class CResourceFileException
+{
+public:
+
+	/**
+	Initializes the CResourceFileException class with the required
+	exception message.
+	@param aValue Exception message that is to be displayed.
+	*/
+	inline CResourceFileException(const std::string& aValue)
+							   :iValue(aValue)
+		{
+		}
+
+	/**
+	Displays the exception message
+	*/
+	void Display() const;
+
+	/**
+	Get the exception message
+	*/
+	std::string GetMsg();
+
+private:
+	std::string iValue;
+};
+
+#endif//__BARSC2_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barscimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,539 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file BaRscImpl.cpp
+*
+* @internalComponent
+* @released
+*/
+#include <iostream>
+#include <fstream>
+#include <cassert>
+#include <sys/stat.h>
+#include <sstream>
+#include "barsc2.h"
+#include "barscimpl.h"
+#include "ucmp.h"
+
+
+RResourceFileImpl::TExtra::TExtra():
+	iBitArrayOfResourcesContainingCompressedUnicode(NULL),
+	iFileOffset(0),
+	iFileSize(0)
+	{
+	}
+
+
+RResourceFileImpl::TExtra::~TExtra()
+	{
+	delete iBitArrayOfResourcesContainingCompressedUnicode;
+	}
+
+
+TInt32 RResourceFileImpl::TExtra::ContainsCompressedUnicode(const TInt& aRscIdx) const
+	{
+	assert(aRscIdx>=0);
+	
+	if (iBitArrayOfResourcesContainingCompressedUnicode==NULL)
+		{
+		return EFalse;
+		}
+	
+	TInt index = aRscIdx/8;
+	
+	return (iBitArrayOfResourcesContainingCompressedUnicode)[index]&(1<<(aRscIdx%8));
+	}
+
+
+RResourceFileImpl::RResourceFileImpl() :
+	iResourceContents(NULL),
+	iSizeOfLargestResourceWhenCompletelyUncompressed(0),
+	iIndex(0),
+	iOffset(0),
+	iExtra(NULL),
+	iFlagsAndNumberOfResources(0)
+	{
+	// Fixed class size - because of the BC reasons.
+	// RResourceFileImpl size must be the same as CResourceFile size.
+	enum
+		{
+		KRscFileImplSize = 24
+		};	
+	assert(sizeof(RResourceFileImpl) == KRscFileImplSize);
+
+	//Fixed "iOffset" position - because of the BC reasons.
+	assert(offsetof(RResourceFileImpl, iOffset)==12);
+	}
+
+
+RResourceFileImpl::~RResourceFileImpl()
+{
+	if(iResourceContents)
+	{
+		if (iResourceContents->is_open())
+		{
+			iResourceContents->close();
+		}
+		delete iResourceContents;
+	}
+	iSizeOfLargestResourceWhenCompletelyUncompressed=0;
+	delete iIndex;
+	iIndex=NULL;
+	if (iExtra)
+	{
+		delete iExtra;
+		iExtra=NULL;
+	}
+
+	iFlagsAndNumberOfResources=0;
+	iOffset=0;
+}
+
+
+void RResourceFileImpl::OpenL(
+						  const std::string& aName, 
+						  TUint32 aFileOffset, 
+						  TInt aFileSize)
+{
+	iResourceContents= new std::ifstream(aName.c_str(), std::ios::in|std::ios::binary);
+		
+	if(!iResourceContents->good())
+	{
+		std::string errMsg= "Unable to open RSC file. " + aName;
+		if (iResourceContents->is_open())
+			iResourceContents->close();
+		if(iResourceContents)
+			delete iResourceContents;
+		throw CResourceFileException(errMsg);
+	}
+
+	iExtra=new TExtra();
+	iExtra->iFileOffset = aFileOffset;
+	
+	TInt fileSize = 0;
+	if (aFileSize)
+		{
+		fileSize = aFileSize;
+		assert(fileSize > TInt(aFileOffset));
+		}
+	else
+		{
+		// Get the resource file size
+		struct stat resourceFileStats;
+    
+		if (stat(aName.c_str(),&resourceFileStats) == 0)
+			{
+			// The size of the file in bytes is in
+			// resourceFileStats.st_size
+			fileSize=resourceFileStats.st_size;
+			assert(fileSize > 0);
+			}   	
+		else
+			{
+			if (iResourceContents->is_open())
+					iResourceContents->close();		
+			std::string errMsg="Invalid RSC File";
+			throw CResourceFileException(errMsg);
+			}		
+		}
+	
+	iExtra->iFileSize = fileSize;	
+	
+	// Verify the header of the RSC and get the resource index
+	ReadHeaderAndResourceIndexL();
+}
+
+
+Ptr8* RResourceFileImpl::GetDecompressedResourceDataL(
+													const TInt& aResourceIndex,			
+													const TUint32& aFlags) 
+	{
+	const TInt positionOfResourceData= iIndex[aResourceIndex];
+	const TInt numberOfBytes= iIndex[aResourceIndex+1]-positionOfResourceData;
+	
+	assert(numberOfBytes >= 0);
+	
+	Ptr8* outputResourceData=new Ptr8(numberOfBytes);
+	ReadL(aFlags, positionOfResourceData, outputResourceData->GetPtr(), numberOfBytes);
+	outputResourceData->UpdateLength(numberOfBytes);
+	
+	return outputResourceData;
+	}
+
+
+Ptr8* RResourceFileImpl::AllocReadL(const TInt& aResourceId) 
+	{
+	
+	// Check if the resource id is present in the RSC file
+	if (!OwnsResourceId(aResourceId))
+		{
+		std::ostringstream errDispStream;
+		
+		errDispStream<<"Resource ID:";
+		errDispStream<<aResourceId;
+		errDispStream<<" is not present in the RSC file";
+		
+		throw CResourceFileException(errDispStream.str());
+		}
+	
+	//"-1" because the first resource has ID 0x*****001 (not 0x*****000)
+	TInt resourceIndex= (aResourceId & EIdBits)-1; 
+	assert(resourceIndex>=0);
+	
+	Ptr8* decompressedResourceData= 
+		GetDecompressedResourceDataL(
+								resourceIndex,
+								iFlagsAndNumberOfResources & static_cast<TUint32>(EAllFlags));
+	
+	// Return the resource data if its not unicode compressed.
+	if (!iExtra->ContainsCompressedUnicode(resourceIndex))
+		{
+		return decompressedResourceData;
+		}
+	
+	// Get the decompressed unicode data.
+	Ptr8* finalResourceData= DecompressUnicodeL(decompressedResourceData);	
+	
+	delete decompressedResourceData;	
+	return finalResourceData;	
+	}
+
+
+Ptr8* RResourceFileImpl::DecompressUnicodeL(const Ptr8* aInputResourceData) const
+	{
+	const TInt numberOfBytesInInput= aInputResourceData->GetLength();
+	assert(iSizeOfLargestResourceWhenCompletelyUncompressed>0);
+							
+	Ptr8* outputResourceData= new Ptr8(iSizeOfLargestResourceWhenCompletelyUncompressed);
+	
+	const TUint8* input= aInputResourceData->GetPtr();
+	TInt index=0;
+	
+	TBool decompressRun=ETrue;
+	while (1)
+		{
+		assert(index<numberOfBytesInInput);
+		
+		TInt runLength=input[index];
+		
+		// The run-length occupies a single byte if it is less than 128, 
+		// otherwise it occupies two bytes (in little-endian byte order), 
+		// with the most significant bit of the first byte set to non-zero 
+		//to indicate that the run-length occupies two bytes.
+		if (runLength & 0x80)
+			{
+			++index;
+			if (index>=numberOfBytesInInput)
+				{
+				std::string errMsg="Invalid Rsc File";
+				throw CResourceFileException(errMsg);
+				}
+			runLength &= ~0x80;
+			runLength <<= 8;
+			runLength |= input[index];
+			}
+		++index;
+		if (runLength>0)
+			{			
+			if (decompressRun)
+				{
+				AppendDecompressedUnicodeL(
+										outputResourceData,				
+										const_cast<unsigned char *>(input+index),
+										runLength);
+				}
+			else
+				{
+				assert(
+					(outputResourceData->GetLength() + runLength) <= 
+					iSizeOfLargestResourceWhenCompletelyUncompressed);
+				
+				memcpy((char*)(outputResourceData->GetPtr()+outputResourceData->GetLength()),(char*)(input+index),runLength);				
+				outputResourceData->UpdateLength(runLength);
+				}
+			index+=runLength;
+			}
+		if (index>numberOfBytesInInput)
+			{
+			std::string errMsg="Invalid Rsc File";
+			throw CResourceFileException(errMsg);
+			}
+		if (index>=numberOfBytesInInput)
+			{
+			break;
+			}
+			decompressRun=!decompressRun;
+		}	
+	return outputResourceData;
+	}
+
+
+
+/** @internalComponent
+@return The first resource record.
+@panic Some BAFL panic codes, if the file is corrupted.
+@leave KErrCorrupt The file is corrupted.
+Some other error codes are possible too.
+The method could panic or leave depending on the state of
+iAssertObj member of RResourceFileImpl::TExtra class. */
+RResourceFileImpl::SSigRecord RResourceFileImpl::FirstRecordL() const
+	{
+	// Added to support reading of rel 6.x resource files.
+	// rel 6.x files do not have signatures!
+	Ptr8* const firstResource=AllocReadL(1);
+
+	// Basic check to test if the signature is of the correct size.
+	if (firstResource->GetLength()!= sizeof(SSigRecord))
+	{
+		std::string errMsg="Invalid RSS Signature";
+		throw CResourceFileException(errMsg);
+	}
+	SSigRecord sigRecord = *reinterpret_cast<const SSigRecord*>(firstResource->GetPtr());
+	delete firstResource;
+	return sigRecord;
+}
+
+/** Initialises the offset value from the first resource.
+
+The function tests to catch cases where the first resource is not an RSS_SIGNATURE.
+It assumes that the first resource in the file consists of
+two 32-bit integers. The first integer contains the version number and
+the second is a self-referencing link whose value is the offset for
+the resources in the file, plus 1.This function must be called before
+calling Offset(), AllocReadL(), AllocReadLC() or ReadL().
+
+@see Offset()
+@see AllocReadL()
+@see AllocReadLC() 
+@see ReadL()
+@internalComponent
+@pre OpenL() is called.
+@panic Some BAFL panic codes, if the file is corrupted.
+@leave KErrCorrupt The file is corrupted.
+Some other error codes are possible too.
+The method could panic or leave depending on the state of
+iAssertObj member of RResourceFileImpl::TExtra class. */
+void RResourceFileImpl::ConfirmSignatureL()
+{
+	// Added to support reading of rel 6.x resource files.
+	SSigRecord firstRecord=FirstRecordL();
+
+	// If the resource offset does not correspond to the first resource
+	// this is not a resource signature.
+	if ((firstRecord.offset & EIdBits) != 1)
+	{
+		std::string errMsg="Failed : Invalid RSS Signature";
+		throw CResourceFileException(errMsg);
+	}
+	iOffset=(firstRecord.offset & EOffsetBits);
+}
+
+void RResourceFileImpl::AppendDecompressedUnicodeL(
+												   Ptr8* aBuffer,
+												   const TUint8*  aCompressedUnicode,
+												   const TInt& aLengthOfCompressedUnicode) const
+	{
+	
+	if (aLengthOfCompressedUnicode>0)
+		{
+		TUint8* startOfDecompressedUnicode= aBuffer->GetPtr() + aBuffer->GetLength();
+		
+		if (reinterpret_cast<TUint32>(startOfDecompressedUnicode) & 0x01)
+			{			
+			TUint8 padChar = 0xab;
+			memcpy(startOfDecompressedUnicode,&padChar,1);
+			++startOfDecompressedUnicode;
+			aBuffer->UpdateLength(1);
+			}
+		
+		const TInt maximumOutputLength= (
+			iSizeOfLargestResourceWhenCompletelyUncompressed - (aBuffer->GetLength()))/2; 
+		
+		TMemoryUnicodeSink decompressedUnicode(reinterpret_cast<TUint16*>(startOfDecompressedUnicode));
+		
+		TInt lengthOfDecompressedUnicode;
+		TInt numberOfInputBytesConsumed;
+		TUnicodeExpander unicodeExpander;
+		
+		unicodeExpander.ExpandL(decompressedUnicode,
+								aCompressedUnicode,
+								maximumOutputLength,
+								aLengthOfCompressedUnicode,
+								&lengthOfDecompressedUnicode,
+								&numberOfInputBytesConsumed);
+		TInt temp;
+		unicodeExpander.FlushL(decompressedUnicode,maximumOutputLength,temp);
+		lengthOfDecompressedUnicode+=temp;
+		aBuffer->UpdateLength(lengthOfDecompressedUnicode*2);
+		
+		assert(numberOfInputBytesConsumed == aLengthOfCompressedUnicode);		
+		}
+	}
+
+
+TBool RResourceFileImpl::OwnsResourceId(const TInt& aResourceId) const
+	{ 
+	// Checks whether Rsc file owns the resource:
+	// does so if offset is 0, or matches that given, 
+	// and id is in index.
+	const TInt offset=(aResourceId & EOffsetBits);
+//	if ((offset!=0) && (offset!=iOffset))
+//		{
+//		return EFalse;
+//		}
+	
+	const TInt resourceIndex=(aResourceId & EIdBits)-1;
+	TInt numberOfResources=(iFlagsAndNumberOfResources & ~EAllFlags);
+	
+	return (resourceIndex >= 0) && (resourceIndex < numberOfResources);
+	}
+
+
+void RResourceFileImpl::ReadL(
+							const TUint32& aFlags, 
+							TInt aPos,
+							TUint8* aData,
+							const TInt& aLength) 
+	{
+	aPos += iExtra->iFileOffset;
+	
+	assert(aPos >= iExtra->iFileOffset);
+	assert(aLength >= 0);
+	assert((aPos + aLength) <= (iExtra->iFileOffset + iExtra->iFileSize));	
+	
+	// Seek to the offset specified by "aPos"
+	iResourceContents->seekg(aPos, std::ios_base::beg);
+	iResourceContents->read((char*)aData, aLength);		
+	}
+
+
+void RResourceFileImpl::ReadL(TInt aPos, TUint8* aData, const TInt& aLength) 
+	{
+	ReadL(iFlagsAndNumberOfResources & static_cast<TUint32>(EAllFlags),aPos,aData,aLength);
+	}
+
+
+TInt RResourceFileImpl::LittleEndianTwoByteInteger(
+													TUint8* aBuffer,
+													const TInt& aIndexOfFirstByte) const
+	{
+	return aBuffer[aIndexOfFirstByte] | (aBuffer[aIndexOfFirstByte+1]<<8);
+	}
+
+
+void RResourceFileImpl::ReadHeaderAndResourceIndexL()
+	{
+	
+	// Unicode compressed RSC file will have 19 bytes header.
+	const TUint8 kHeaderSize= 19;
+	TUint8 header[kHeaderSize];
+			
+	sTUid uid;
+	
+	// Verify the header of the RSC file.
+	if(iExtra->iFileSize >= kHeaderSize)
+		{
+		
+		// Get the RSC header
+		ReadL(0,0,header,kHeaderSize);
+		// Get the first UID
+		memcpy((TUint8*)&uid.iUid1,header,4);
+		
+		// First uid of unicode compressed RSC is "0x101f4a6b"
+		TUint32 unicodeCompressedFirstUid = 0x101f4a6b;
+		
+		if (uid.iUid1 == unicodeCompressedFirstUid)
+			{
+			iFlagsAndNumberOfResources |= EFlagPotentiallyContainsCompressedUnicode;
+			iSizeOfLargestResourceWhenCompletelyUncompressed=	LittleEndianTwoByteInteger(header,16+1);
+			}
+		else
+			{
+				if (iResourceContents->is_open())
+						iResourceContents->close();
+			std::string errMsg="Failed : Unsupported RSC file type";
+			throw CResourceFileException(errMsg);
+			}
+		}
+		
+		TInt numberOfResources= 0;
+		TUint8* bitArrayOfResourcesContainingCompressedUnicode= NULL;
+		
+		if (iFlagsAndNumberOfResources & EFlagPotentiallyContainsCompressedUnicode)
+		{
+			// Cache the resource-index (in iIndex) to minimize disk access.		
+			const TInt KMaximumNumberOfBytesCached= 256;
+			TUint8 cache[KMaximumNumberOfBytesCached];
+			const TInt numberOfBytesCached=
+				((iExtra->iFileSize>KMaximumNumberOfBytesCached) ? KMaximumNumberOfBytesCached : iExtra->iFileSize);
+			
+			ReadL(iExtra->iFileSize-numberOfBytesCached, cache, numberOfBytesCached);
+			
+			const TInt positionOfStartOfIndex=
+				((cache[numberOfBytesCached-1]<<8) | cache[numberOfBytesCached-2]);
+			const TInt numberOfBytesOfIndex=iExtra->iFileSize-positionOfStartOfIndex;
+			
+			assert(numberOfBytesOfIndex%2==0);
+			assert(numberOfBytesOfIndex>=0);
+			
+			const TInt numberOfBytesOfIndexStillToRetrieve = numberOfBytesOfIndex-numberOfBytesCached;
+			
+			if (numberOfBytesOfIndexStillToRetrieve<=0)
+				{
+				iIndex= new TUint16[numberOfBytesOfIndex/2];
+				memcpy(iIndex, cache+(numberOfBytesCached-numberOfBytesOfIndex), numberOfBytesOfIndex);
+				}
+			else
+				{
+				TUint16* index= new TUint16(numberOfBytesOfIndex/2);			
+				ReadL(positionOfStartOfIndex, reinterpret_cast<TUint8*>(index), numberOfBytesOfIndexStillToRetrieve);
+				memcpy((index+numberOfBytesOfIndexStillToRetrieve),cache,numberOfBytesCached); 		
+
+				iIndex=index;			
+				}
+
+			//"-1" because the last thing in the index (which is in fact the last thing in the 
+			//file itself) is the position of the start of the index which is therefore not 
+			//pointing to a resource
+			numberOfResources=(numberOfBytesOfIndex/2) - 1; 
+			
+			if (numberOfResources <= 0)
+				{
+				if (iResourceContents->is_open())
+						iResourceContents->close();
+				std::string errMsg="Failed : Invalid RSC file.";
+				throw CResourceFileException(errMsg);
+				}
+				
+			const TInt lengthOfBitArrayInBytes=(numberOfResources+7)/8;
+			bitArrayOfResourcesContainingCompressedUnicode=
+								new TUint8(lengthOfBitArrayInBytes);
+			
+			//"16+1+2": 16 bytes of checked-UID + 1 byte of flags (these flags are for a 
+			//dictionary-compressing program's use rather than directly for Bafl's use, 
+			//so we ignore them) + 2 bytes containing the size of the largest resource when 
+			//uncompressed
+			ReadL(16+1+2,bitArrayOfResourcesContainingCompressedUnicode,lengthOfBitArrayInBytes); 
+		
+		}
+		
+		assert((numberOfResources & EAllFlags)==0);
+		assert((iFlagsAndNumberOfResources & ~EAllFlags)==0);
+		
+		iFlagsAndNumberOfResources |= (numberOfResources & ~EAllFlags);
+		iExtra->iUid = uid;
+		iExtra->iBitArrayOfResourcesContainingCompressedUnicode = bitArrayOfResourcesContainingCompressedUnicode;
+			
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barscimpl.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,216 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/** 
+* @file barscimpl.h
+*
+* @internalComponent
+* @released
+*/
+
+#ifndef __BARSCIMPL_H__
+#define __BARSCIMPL_H__
+
+#include <string>
+#include "commontypes.h"
+
+/** 
+Accesses a resource file and reads the resource data into a buffer.
+It is the implementation class for CResourceFile class.
+*/
+class RResourceFileImpl
+	{
+
+public:
+	RResourceFileImpl();
+	~RResourceFileImpl();
+	/** 
+	Opens the resource file reader.
+	The resource file reader must be opened before reading resources.
+	@param aName name of the RSC file.
+	@param aFileOffset RSC file offset 
+	@param aFileSize RSC file size
+	*/
+	void OpenL(const std::string& aName, TUint32 aFileOffset=0, TInt aFileSize=0);
+	/** 
+	Reads a resource after allocating heap memory for it.
+	Ownership of the allocated heap is passes to the caller who must 
+	free it.	
+	@param aResourceId The numeric id of the resource to be read.
+	@return Pointer to the heap containing the resource.
+	*/
+	Ptr8* AllocReadL(const TInt& aResourceId);
+
+	/** Initialises the offset value from the first resource.
+
+	The function tests to catch cases where the first resource is not an RSS_SIGNATURE.
+	It assumes that the first resource in the file consists of
+	two 32-bit integers. The first integer contains the version number and
+	the second is a self-referencing link whose value is the offset for
+	the resources in the file, plus 1.This function must be called before
+	calling Offset(), AllocReadL(), AllocReadLC() or ReadL().
+	*/
+	void ConfirmSignatureL();
+	
+	/** 
+	Tests whether the resource file owns the specified resource id.
+	@param aResourceId The resource id to test.
+	@return True, if the resource file owns the id, false otherwise.
+	*/
+	TBool OwnsResourceId(const TInt& aResourceId) const;
+
+	/** 
+	Function to read specified bytes from the RSC file
+	@param aPos Offset from where to begin reading
+	@param aData Buffer to store read values
+	@param aLength Length of the bytes to be read.
+	*/
+	void ReadL(TInt aPos,TUint8* aData,const TInt& aLength) ;
+
+
+private:
+	struct SSigRecord
+		{
+		TInt signature;
+		TInt offset;
+		};
+  enum
+		{
+		EFlagIsRomFile																=0x80000000,
+		EFlagPotentiallyContainsCompressedUnicode									=0x40000000,
+		EFlagDictionaryCompressed													=0x20000000,
+		EFlagThirdUidIsOffset														=0x10000000,
+		EFlagGenerate_RSS_SIGNATURE_ForFirstUserResource							=0x08000000,
+		EFlagFirstResourceIsGeneratedBitArrayOfResourcesContainingCompressedUnicode	=0x04000000,
+		EFlagCalypsoFileFormat														=0x02000000,
+		EFlagIsBufferRscFile														=0x01000000,
+		EAllFlags																	=0xff000000
+		};
+	enum
+		{
+		EOffsetBits	=0xfffff000,
+		EIdBits		=0x00000fff
+		};
+
+	class TExtra;
+
+
+private:	
+	/** 
+	Function to read specified bytes from the RSC file
+	@param aFlags Integer conatainig no of resource and status flags.
+	@param aPos Offset from where to begin reading
+	@param aData Buffer to store read values
+	@param aLength Length of the bytes to be read.
+	*/
+	void ReadL(const TUint32& aFlags, TInt aPos, TUint8* aData, const TInt& aLength);
+
+	/** @internalComponent
+	@return The first resource record.
+	@panic Some BAFL panic codes, if the file is corrupted.
+	@leave KErrCorrupt The file is corrupted.
+	Some other error codes are possible too.
+	The method could panic or leave depending on the state of
+	iAssertObj member of RResourceFileImpl::TExtra class. */
+	SSigRecord FirstRecordL() const;
+
+	
+	/** 
+	Function to retrieve the header and 
+	resource index information of the RSC file.
+	*/
+	void ReadHeaderAndResourceIndexL();
+	
+	/** 
+	The method will decomress the unicode data (aCompressedUnicode argument) and append
+	the decompressed data to the end of aBuffer (aBuffer argument).
+
+	@param aBuffer Destination buffer.
+	@param aCompressedUnicode Pointer to compressed unicode data.
+	@param aLengthOfCompressedUnicode Length of compressed unicode data.
+	*/
+	void AppendDecompressedUnicodeL(
+								Ptr8* aBuffer,
+								const TUint8*  aCompressedUnicode,
+								const TInt& aLengthOfCompressedUnicode) const;
+	/** 
+	The method will decompress the unicode data (aInputResourceData argument), allocate enough
+	memory from the heap for the decompressed data, copy the data there and return a pointer
+	to the decompressed data.
+	The method doesn't own the allocated heap memory for the decompressed data. It's a caller
+	responsibility to deallocate the allocated memory.
+	@param aInputResourceData Compressed data.
+	@return Pointer to decompressed data 
+	*/
+	Ptr8* DecompressUnicodeL(const Ptr8* aInputResourceData) const;
+	
+	/**
+	Get the two bytes(in Little Endian format) from the specified buffer
+	@param aBuffer Buffer address from which 2-bytes are to be achieved.
+	@param aIndexOfFirstByte Offset of the first byte to be retrieved from the
+           buffer.
+	@return 2-bytes read from the buffer.
+	*/
+	TInt LittleEndianTwoByteInteger(TUint8* aBuffer,const TInt& aIndexOfFirstByte) const;
+	Ptr8* GetDecompressedResourceDataL(
+									const TInt& aResourceIndex,			
+									const TUint32& aFlags);
+
+private:
+	std::ifstream* iResourceContents;	
+	TInt iSizeOfLargestResourceWhenCompletelyUncompressed;
+	// An array of (unsigned) 16-bit file-positions
+	TUint16* iIndex; 
+	TInt iOffset; 
+	TExtra* iExtra;
+	TUint32 iFlagsAndNumberOfResources;
+	};
+
+
+/** 
+Stores the RSC filesize, offset and the bit-array 
+representing resources containing compressed unicode.
+*/
+class RResourceFileImpl::TExtra
+	{
+
+public:
+	TExtra();
+	~TExtra();
+	/**
+	Finds whether the specified resource contain compressed unicode
+	@param aRscIdx Resource Index
+	@return Status of whether the resource is actually present or not.
+	*/
+	TInt32 ContainsCompressedUnicode(const TInt& aRscIdx) const;
+
+private:
+	// Prevent default copy constructor
+	TExtra(const TExtra&);
+	// Prevent default "=" operator
+	TExtra& operator=(const TExtra&);
+
+public:
+	// RSC file UID
+	sTUid iUid;
+	// An array of bits, one for each resource in the resource file
+	TUint8* iBitArrayOfResourcesContainingCompressedUnicode; 
+	// Offset of RSC chunk
+	TInt iFileOffset;	
+	// RSC file size 
+	TUint32 iFileSize;		
+	};
+
+#endif//__BARSCIMPL_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barsread2.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,346 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Resource reader
+// 
+/** 
+* @file barsread2.cpp
+*
+* @internalComponent
+* @released
+*/
+#include <iostream>
+#include <cassert>
+#include "barsc2.h"
+#include "barsread2.h"
+#include "barsreadimpl.h"
+
+/** It creates the implementation in place - iImpl array,
+and sets the default.
+*/
+RResourceReader::RResourceReader() :
+	iRscBuffer(NULL)
+	{
+	new (iImpl) TResourceReaderImpl;
+	}
+
+/** The method calls RResourceReader::Close() method to release 
+allocated by the instance resources.
+*/
+RResourceReader::~RResourceReader()
+	{
+	Close();
+	}
+
+/** 
+Sets the buffer containing the resource data.
+
+The current position within the buffer is set to the start of the buffer so 
+that subsequent calls to the interpreting functions, for example ReadInt8L(), 
+start at the beginning of this buffer.
+@param aRscFile A pointer to the CResourceFile object, used as a resource data supplier.
+@param aResourceId Numeric id of the resource to be read.
+*/
+void RResourceReader::OpenL(CResourceFile* aRscFile, TInt aResourceId)
+{
+	if (aRscFile)
+	{
+		Close();
+		iRscBuffer = aRscFile->AllocReadL(aResourceId);
+		Impl()->SetBuffer(iRscBuffer);
+	}
+	else
+	{
+		std::string errMsg="Failed : Invalid Argument : CResourceFile* ";
+		throw CResourceFileException(errMsg);
+	}
+}
+
+/** 
+Destroys the buffer containing the resource data.
+
+Open() method should be called if you want to set
+the buffer and current position again.
+
+If a one or more copies of the same RResourceReader object exist - they share the same 
+resource data buffer. So destroying the RResourceReader object you will destroy the
+shared resource data buffer.
+
+@post Buffer pointer is set to NULL.
+@post Buffer current position pointer is set to NULL. 
+*/
+void RResourceReader::Close()
+	{
+	delete iRscBuffer;
+	iRscBuffer = NULL;
+	Impl()->ResetBuffer();
+	}
+
+/** Interprets the data at the current buffer position as leading byte count data 
+and constructs an 8 bit non modifiable pointer to represent this data.
+
+The data is interpreted as:
+
+a byte value defining the number of text characters or the length of binary 
+data (the resource string/binary data length is limited to 255 characters max)
+
+followed by:
+
+the 8 bit text characters or binary data.
+
+If the value of the leading byte is zero, calling Length() on the returned 
+PtrC8 returns zero.
+
+The current position within the resource buffer is updated.
+
+Use this explicit 8 bit variant when the resource contains binary data. If 
+the resource contains text, then use the build independent variant ReadTPtrCL().
+
+In general, this type of resource data corresponds to one of the following:
+
+a LTEXT type in a resource STRUCT declaration.
+
+a variable length array within a STRUCT declaration which includes the LEN 
+BYTE keywords.
+
+@pre Open() is called to initialize RResourceReader data members.
+@return 8bit non modifiable pointer representing
+the data following the leading byte count at the
+current position within the resource buffer.
+@post Current buffer position is updated.
+@leave KErrEof The new buffer position is beyond the buffer end. */
+PtrC8* RResourceReader::ReadTPtrC8L()
+	{
+	return Impl()->ReadTPtrC8L();
+	}
+
+/** Interprets the data at the current buffer position as leading byte count data 
+and constructs a 16 bit non modifiable pointer to represent this data.
+
+The data is interpreted as:
+
+a byte value defining the number of 16 bit text characters
+(the resource string/binary data length is limited to 255 characters max)
+
+followed by:
+
+the 16 bit text characters.
+
+If the value of the leading byte is zero, calling Length() on the returned 
+PtrC16 returns zero.
+
+The current position within the resource buffer is updated.
+
+Do not use this explicit 16 bit variant when the resource contains binary 
+data; use the explicit 8 bit variant instead. If the resource contains text, 
+use the build independent variant ReadTPtrCL().
+
+@pre Open() is called to initialize RResourceReader data members.
+@return 16 bit non modifiable pointer representing
+the data following the leading byte count at the
+current position within the resource buffer.
+@post Current buffer position is updated.
+@leave KErrCorrupt The new buffer position is beyond the buffer end. */
+
+PtrC16* RResourceReader::ReadTPtrC16L()
+	{
+	return Impl()->ReadTPtrC16L();
+	}
+
+
+/** Interprets the data at the current buffer position as a TInt8 type and returns 
+the value as a TInt.
+
+The current position within the resource buffer is updated.
+
+In general, a TInt8 corresponds to a BYTE type in a resource STRUCT declaration.
+
+Note that in Symbian OS, a TInt is at least as big as a TInt8.
+
+@pre Open() is called to initialize RResourceReader data members.
+@return The TInt8 value taken from the resource buffer.
+@post Current buffer position is updated.
+@leave KErrEof The new buffer position is beyond the buffer end. */
+TInt RResourceReader::ReadInt8L()
+    {
+	return Impl()->ReadInt8L();
+    }
+
+/** Interprets the data at the current buffer position as a TUint8 type and returns 
+the value as a TUint.
+
+The current position within the resource buffer is updated.
+
+In general, a TUint8 corresponds to a BYTE type in a resource STRUCT declaration.
+
+Note that in Symbian OS, a TUint is at least as big as a TUint8.
+
+@pre Open() is called to initialize RResourceReader data members.
+@return The TUint8 value taken from the resource buffer.
+@post Current buffer position is updated.
+@leave KErrEof The new buffer position is beyond the buffer end. */
+TUint32 RResourceReader::ReadUint8L()
+    {
+	return Impl()->ReadUint8L();
+    }
+
+/** Interprets the data at the current buffer position as a TInt16 type and returns 
+the value as a TInt.
+
+The current position within the resource buffer is updated.
+
+In general, a TInt16 corresponds to a WORD type in a resource STRUCT declaration.
+
+Note that in Symbian OS, a TInt is at least as big as a TInt16.
+
+@pre Open() is called to initialize RResourceReader data members.
+@return The TInt16 value taken from the resource buffer.
+@post Current buffer position is updated.
+@leave KErrEof The new buffer position is beyond the buffer end. */
+TInt RResourceReader::ReadInt16L()
+    {
+	return Impl()->ReadInt16L();
+    }
+
+
+/** Interprets the data at the current buffer position as a TInt32 type and returns 
+the value as a TInt.
+
+The current position within the resource buffer is updated.
+
+In general, a TInt32 corresponds to a LONG type in a resource STRUCT declaration.
+
+Note that in Symbian OS, TInt and TInt32 are the same size.
+
+@pre Open() is called to initialize RResourceReader data members.
+@return The TInt32 value taken from the resource buffer.
+@post Current buffer position is updated.
+@leave KErrEof The new buffer position is beyond the buffer end. */
+TInt RResourceReader::ReadInt32L()
+    {
+	return Impl()->ReadInt32L();
+    }
+
+/** Interprets the data at the current buffer position as a TUint32 type and returns 
+the value as a TUint.
+
+The current position within the resource buffer is updated.
+
+In general, a TUint32 corresponds to a LONG type in a resource STRUCT declaration.
+
+Note that in Symbian OS a TUint is the same size as a TUint32.
+
+@pre Open() is called to initialize RResourceReader data members.
+@return The TUint32 value taken from the resource buffer.
+@post Current buffer position is updated.
+@leave KErrEof The new buffer position is beyond the buffer end. */
+TUint32 RResourceReader::ReadUint32L()
+    {
+	return Impl()->ReadUint32L();
+    }
+
+/** Copies a specified length of data from the resource buffer, starting at the 
+current position within the buffer, into the location pointed to by a specified 
+pointer. No assumption is made about the type of data at being read.
+
+The current position within the resource buffer is updated.
+
+@pre Open() is called to initialize RResourceReader data members.
+@param aPtr Pointer to the target location for data copied from the resource buffer.
+@param aLength The length of data to be copied from the resource buffer.
+@post Current buffer position is updated.
+@leave KErrEof The new buffer position is beyond the buffer end. */
+void RResourceReader::ReadL(TAny* aPtr,TInt aLength)
+    {
+	Impl()->ReadL(aPtr,aLength);
+    }
+
+/** Interprets the data at the current buffer position as leading byte count data 
+and constructs a build independent heap buffer containing a copy of this data.
+
+The data is interpreted as:
+
+a byte value defining the number of text characters or the length of binary 
+data (the resource string/binary data length is limited to 255 characters max)
+
+followed by:
+
+the text characters or binary data. This resource data is interpreted as either 
+8 bit or 16 bit, depending on the build.
+
+If the value of the leading byte is zero, the function assumes that no data 
+follows the leading byte and returns a NULL pointer.
+
+The current position within the resource buffer is updated.
+
+Use this build independent variant when the resource contains text. If the 
+resource contains binary data, use the explicit 8 bit variant ReadHBufC8L().
+
+@pre Open() is called to initialize RResourceReader data members.
+@return Pointer to the heap buffer containing a copy of
+the data following the leading byte count at the
+current position within the resource buffer. The
+pointer can be NULL.
+@post Current buffer position is updated.
+@leave KErrCorrupt The resulting position lies beyond the end of the resource buffer. */
+Ptr16* RResourceReader::ReadHBufCL()
+    {
+	return Impl()->ReadHBufCL();
+	}
+
+/** Interprets the data at the current buffer position as leading byte count data 
+and constructs a non modifiable pointer to represent this data.
+
+The data is interpreted as:
+
+a byte value defining the number of text characters or the length of binary 
+data (the resource string/binary data length is limited to 255 characters max)
+
+followed by:
+
+the text characters or binary data. This resource data is interpreted as either 
+8 bit or 16 bit, depending on the build.
+
+If the value of the leading byte is zero, calling Length() on the returned 
+TPtrC returns zero.
+
+The current position within the resource buffer is updated.
+
+Use this build independent variant when the resource contains text. If the 
+resource contains binary data, use the explicit 8 bit variant ReadTPtrC8L().
+
+@pre Open() is called to initialize RResourceReader data members.
+@return Non modifiable pointer representing the
+data following the leading byte count of the element
+at the specified position within the array.
+@post Current buffer position is updated.
+@leave KErrCorrupt The resulting position lies beyond the end of the resource buffer. */
+PtrC16* RResourceReader::ReadTPtrCL()
+    {
+	return ReadTPtrC16L();
+	}
+
+/** @internalComponent
+@return Non-const pointer to the implementation object. */
+TResourceReaderImpl* RResourceReader::Impl()
+	{
+	return reinterpret_cast <TResourceReaderImpl*> (iImpl);
+	}
+
+/** @internalComponent
+@return Const pointer to the implementation object. */
+const TResourceReaderImpl* RResourceReader::Impl() const
+	{
+	return reinterpret_cast <const TResourceReaderImpl*> (iImpl);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barsread2.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,89 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file barsread2.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef __BARSREAD2_H__
+#define __BARSREAD2_H__
+
+#include "commontypes.h"
+
+//Forward declarations
+class TResourceReaderImpl;
+class CResourceFile;
+
+/** Interprets resource data read from a resource file.
+
+To use an instance of this class, pass the CResourceFile object containing the resource 
+data with aResourceId ID to it, by calling OpenL() or OpenLC(). Close the reader
+calling Close() after finishing with the resource.
+
+The current position within the buffer is always maintained and any request 
+for data is always supplied from the current position. The current position 
+is always updated .
+
+Expected behaviour when assignment operator or copy constructor is called:
+The class doesn't have assignment operator and copy constructor, so the compiler generated
+ones will be used. The buffer used by the source class instance will be shared with the 
+destination class instance. However source and destination instances will have their own 
+current position pointers, both pointed initially to the same buffer position.
+
+@publishedAll
+@released
+@see CResourceFile */
+class RResourceReader
+	{
+public:
+	 RResourceReader();
+	 ~RResourceReader();
+	 void	 OpenL(CResourceFile* aRscFile, TInt aResourceId);
+	 void	 Close();
+
+    // Read counted strings into allocated buffer
+     Ptr16*	 ReadHBufCL();
+
+	 // Build pointer from a counted string
+     PtrC16* ReadTPtrCL();
+     PtrC8*  ReadTPtrC8L();
+     PtrC16* ReadTPtrC16L();
+
+     TInt	 ReadInt8L();
+     TUint32 ReadUint8L();
+     TInt	 ReadInt16L();
+	 TInt	 ReadInt32L();
+     TUint32 ReadUint32L();
+
+     void	 ReadL(TAny* aPtr,TInt aLength);
+
+private:
+	TResourceReaderImpl* Impl();
+	const TResourceReaderImpl* Impl() const;
+private:
+	//Size of the RResourceReader implementation.
+	//It should be 12 because of the BC reasons.
+	//That's the size of the implementation class,
+	//which implements TResourceReader functionality too.
+	enum
+		{
+		KRsReaderSize = 8
+		};
+	TUint8 iImpl[KRsReaderSize];
+	Ptr8* iRscBuffer;
+	};
+
+#endif//__BARSREAD2_H__
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barsreadimpl.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,438 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Resource reader
+// 
+//
+/** 
+* @file BaRsReadImpl.cpp
+*
+* @internalComponent
+* @released
+*/
+#include <iostream>
+#include <cassert>
+#include <string>
+#include "barsreadimpl.h"
+#include "barsc2.h"
+
+#define REINTERPRET_CAST(type,exp) (reinterpret_cast<type>(exp))
+
+/** @internalComponent
+An error will be issued at compile time if the class size is not KRsReaderImplSize. */
+TResourceReaderImpl::TResourceReaderImpl() :
+    iBuffer(NULL),
+    iCurrentPtr(NULL)
+	{
+	//TResourceReaderImpl size. It should be 8 because of the BC reasons.
+	//8 is the size of TResourceReader class.
+	enum
+		{
+			KRsReaderImplSize = 8
+		};
+	assert(sizeof(TResourceReaderImpl) == KRsReaderImplSize);
+	}
+
+/** Sets the buffer containing the resource data.
+
+The current position within the buffer is set to the start of the buffer so 
+that subsequent calls to the interpreting functions, for example ReadInt8(), 
+start at the beginning of this buffer.
+
+@internalComponent
+@param aBuffer Pointer to an 8 bit non-modifiable buffer containing 
+or representing resource data.
+@param aResourceId The numeric id of the resource to be read.
+@post Buffer pointer is initialized.
+@post Buffer current position pointer is initialized. */
+void TResourceReaderImpl::SetBuffer(const Ptr8* aBuffer)
+{
+	iBuffer=aBuffer;
+	iCurrentPtr= (TUint8*)iBuffer->GetPtr();
+}
+
+/** Sets the buffer and current position to NULL.
+@internalComponent
+@post Buffer pointer is set to NULL.
+@post Buffer current position pointer is set to NULL. */
+void TResourceReaderImpl::ResetBuffer()
+	{
+	iBuffer=NULL;
+	iCurrentPtr=NULL;
+	}
+
+/** Returns the current position within the resource buffer. 
+
+The function makes no assumption about the type of data in the buffer at the 
+current position.
+
+@internalComponent
+@return A pointer to the current position within the resource buffer. */
+const TAny* TResourceReaderImpl::Ptr()
+    {
+    return(iCurrentPtr);
+    }
+
+/** Updates iCurrentPtr with a new value.
+
+@internalComponent
+@pre iBuffer is not NULL.
+@pre aPtr is not NULL.
+@param aPtr The new value of iCurrentPtr.
+@post iCurrentPtr is updated.
+@leave KErrOff The new iCurrentPtr points beyond the buffer end. */
+void TResourceReaderImpl::MovePtrL(const TUint8* aPtr)
+    {
+	assert(iBuffer != NULL);
+	assert(aPtr != NULL);
+	if(aPtr > ((TUint8*)(  iBuffer->GetPtr() +  iBuffer->GetLength()  )))
+	{
+		std::string errMsg= "Failed : Trying to access pointer beyond valid range for registrationFile";
+		throw CResourceFileException(errMsg);
+	}
+		
+    iCurrentPtr=aPtr;
+    }
+
+/** Interprets the data at the current buffer position as leading byte count data 
+and constructs a 16 bit heap buffer containing a copy of this data.
+
+The data is interpreted as:
+
+a byte value defining the number of 16 bit text characters
+(the resource string/binary data length is limited to 255 characters max)
+
+followed by:
+
+the 16 bit text characters.
+
+If the value of the leading byte is zero, the function assumes that no data 
+follows the leading byte and returns a NULL pointer.
+
+The current position within the resource buffer is updated.
+
+Do not use this explicit 16 bit variant when the resource contains binary 
+data; use the explicit 8 bit variant instead. If the resource contains text, 
+use the build independent variant ReadHBufCL().
+
+@internalComponent
+@pre The same as for ReadTPtrC16L().
+@return Pointer to the 16bit heap buffer containing a
+copy of the data following the leading byte count at
+the current position within the resource buffer. The
+pointer can be NULL.
+@post iCurrentPtr is updated.
+@leave The same as ReadTPtrC16L(). 
+@see ReadTPtrC16L() */
+
+Ptr16* TResourceReaderImpl::ReadHBufCL()
+	{
+
+		PtrC16* ucode = ReadTPtrC16L();
+		if(NULL==ucode)
+			return NULL;
+		Ptr16* unicode = new Ptr16(ucode->iMaxLength);
+		memcpy(unicode->GetPtr(),ucode->iPtr,ucode->iMaxLength*2);
+		unicode->UpdateLength(ucode->iMaxLength);
+		return unicode;
+	}
+
+
+/** Interprets the data at the current buffer position as leading byte count data 
+and constructs an 8 bit non modifiable pointer to represent this data.
+
+The data is interpreted as:
+
+a byte value defining the number of text characters or the length of binary 
+data (the resource string/binary data length is limited to 255 characters max)
+
+followed by:
+
+the 8 bit text characters or binary data.
+
+If the value of the leading byte is zero, calling Length() on the returned 
+TPtrC8 returns zero.
+
+The current position within the resource buffer is updated.
+
+Use this explicit 8 bit variant when the resource contains binary data. If 
+the resource contains text, then use the build independent variant ReadTPtrC().
+
+In general, this type of resource data corresponds to one of the following:
+
+a LTEXT type in a resource STRUCT declaration.
+
+a variable length array within a STRUCT declaration which includes the LEN 
+BYTE keywords.
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@return 8bit non modifiable pointer representing
+the data following the leading byte count at the
+current position within the resource buffer.
+@post iCurrentPtr is updated.
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+PtrC8* TResourceReaderImpl::ReadTPtrC8L()
+	{
+	assert(iCurrentPtr != NULL);
+	const TUint8* currentPtr=iCurrentPtr;//TUint8 pointer is used, which means that the 
+	//resource string length is limited to 255 characters max.
+	const TInt strLen=*currentPtr;
+	++currentPtr;
+
+	PtrC8* unicode = new PtrC8;
+
+	if(!strLen)
+		unicode = NULL;
+	else
+	{
+		unicode ->iMaxLength = strLen;
+		unicode ->iPtr = currentPtr;
+	}
+	MovePtrL(currentPtr+strLen);
+	return unicode;
+	}
+
+/** Interprets the data at the current buffer position as leading byte count data 
+and constructs a 16 bit non modifiable pointer to represent this data.
+
+The data is interpreted as:
+
+a byte value defining the number of 16 bit text characters 
+(the resource string/binary data length is limited to 255 characters max)
+
+followed by:
+
+the 16 bit text characters.
+
+If the value of the leading byte is zero, calling Length() on the returned 
+TPtrC16 returns zero.
+
+The current position within the resource buffer is updated.
+
+Do not use this explicit 16 bit variant when the resource contains binary 
+data; use the explicit 8 bit variant instead. If the resource contains text, 
+use the build independent variant ReadTPtrC().
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@return Pointer to an 8bit variant flat array.
+@post iCurrentPtr is updated.
+@leave KErrCorrupt The resource is a unicode string and it is not properly aligned.
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+
+PtrC16* TResourceReaderImpl::ReadTPtrC16L()
+	{
+	assert(iCurrentPtr != NULL);
+	const TUint8* currentPtr=iCurrentPtr;//TUint8 pointer is used, which means that the 
+	
+	//resource string length is limited to 255 characters max.
+	const TInt unicodeLength=*currentPtr;
+	++currentPtr;
+	if (unicodeLength!=0)
+		{
+		if (REINTERPRET_CAST(TUint,currentPtr)&0x1)
+			{
+			// The resource compiler puts out a padding byte (arbitrarily 0xab)
+			// to ensure the alignment of Unicode strings within each resource.
+				if(*currentPtr!=0xab)
+				{
+					std::string errMsg= "Failed : Trying to access invalid registrationFile";
+					throw CResourceFileException(errMsg);
+				}
+			++currentPtr;
+			}
+		}
+
+	if (unicodeLength ==0)
+	{
+		MovePtrL(currentPtr);
+		return NULL;
+	}
+	else
+	{
+		PtrC16* unicode = new PtrC16;
+		unicode ->iMaxLength = unicodeLength;
+		unicode ->iPtr = (TUint16*) currentPtr;
+
+		currentPtr+=unicodeLength*sizeof(TText16);
+		MovePtrL(currentPtr);
+		return unicode;
+	}
+}
+
+
+/** Interprets the data at the current buffer position as a TInt8 type and returns 
+the value as a TInt.
+
+The current position within the resource buffer is updated.
+
+In general, a TInt8 corresponds to a BYTE type in a resource STRUCT declaration.
+
+Note that in Symbian OS, a TInt is at least as big as a TInt8.
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@return The TInt8 value taken from the resource buffer.
+@post The same as MovePtrL(const TUint8* aPtr).
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+TInt TResourceReaderImpl::ReadInt8L()
+    {
+	assert(iCurrentPtr != NULL);
+    const TUint8* currentPtr=iCurrentPtr;
+    MovePtrL(currentPtr+sizeof(TInt8));
+    return(*(TInt8*)currentPtr);
+    }
+
+/** Interprets the data at the current buffer position as a TUint8 type and returns 
+the value as a TUint.
+
+The current position within the resource buffer is updated.
+
+In general, a TUint8 corresponds to a BYTE type in a resource STRUCT declaration.
+
+Note that in Symbian OS, a TUint is at least as big as a TUint8.
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@return The TUint8 value taken from the resource buffer.
+@post The same as MovePtrL(const TUint8* aPtr).
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+TUint32 TResourceReaderImpl::ReadUint8L()
+    {
+	assert(iCurrentPtr != NULL);
+    const TUint8* currentPtr=iCurrentPtr;
+    MovePtrL(currentPtr+sizeof(TUint8));
+    return(*(TUint8*)currentPtr);
+    }
+
+/** Interprets the data at the current buffer position as a TInt16 type and returns 
+the value as a TInt.
+
+The current position within the resource buffer is updated.
+
+In general, a TInt16 corresponds to a WORD type in a resource STRUCT declaration.
+
+Note that in Symbian OS, a TInt is at least as big as a TInt16.
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@return The TInt16 value taken from the resource buffer.
+@post The same as MovePtrL(const TUint8* aPtr).
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+TInt TResourceReaderImpl::ReadInt16L()
+    {
+	assert(iCurrentPtr != NULL);
+    if (((TUint32)iCurrentPtr)%2)
+        {
+        TInt16 ret;
+        ReadL(&ret,sizeof(ret));
+        return(ret);
+        }
+    const TUint8* currentPtr=iCurrentPtr;
+    MovePtrL(currentPtr+sizeof(TInt16));
+    return(*(TInt16*)currentPtr);
+    }
+
+/** Interprets the data at the current buffer position as a TInt32 type and returns 
+the value as a TInt.
+
+The current position within the resource buffer is updated.
+
+In general, a TInt32 corresponds to a LONG type in a resource STRUCT declaration.
+
+Note that in Symbian OS, TInt and TInt32 are the same size.
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@return The TInt32 value taken from the resource buffer.
+@post The same as MovePtrL(const TUint8* aPtr).
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+TInt TResourceReaderImpl::ReadInt32L()
+    {
+	assert(iCurrentPtr != NULL);
+    if (((TUint)iCurrentPtr)%4)
+        {
+        TInt32 ret;
+        ReadL(&ret,sizeof(ret));
+        return(ret);
+        }
+    const TUint8* currentPtr=iCurrentPtr;
+    MovePtrL(currentPtr+sizeof(TInt32));
+	return(*(TInt32*)currentPtr);
+    }
+
+
+/** Interprets the data at the current buffer position as a TUint32 type and returns 
+the value as a TUint.
+
+The current position within the resource buffer is updated.
+
+In general, a TUint32 corresponds to a LONG type in a resource STRUCT declaration.
+
+Note that in Symbian OS a TUint is the same size as a TUint32.
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@return The TUint32 value taken from the resource buffer.
+@post The same as MovePtrL(const TUint8* aPtr).
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+TUint32 TResourceReaderImpl::ReadUint32L()
+    {
+	assert(iCurrentPtr != NULL);
+    if (((TUint32)iCurrentPtr)%4)
+        {
+        TUint32 ret;
+        ReadL(&ret,sizeof(ret));
+        return(ret);
+        }
+    const TUint8* currentPtr=iCurrentPtr;
+    MovePtrL(currentPtr+sizeof(TUint32));
+    return(*(TUint32*)currentPtr);
+    }
+
+/** Copies a specified length of data from the resource buffer, starting at the 
+current position within the buffer, into the location pointed to by a specified 
+pointer. No assumption is made about the type of data at being read.
+
+The current position within the resource buffer is updated.
+
+@internalComponent
+@pre iCurrentPtr != NULL.
+@pre The same as MovePtrL(const TUint8* aPtr).
+@param aPtr Pointer to the target location for data copied from the resource buffer.
+@param  aLength The length of data to be copied from the resource buffer.
+@post The same as MovePtrL(const TUint8* aPtr).
+@leave The same as MovePtrL(const TUint8* aPtr).
+@see MovePtrL(const TUint8* aPtr) */
+void TResourceReaderImpl::ReadL(TAny* aPtr,TInt aLength)
+    {
+	assert(iCurrentPtr != NULL);
+    const TUint8* currentPtr=iCurrentPtr;
+    MovePtrL(currentPtr+aLength);
+    memcpy(aPtr,currentPtr,aLength);
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barsreadimpl.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,79 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file barsreadimpl.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef __BARSREADIMPL_H__
+#define __BARSREADIMPL_H__
+
+#include "commontypes.h"
+
+/** Interprets resource data read from a resource file.
+
+To use an instance of this class, pass the buffer containing the resource 
+data to it by calling SetBuffer().
+
+The buffer containing the resource data is created by RResourceFile::AllocReadL()/CResourceFile::AllocReadL() 
+which reads the specified resource into it.
+
+The current position within the buffer is always maintained and any request 
+for data is always supplied from the current position. The current position 
+is always updated .
+
+Expected behaviour when assignment operator or copy constructor is called:
+The class doesn't have assignment operator and copy constructor, so the compiler generated
+ones will be used. The buffer used by the source class instance will be shared with the 
+destination class instance. However source and destination instances will have their own 
+current position pointers, both pointed initially to the same buffer position.
+
+@internalComponent
+@see TResourceReaderImpl::SetBuffer()
+@see CResourceFile::AllocReadL() */
+class TResourceReaderImpl
+    {
+public:
+	TResourceReaderImpl();
+
+	void	SetBuffer(const Ptr8* aBuffer);
+	void	ResetBuffer();
+    const	TAny* Ptr();
+
+    // Read counted strings into allocated buffer
+	Ptr16*	ReadHBufCL();
+
+    // Build pointer from a counted string
+    PtrC8*  ReadTPtrC8L();
+	PtrC16* ReadTPtrC16L();
+
+    TInt	ReadInt8L();
+    TUint32 ReadUint8L();
+    TInt	ReadInt16L();
+	TInt	ReadInt32L();
+    TUint32 ReadUint32L();
+
+    void	ReadL(TAny* aPtr,TInt aLength);
+
+private:
+    void	MovePtrL(const TUint8* aPtr);
+private:
+		
+	const Ptr8*		iBuffer;
+    const TUint8*	iCurrentPtr;
+    };
+
+#endif//__BARSREADIMPL_H__
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/commontypes.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,174 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file commontypes.cpp
+*
+* @internalComponent
+* @released
+*/
+#include "commontypes.h"
+#include "barsc2.h"
+
+/** 
+ Implementation of Class Ptr8
+*/
+
+Ptr8::Ptr8(const TUint32& aSize)
+		:iLength(0), iMaxLength(aSize)		
+{
+	iPtr= new TUint8[aSize];
+}
+
+Ptr8::~Ptr8()
+	{
+	delete iPtr;
+	iPtr=0;
+	}
+
+TUint8* Ptr8::GetPtr() const 
+	{
+	return iPtr;
+	}
+
+void Ptr8::SetPtr(TUint8* aPtr)
+{
+	iPtr=aPtr;
+}
+
+void Ptr8::ForceLength(const TUint32& aLength)
+{
+		iLength = aLength;
+}
+
+void Ptr8::SetLength(const TUint32& aLength)
+{
+	if ((iLength+aLength) <= iMaxLength)
+		{
+		iLength = aLength;
+		return 0;
+		}
+	else
+		{
+		return 1;	
+		}
+}
+	
+TBool Ptr8::UpdateLength(const TUint32& aLength) 
+	{
+	// Current length should not increase the 
+	// Max length.
+	if ((iLength+aLength) <= iMaxLength)
+		{
+		iLength+= aLength;
+		return 0;
+		}
+	else
+		{
+		return 1;	
+		}
+	}
+
+TUint32 Ptr8::GetLength() const 
+	{
+	return iLength;
+	}
+
+
+/** 
+ Implementation of Class Ptr16
+*/
+
+Ptr16::Ptr16(const TUint32& aSize)
+		:iLength(0), iMaxLength(aSize)		
+	{
+		iPtr= new TUint16[aSize];
+	}
+
+Ptr16::~Ptr16()
+	{
+	delete iPtr;
+	iPtr=0;
+	}
+
+TUint16* Ptr16::GetPtr() const 
+	{
+	return iPtr;
+	}
+
+TBool Ptr16::UpdateLength(const TUint32& aLength) 
+	{
+	// Current length should not increase the 
+	// Max length.
+	if ((iLength+aLength) <= iMaxLength)
+		{
+		iLength+= aLength;
+		return 0;
+		}
+	else
+		{
+		return 1;	
+		}
+	}
+
+TUint32 Ptr16::GetLength() const 
+	{
+	return iLength;
+	}
+
+/**
+Implementation of Sructure PtrC8
+*/
+PtrC8::PtrC8():
+	iMaxLength(0)
+{	
+	iPtr = new TUint8;
+}
+
+/**
+Implementation of Sructure PtrC8
+*/
+PtrC8::~PtrC8()
+{	
+	 delete (TUint8*) iPtr;
+	 iPtr = NULL;
+}
+
+/**
+Implementation of Sructure PtrC16
+*/
+PtrC16::PtrC16():
+	iMaxLength(0)
+{	
+	iPtr = new TUint16;
+}
+
+/**
+Implementation of Sructure PtrC16
+*/
+PtrC16::~PtrC16()
+{	
+	delete iPtr;
+	iPtr = NULL;
+}
+
+
+/**
+ Implementation of Sructure TUid
+*/
+	
+sTUid::sTUid():
+	iUid1(0), iUid2(0), iUid3(0)
+	{
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/commontypes.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,241 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+/** 
+* @file commontypes.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef	COMMONTYPES_H
+#define	COMMONTYPES_H
+
+#include "symbiantypes.h"
+#include "uidtype.h"
+#include <vector>
+using namespace std;
+using namespace rscparser;
+/**
+Class to allocate heap memory and store a pointer to it 
+for unicode data.
+The maximun allocated length and current length would also 
+be maintained.
+*/
+class Ptr8
+{
+
+public:
+	/**
+	Allocate heap of the specified size and 
+	store the pointer to it.
+	@param aSize Size of the heap to be allocated.
+	*/
+	Ptr8(const TUint32& aSize);
+
+	/**
+	Free the allocated heap 
+	*/
+	~Ptr8();
+
+	/**
+	Get the pointer to the allocated heap
+	*/
+	TUint8* GetPtr() const;
+	/**
+	Set the pointer
+	*/
+	void SetPtr(TUint8* aPtr);
+
+	/**
+	Set the length
+	*/
+	void SetLength(const TUint32& aLength);
+	void ForceLength(const TUint32& aLength);
+	
+	/**
+	Update the length of the current pointer
+	with the length provided
+	@param aLength Length to be updated
+	*/
+	TBool UpdateLength(const TUint32& aLength);
+
+	/**
+	To fetch the current length
+	*/
+	TUint32 GetLength() const;
+
+private:
+	TUint8* iPtr;
+	TUint32 iLength;
+	const TUint32 iMaxLength;
+};
+
+
+/**
+Class to allocate heap memory and store a pointer to it 
+for non-unicode data.
+The maximun allocated length and current length would also 
+be maintained.
+*/
+class Ptr16
+{
+
+public:
+	/**
+	Allocate heap of the specified size and 
+	store the pointer to it.
+	@param aSize Size of the heap to be allocated.
+	*/
+	Ptr16(const TUint32& aSize);
+
+	/**
+	Free the allocated heap 
+	*/
+	~Ptr16();
+
+	/**
+	Get the pointer to the allocated heap
+	*/
+	TUint16* GetPtr() const;
+
+	/**
+	Update the length of the current pointer
+	with the length provided
+	@param aLength Length to be updated
+	*/
+	TBool UpdateLength(const TUint32& aLength);
+	
+	/**
+	To fetch the current length
+	*/
+	TUint32 GetLength() const;
+
+private:
+	TUint16* iPtr;
+	TUint32 iLength;
+	const TUint32 iMaxLength;
+};
+
+
+/**
+Structure to represent TPtrC8 from symbian data type
+*/
+struct PtrC8
+{	
+	PtrC8();
+	~PtrC8();
+	const TUint8* iPtr;
+	TUint32 iMaxLength;
+};
+
+
+/**
+Structure to represent TPtrC16 from symbian data type
+*/
+struct PtrC16
+{	
+	PtrC16();
+	~PtrC16();
+	TUint16* iPtr;
+	TUint32 iMaxLength;
+};
+
+
+/**
+Structure to hold the UIDs of the RSC file
+*/
+
+struct sTUid
+{	
+	sTUid();
+	TUint32 iUid1;
+	TUint32 iUid2;
+	TUint32 iUid3;
+};
+
+/**
+System wide error code -1 : item not found.
+
+A system wide error code indicates an error in the environment, or in
+user input from which a program may recover.
+*/
+const TInt KErrNotFound=(-1); // Must remain set to -1
+
+/**
+System wide error code 0 : this represents the no-error condition.
+
+A system wide error code indicates an error in the environment, or in
+user input from which a program may recover.
+*/
+const TInt KErrNone=0; 
+
+/**
+System wide error code -25 : indicates that end of file has been reached.
+
+A system wide error code indicates an error in the environment, or in
+user input from which a program may recover.
+
+Note that RFile::Read() is a higher-level interface. When the end of
+the file is reached, it returns zero bytes in the destination descriptor, and
+a KErrNone return value. KErrEof is not used for this purpose; other error
+conditions are returned only if some other error condition was indicated on
+the file.
+*/
+const TInt KErrEof=(-25);
+
+
+const TInt KExecutableImageUidValue=0x1000007a;
+
+const TUid KExecutableImageUidVal={KExecutableImageUidValue};
+
+/** The hexadecimal value of the 2nd UID that defines a DLL as being a Unicode 
+UI application. In .mmp files, the hexadecimal number is explicitly inserted 
+as the first value following the UID keyword.
+
+@publishedAll 
+@released
+@see KAppUidValue */
+const TInt KAppUidValue16 = 0x100039CE;
+
+/** The 2nd UID that defines a DLL as being a Unicode UI application.
+
+@publishedAll 
+@released
+@see KUidApp */
+const TUid KUidApp16={KAppUidValue16};
+
+/** The type-independent 2nd UID that identifies a DLL as being a UI application.
+
+@publishedAll 
+@released
+@see KUidApp16 */
+#define KUidApp KUidApp16
+
+/** 
+The uid for the Open service.
+
+@publishedPartner
+@released
+*/
+const TUid KOpenServiceUid = { 0x10208DCA };
+
+/** An application group name.
+
+This is a name that allows applications to be categorized, for instance "Games" 
+or "Utilities". 
+
+@publishedAll 
+@released */
+typedef Ptr16* TAppGroupName;
+#endif	/* COMMONTYPES_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/dirparse.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,755 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: File to Parse Resource File for Class AppRegistrationInfo and Create Input for
+//			 XML Generator.
+//
+
+
+#include "parameterlist.h"
+#include "stringutils.h"
+#include "is_utils.h"
+#include "dirparse.h"
+#include "barsc2.h"
+#include "commontypes.h"
+#include "sisregistry.h"
+#include "errors.h"
+#include "dbconstants.h"
+#include "parse.h"
+#include "utility_interface.h"
+
+using namespace std;
+
+/**
+@internalTechnology
+*/
+std::wstring AppResourceFileExtension = L".rsc";
+
+/**
+ * Identify if input file is a Registration Resource File.
+ @ Param : aRegistrationFileName - File name to be scanned.
+ */
+TInt FindRegistrationResourceFileL(std::string& aRegistrationFileName)
+{
+	CResourceFile* registrationFile = NULL;
+	try {
+			registrationFile = new CResourceFile(aRegistrationFileName, 0, 0);
+			if(NULL==registrationFile)
+			{
+				std::cout<<"Failed : Error in Reading File. Memory Allocation Failed"<<std::endl;
+				return 1;
+			}
+			else
+			{
+				TUid iAppUid = registrationFile->ReadFileUidL();
+				if(KUidAppRegistrationResourceFile == iAppUid.GetUid())
+				{
+					delete registrationFile;
+					return 0;
+				}
+			}
+		}
+		catch(const CResourceFileException& aObject)
+		{
+			if(registrationFile)
+				delete registrationFile;
+			return 1;
+		}
+	
+	delete registrationFile;
+	return 1;
+}
+
+
+/**
+ * Creates Class TAppDataType for XML Parsing
+ */
+
+std::wstring Ptr8_2_Wstring(const Ptr8* aBuf)
+{
+	std::wstring str2(aBuf->GetLength(), L'\0'); // Make room for characters
+
+	TUint8* temp = aBuf->GetPtr();
+	std::copy(temp,temp+aBuf->GetLength(),str2.begin());
+
+	return str2;
+}
+
+
+void CreateAppDataType(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo& aAppDataType, 
+								const TDataTypeWithPriority* aTemp)
+{
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType componentDataType;
+
+	componentDataType.iPriority = aTemp->iPriority;
+	componentDataType.iType = Ptr8_2_Wstring(aTemp->iDataType.GetDataType());
+
+	aAppDataType.iDataType.push_back(componentDataType);
+}
+
+/**
+ * Creates Class TViewData for XML Parsing
+ */
+void CreateViewDataL(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo& aLocalizableAttribute, 
+							const CAppLocalizableInfo* aAppInfoReader)
+{
+	std::wstring sStr1;
+	std::wstring sStr;
+
+	std::vector<CAppViewData*>* viewDataArray = aAppInfoReader->GetViewDataArray();
+
+	if(viewDataArray)
+	{
+		for(TInt i = 0; i<viewDataArray->size(); i++)
+		{
+
+			XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData ViewData;
+			CAppViewData *temp = viewDataArray->at(i);
+	
+			sStr = DbConstants::CompUID;
+			TUid ID = temp->Uid();
+			sStr1 = Utils::IntegerToWideString(ID.GetUid());
+			CreateViewDataAttributes(ViewData,sStr,sStr1,true,false);
+	
+			sStr = DbConstants::CompScreenMode;
+			TInt SMode = temp->GetScreenMode();
+	
+			sStr1 = Utils::IntegerToWideString(SMode);
+			CreateViewDataAttributes(ViewData,sStr,sStr1,true,false);
+			
+			sStr = DbConstants::CompCaption;
+			Ptr16* caption = temp->GetCaption();
+			if(caption)
+				sStr1 = Ptr16ToWstring(caption);
+			else
+				sStr1=L'\0';		
+			CreateViewDataAttributes(ViewData,sStr,sStr1,false,false);
+			
+			sStr = DbConstants::CompNumberOfIcons;
+			TInt IconNum = temp->GetNumOfViewIcons();
+			sStr1 = Utils::IntegerToWideString(IconNum);
+			CreateViewDataAttributes(ViewData,sStr,sStr1,true,false);
+	
+			sStr = DbConstants::CompIconFile;
+			Ptr16* IconName = temp->GetIconFileName();
+			if(IconName)
+				sStr1 = Ptr16ToWstring(IconName);
+			else
+				sStr1=L'\0';
+			CreateViewDataAttributes(ViewData,sStr,sStr1,false,false);
+
+			aLocalizableAttribute.iViewData.push_back(ViewData);
+		}
+	}
+}
+
+void CreateViewDataAttributes(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData& aViewData, 
+							const std::wstring& aName,const std::wstring& aValue, 
+							const bool aIsIntValue, const int aIsStr8Bit)
+{
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes ViewDataAttributes;
+
+	ViewDataAttributes.iName = aName;
+	ViewDataAttributes.iValue = aValue;
+	ViewDataAttributes.iIsIntValue = aIsIntValue;
+	ViewDataAttributes.iIsStr8Bit = aIsStr8Bit;
+
+	aViewData.iViewDataAttributes.push_back(ViewDataAttributes);
+}
+
+/**
+ * Creates Class TLocalizableAttribute for XML Parsing
+ */
+
+void CreateLocalizableAttribute(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo& aLocalizableAttribute, 
+										const std::wstring& aName, const std::wstring& aValue, 
+										const bool aIsIntValue, const int aIsStr8Bit)
+{
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute LocalizableAttribute;
+
+	LocalizableAttribute.iName = aName;
+	LocalizableAttribute.iValue = aValue;
+	LocalizableAttribute.iIsIntValue = aIsIntValue;
+	LocalizableAttribute.iIsStr8Bit = aIsStr8Bit;
+
+	aLocalizableAttribute.iLocalizableAttribute.push_back(LocalizableAttribute);
+}
+
+/**
+ * Creates Class TAppLocalizableInfo for XML Parsing
+ */
+void CreateLocalizableInfoL(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppLocalizableInfo, 
+									const CAppLocalizableInfo* aInfoReader)
+{
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo componentLocalizableInfo;
+
+		Ptr16* shortCaption = aInfoReader->GetShortCaption();
+		std::wstring sStr = DbConstants::CompShortCaption;
+		std::wstring sStr1;
+		
+		if(shortCaption)
+			sStr1 = Ptr16ToWstring(shortCaption);
+		else
+			sStr1=L'\0';
+		CreateLocalizableAttribute(componentLocalizableInfo,sStr,sStr1,false,false);	
+
+		Ptr16* caption = aInfoReader->GetCaption();
+		sStr = DbConstants::CompCaption;
+		if(caption)
+			sStr1 = Ptr16ToWstring(caption);
+		else
+			sStr1=L'\0';
+		CreateLocalizableAttribute(componentLocalizableInfo,sStr,sStr1,false,false);
+		
+		TInt  iNumOfAppIcons = aInfoReader->GetNumOfAppIcons();
+		sStr = DbConstants::CompNumberOfIcons;
+		sStr1 = Utils::IntegerToWideString(iNumOfAppIcons);
+		CreateLocalizableAttribute(componentLocalizableInfo,sStr,sStr1,true,false);
+
+		TInt  iLocale = aInfoReader->GetLocale();
+		sStr = DbConstants::CompLocale;
+		sStr1 = Utils::IntegerToWideString(iLocale);
+		CreateLocalizableAttribute(componentLocalizableInfo,sStr,sStr1,true,false);
+
+		Ptr16* iIconFileName = aInfoReader->GetIconFileName();
+		sStr = DbConstants::CompIconFile;
+		if(iIconFileName)
+			sStr1 = Ptr16ToWstring(iIconFileName);
+		else
+			sStr1=L'\0';
+		CreateLocalizableAttribute(componentLocalizableInfo,sStr,sStr1,false,false);
+
+		Ptr16* iGroupName = aInfoReader->GetGroupName();
+		sStr = DbConstants::CompGroupName;
+		if(iGroupName)
+			sStr1 = Ptr16ToWstring(iGroupName);
+		else
+			sStr1=L'\0';
+		CreateLocalizableAttribute(componentLocalizableInfo,sStr,sStr1,false,false);
+
+		CreateViewDataL(componentLocalizableInfo,aInfoReader);
+
+		aAppLocalizableInfo.iApplicationLocalizableInfo.push_back(componentLocalizableInfo);
+}
+
+
+/**
+ * Creates Class TAppServiceInfo for XML Parsing
+ */
+
+void CreateAppServiceInfo(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppServiceInfo, 
+									const TUid& aUid, const std::vector<TDataTypeWithPriority*>& aDataType) 
+{
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo componentServiceInfo;
+
+		componentServiceInfo.iUid = aUid.GetUid();
+		for(TInt ii = 0; ii<aDataType.size(); ii++)
+		{
+			TDataTypeWithPriority *temp = aDataType.at(ii);
+			CreateAppDataType(componentServiceInfo,temp);
+		}
+	
+		aAppServiceInfo.iApplicationServiceInfo.push_back(componentServiceInfo);
+}
+
+/**
+ * Creates Class TAppAttribute for XML Parsing
+ */
+
+void CreateAppAttribute(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppAttribute, 
+								const std::wstring& aName,const std::wstring& aValue, 
+								const bool aIsIntValue, const int aIsStr8Bit )
+{
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute componentAttribute;
+
+	componentAttribute.iName = aName;
+	componentAttribute.iValue = aValue;
+	componentAttribute.iIsIntValue = aIsIntValue;
+	componentAttribute.iIsStr8Bit = aIsStr8Bit;
+
+	aAppAttribute.iApplicationAttribute.push_back(componentAttribute);
+}
+
+/**
+ * Creates Class TAppAttribute for XML Parsing
+ */
+
+void CreateAppProperty(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppProperty, 
+								const std::wstring& aStrValue, const int aLocale,
+								const int aServiceUid, const bool aIsStr8Bit )
+{
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty componentproperty;
+
+	componentproperty.iName = DbConstants::CompOpaqueData;
+	componentproperty.iLocale = aLocale;
+	componentproperty.iServiceUid = aServiceUid;
+	componentproperty.iIntValue = 0;
+	componentproperty.iStrValue = aStrValue;
+	componentproperty.iIsStr8Bit = aIsStr8Bit;
+
+	aAppProperty.iApplicationProperty.push_back(componentproperty);
+}
+
+/**
+ * Creates Class TOpaqueDataType for XML Parsing
+ */
+
+void CreateOpaqueDataType(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppOpaqueData, 
+								const std::wstring& aStrValue, const int aLocale, const int aServUid)
+{
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType componentData;
+
+	componentData.iLocale = aLocale;
+	componentData.iServiceUid = aServUid;
+	componentData.iOpaqueData = aStrValue;
+
+	aAppOpaqueData.iOpaqueDataType.push_back(componentData);
+}
+
+/**
+ * Get the path of Database "scr.db"
+ */
+
+std::string GetDbPath(const CParameterList* aParamList)
+{
+	if	( 
+		(aParamList->RomLogFileNames().size() != 0 && aParamList->RomDrivePath().size() == 0 ) ||
+		aParamList->IsFlagSet(CParameterList::EFlagsDisableZDriveChecksSet) 
+		)
+		{
+			return wstring2string(aParamList->SystemDrivePath()) + "\\sys\\install\\scr\\scr.db";
+		}
+
+	return wstring2string(aParamList->RomDrivePath()) + "\\sys\\install\\scr\\provisioned\\scr.db";
+}
+
+/**
+ * Update Installation Information in Database using SRCTOOL
+ */
+
+void UpdateInstallationInformation_xml(const CParameterList* aParamList,
+												XmlDetails::TScrPreProvisionDetail aScrPreProvisionDetail)
+{
+	CXmlGenerator xmlGenerator;
+	char* tmpFileName = tmpnam(NULL);
+	std::wstring filename(string2wstring(tmpFileName));
+
+	int isRomApplication = 1;
+	xmlGenerator.WritePreProvisionDetails(filename , aScrPreProvisionDetail, isRomApplication);						
+
+	std::string executable = "scrtool.exe";
+	std::string command;
+
+	command = executable + " -d " + GetDbPath(aParamList) + " -p " + tmpFileName;
+
+	cout << "Updating DB : " << command << endl;
+
+	int error = system(command.c_str());
+	
+	if(error != 0)
+	{
+		LERROR(L"Scrtool failed to upload the database registry entry.");
+	}
+		
+	error = remove(tmpFileName);
+
+	if(error != 0)
+	{
+		LERROR(L"Temporary file removal failed.");
+	}	
+}
+
+/**
+ * Creates Class TApplicationRegistrationInfo for XML Parsing
+ */
+
+
+void CreateApplicationRegistrationInfoL(XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+												const CAppInfoReader* aAppInfoReader)
+{
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo atemp;
+
+	Ptr16* iAppBinaryFullName = aAppInfoReader->AppBinaryFullName();
+	std::wstring sStr = DbConstants::CompAppFile;
+	std::wstring sStr1 = Ptr16ToWstring(iAppBinaryFullName);
+	CreateAppAttribute(atemp,sStr,sStr1,false,false);
+
+	TUidType iAppBinaryUidType = aAppInfoReader->AppBinaryUidType();;
+	sStr = DbConstants::CompAppUid;
+	TUid Uid = iAppBinaryUidType[2];
+	sStr1 = Utils::IntegerToWideString(Uid.GetUid());
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	sStr = DbConstants::CompTypeId;
+	TInt TypeId = -1367772926;
+	sStr1 = Utils::IntegerToWideString(TypeId);
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	TAppCapability iCapability;
+	aAppInfoReader->Capability(iCapability);
+
+ 	sStr = DbConstants::CompAttributes;
+	sStr1 = Utils::IntegerToWideString(iCapability.iAttributes);
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	sStr = DbConstants::CompHidden;
+	sStr1 = Utils::IntegerToWideString(iCapability.iAppIsHidden);
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	sStr = DbConstants::CompEmbeddable;
+	sStr1 = Utils::IntegerToWideString(iCapability.iEmbeddability);
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	sStr = DbConstants::CompNewfile;
+	sStr1 = Utils::IntegerToWideString(iCapability.iSupportsNewFile);
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	sStr = DbConstants::CompLaunch;
+	sStr1 = Utils::IntegerToWideString(iCapability.iLaunchInBackground);
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	sStr = DbConstants::CompGroupName;
+	if(iCapability.iGroupName)
+		sStr1 = Ptr16ToWstring(iCapability.iGroupName);
+	else
+		sStr1=L'\0';
+	CreateAppAttribute(atemp,sStr,sStr1,false,false);
+
+	TUint iDefaultScreenNumber = aAppInfoReader->DefaultScreenNumber();
+	sStr = DbConstants::CompDefaultScreenNumber;
+	sStr1 = Utils::IntegerToWideString(iDefaultScreenNumber);
+	CreateAppAttribute(atemp,sStr,sStr1,true,false);
+
+	std::vector<Ptr16*>* ownedFileArray = aAppInfoReader->OwnedFiles();
+	if(ownedFileArray)
+	{
+		for(TInt ii = 0; ii<ownedFileArray->size(); ii++)
+		{
+			Ptr16 *temp = ownedFileArray->at(ii);
+			if(temp)
+				sStr = Ptr16ToWstring(temp);
+			else
+				sStr=L'\0';
+			atemp.iFileOwnershipInfo.push_back(sStr);
+		}
+	}
+
+	TInt iIndexOfFirstOpenService;
+	std::vector<TAppServiceInfo*>* iServiceArray = aAppInfoReader->ServiceArray(iIndexOfFirstOpenService);
+	if(iServiceArray)
+	{
+		for(TInt i = 0; i<iServiceArray->size(); i++)
+		{
+			TAppServiceInfo* temp = iServiceArray->at(i);
+			TUid iUid = temp->GetUid();
+			std::vector<TDataTypeWithPriority*> iData = temp->GetDataType();
+			CreateAppServiceInfo(atemp,iUid,iData);
+
+			int servUid = iUid.GetUid();
+			std::vector<CAppLocalOpaqueDataInfo*> opaqueDataArray = aAppInfoReader->GetOpaqueDataArray();
+			for(TInt i = 0; i<opaqueDataArray.size(); i++)
+			{
+				CAppLocalOpaqueDataInfo* tp = opaqueDataArray.at(i);
+			
+				TUint32 serviceUid = tp->GetServiceUid();
+				if(servUid == serviceUid)
+				{
+					Ptr8*	opaqueData = tp->GetOpaqueData();
+					if(opaqueData)
+						sStr1 = Ptr8ToWstring(opaqueData);
+					else
+						sStr1=L'\0';
+				
+					TInt locale = tp->GetLocale();
+					CreateOpaqueDataType(atemp,sStr1,locale,serviceUid);
+				}
+			}
+		}
+	}
+
+	std::vector<CAppLocalizableInfo*> aAppLocalizable = aAppInfoReader->LocalizableInfo();
+
+	for(TInt i = 0; i<aAppLocalizable.size(); i++)
+	{
+		CAppLocalizableInfo* tp = aAppLocalizable.at(i);
+		CreateLocalizableInfoL(atemp,tp);
+	}
+
+	std::vector<CAppLocalOpaqueDataInfo*> opaqueDataArray = aAppInfoReader->GetOpaqueDataArray();
+	for(TInt i = 0; i<opaqueDataArray.size(); i++)
+	{
+		CAppLocalOpaqueDataInfo* tp = opaqueDataArray.at(i);
+
+		TUint32 serviceUid = tp->GetServiceUid();
+		if(0 == serviceUid)
+		{
+			Ptr8* 	opaqueData = tp->GetOpaqueData();
+			if(opaqueData)
+				sStr1 = Ptr8ToWstring(opaqueData);
+			else
+				sStr1=L'\0';
+		
+			TInt locale = tp->GetLocale();
+			CreateOpaqueDataType(atemp,sStr1,locale,serviceUid);
+		}
+	}
+
+	aComponent.iApplicationRegistrationInfo.push_back(atemp);
+}
+
+
+/**
+ * Get the path of Localizefile.
+ */
+
+std::string GetLocalizeFilePath(const std::string& aFileName, const CParameterList* aParamList)
+{
+	if(aParamList->IsFlagSet(CParameterList::EFlagsResourceFilePathSet))
+	{
+		size_t found;
+		std::string folder;
+		found=aFileName.find("private\\10003a3f\\");
+
+		if( found != string::npos )
+			folder = aFileName.substr(0,found);
+		else
+		{
+				std::string errMsg= "Failed : Resource File Path should contain \\private\\10003a3f\\";
+				throw CResourceFileException(errMsg);
+		}
+
+		return folder;
+	}
+	else
+		return wstring2string(aParamList->RomDrivePath());
+}
+
+
+/**
+ * Generate XML for Class AppInfoReader and call the function to Update Installation Information in Database using SRCTOOL
+ */
+void ReadApplicationInformationFromResourceFilesL(XmlDetails::TScrPreProvisionDetail& aScrPreProvisionDetail, 
+															const std::string& aFileName,const CParameterList* aParamList, 
+															const CInterpretSIS& aInterpretSis, int& aNewFileFlag)
+{
+
+	std::string LocalizePath = GetLocalizeFilePath(aFileName, aParamList);
+	
+	CAppInfoReader* appInfoReader = NULL;
+	appInfoReader = CAppInfoReader::NewL(aFileName, NullUid, LocalizePath);	
+	if (!appInfoReader)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	else
+	{
+		TBool readSuccessful=EFalse;
+
+		readSuccessful= appInfoReader->ReadL();
+
+		if (readSuccessful)
+		{
+			const SisRegistry* SisReg( aInterpretSis.GetSisRegistry());
+			const DbHelper* dbHelper( SisReg->GetDbHelper());
+				
+			TUid aAppUid = appInfoReader->AppUid();
+			int val = dbHelper->IsAppUidInstalled(aAppUid.GetUid());
+			if(!val)
+			{
+				aNewFileFlag = 1;
+				// for sis file entries the software type would always be Native.
+				aScrPreProvisionDetail.iSoftwareTypeName = L"native";;
+						
+				XmlDetails::TScrPreProvisionDetail::TComponent component;
+				CreateApplicationRegistrationInfoL(component,appInfoReader);
+				aScrPreProvisionDetail.iComponents.push_back(component);
+			}
+			else
+			{
+				std::cout<<",Ignoring : AppUid "<<hex<<aAppUid.iUid<<" already present in SCR.";
+			}
+		}
+		else
+		{
+			delete appInfoReader;
+			std::string errMsg= "Reading Resource File failed.";
+			throw CResourceFileException(errMsg);
+		}
+		delete appInfoReader;
+	}
+
+}
+
+/**
+ * Parse the Directory for resource file.
+ */
+
+void ParseResourceDir(const CParameterList* aParamList, const CInterpretSIS& aInterpretSis)
+{
+	std::wstring aFilePath;
+	int iNewFileFlag = 0;
+
+	if ( aParamList->IsFlagSet(CParameterList::EFlagsResourceFilePathSet)) 
+	{
+	 	aFilePath = aParamList->ResourceFilePath();
+	}
+	else
+	{
+		 aFilePath = aParamList->RomDrivePath();
+		 aFilePath.append(L"\\private\\10003a3f\\apps");
+	}
+
+	int iCount = 0;
+	std::list<std::wstring> regDirs;
+	GetDirContents( aFilePath, regDirs );
+
+	// store the object in registry database
+	XmlDetails::TScrPreProvisionDetail scrPreProvisionDetail;
+
+	std::list<std::wstring>::iterator curr = regDirs.begin();
+	for( curr = regDirs.begin(); curr != regDirs.end(); ++curr )
+	{
+	
+		if(aParamList->RegistryVersionExists())
+		{
+			std::string errMsg= "Database not updated. SIS Registry version file present.\n Remove file RomDrive\\system\\data\\sisregistry_*.txt";
+			throw CResourceFileException(errMsg);
+		}
+
+		try
+		{
+			if (curr->find(AppResourceFileExtension,0) != std::wstring::npos)
+			{
+				iCount++;
+			    std::string fName;
+		        fName = Ucs2ToUtf8( *curr );
+				std::string FilePath = wstring2string(aFilePath);
+				FilePath.append("\\");
+				FilePath.append(fName);
+				std::cout<<"Parsing - "<<fName<<" ";
+				ReadApplicationInformationFromResourceFilesL(scrPreProvisionDetail,FilePath,aParamList,aInterpretSis,iNewFileFlag);
+				std::cout<<" "<<std::endl;
+			}
+		}
+		catch(const CResourceFileException& aObject)
+		{
+			//LERROR(L"Resource File Parsing Error - ");
+			//aObject.Display();
+		}
+	}
+
+	if(iNewFileFlag)
+		UpdateInstallationInformation_xml(aParamList,scrPreProvisionDetail);
+	
+	if(!iCount)
+		LERROR(L"Failed : No Resource File in the Directory Specified - ");
+}
+
+/**
+ * Backup hash files for re-installation (SA over SA or PU over PU)
+ */
+void BackupHashForFile(const std::wstring& aFile, const int aDriveLetter, const std::wstring& aPath)
+{
+	std::wstring hashdir = L"$:\\sys\\hash\\";
+	std::wstring basename = aFile.substr( aFile.rfind( KDirectorySeparator ) + 1) ;
+	if (basename.size() == 0)
+	{
+		basename = aFile.substr(aFile.rfind(L"\\"));
+	}
+
+	hashdir[0] = aDriveLetter;
+	std::wstring hashFile = aPath + L"\\sys\\hash\\" + basename;
+
+	if (FileExists(hashFile))
+	{
+		std::string iLocalFile = wstring2string(hashFile);
+		std::string iBackupFile = wstring2string(hashFile);
+		iBackupFile.append("_backup");
+
+		int err=FileCopyA(iLocalFile.c_str(),iBackupFile.c_str(),0);
+		if (err == 0)
+			LERROR(L"Failed to Backup hash file ");
+	}
+}
+
+/**
+ * Restore hash files for re-installation (SA over SA or PU over PU)
+ */
+void RestoreHashForFile(const std::wstring& aFile, const int aDriveLetter, const std::wstring& aPath)
+{
+	std::wstring hashdir = L"$:\\sys\\hash\\";
+	std::wstring basename = aFile.substr( aFile.rfind( KDirectorySeparator ) + 1) ;
+	if (basename.size() == 0)
+	{
+		basename = aFile.substr(aFile.rfind(L"\\"));
+	}
+
+	hashdir[0] = aDriveLetter;
+	std::wstring hashFile = aPath + L"\\sys\\hash\\" + basename;
+	std::wstring LocalFile(hashFile);
+	hashFile.append(L"_backup");
+
+	if (FileExists(hashFile))
+	{
+		std::string iLocalFile = wstring2string(LocalFile);
+		std::string iBackupFile = wstring2string(hashFile);
+
+		int err = FileMoveA(iBackupFile.c_str(),iLocalFile.c_str());
+
+		if (err == 0)
+			LERROR(L"Failed to Restore hash file ");
+	}
+}
+
+/**
+ * Returns the size of the first occurance of an invalid directory separator.
+ * @param aPath Path to be validated.
+ * @param aIndex index from which the search begin. On function return this 
+ * 				index will point to the illegal directory separator. 
+ * @return 0 if path is valid. Else the number of character to be replaced.
+ * e.g. /sys/bin/ should be replaced with \sys\bin\
+ * and //sys//bin// should be replaced with \sys\bin\
+ */ 
+
+// Constants
+const std::wstring KSisDirectorySeparatortap( L"\\" );
+
+int FirstInvalidDirSeparatorSizetap(std::wstring& aPath, std::wstring::size_type& aIndex)
+	{
+	// If path semantics is correct (as needed by sisx library)
+	// then the function will return 0
+	int ret = 0; 
+	int pos = 0;
+	if((pos = aPath.find(L"//", aIndex)) != std::wstring::npos)
+		{
+		ret = 2;
+		}
+	else if((pos = aPath.find(L"/", aIndex)) != std::wstring::npos)
+		{
+		ret = 1;
+		}
+	aIndex = pos;
+	return ret;
+	}
+
+std::wstring FixPathDelimiterstap( const std::wstring& aString )
+    {
+    std::wstring ret = aString;
+	std::wstring::size_type idx = 0;
+    int len = 0;
+	while(len = FirstInvalidDirSeparatorSizetap(ret, idx))
+        {
+		ret.replace( idx, len, KSisDirectorySeparatortap );
+        }
+    return ret;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/dirparse.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,141 @@
+// dirparse.h
+
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file 
+ @internalComponent
+ @released
+*/
+
+#ifndef	__DIRPARSE_H__
+#define	__DIRPARSE_H__
+
+#pragma warning (disable: 4786)
+
+// System includes
+#include <iostream>
+#include <string>
+#include "xmlgenerator.h"
+#include "xmlparser.h"
+#include "aplappinforeader.h"
+#include "aplapplistitem.h"
+#include "interpretsis.h"
+#include "dbhelper.h"
+
+/**
+ * Identify if input file is a Registration Resource File.
+ @ Param : aRegistrationFileName - File name to be scanned.
+ */
+TInt FindRegistrationResourceFileL(std::string& aRegistrationFileName);
+/**
+ * Get the path of Database "scr.db"
+ */
+std::string GetDbPath(const CParameterList* aParamList);
+/**
+ * Creates Class TAppDataType for XML Parsing
+ */
+void CreateAppDataType(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo& aAppDataType, 
+								const TDataTypeWithPriority* aTemp);
+/**
+ * Creates Class TViewData for XML Parsing
+ */
+void CreateViewDataL(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo& aLocalizableAttribute, 
+								const CAppLocalizableInfo* aAppInfoReader);
+
+/**
+ * Creates Class TViewDataAttributes for XML Parsing
+ */
+void CreateViewDataAttributes(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData& aViewData, 
+							const std::wstring& aName,const std::wstring& aValue, 
+							const bool aIsIntValue, const int aIsStr8Bit);
+
+/**
+ * Creates Class TLocalizableAttribute for XML Parsing
+ */
+void CreateLocalizableAttribute(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo& aLocalizableAttribute, 
+								const std::wstring& aName,const std::wstring& aValue, const bool aIsIntValue, const int aIsStr8Bit);
+/**
+ * Creates Class TAppAttribute for XML Parsing
+ */
+void CreateAppAttribute(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppAttribute, 
+								const std::wstring& aName,const std::wstring& aValue, const bool aIsIntValue, const int aIsStr8Bit );
+/**
+ * Creates Class TAppAttribute for XML Parsing
+ */
+void CreateAppProperty(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppProperty, 
+								const std::wstring& aStrValue, const int aLocale, const int aServiceUid, const bool aIsStr8Bit );
+
+/**
+ * Creates Class TOpaqueDataType for XML Parsing
+ */
+void CreateOpaqueDataType(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppOpaqueData, 
+								const std::wstring& aStrValue, const int aLocale, const int aServUid);
+
+/**
+ * Creates Class TAppLocalizableInfo for XML Parsing
+ */
+void CreateLocalizableInfoL(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppLocalizableInfo, 
+								const CAppLocalizableInfo* tp);
+/**
+ * Creates Class TAppServiceInfo for XML Parsing
+ */
+void CreateAppServiceInfo(XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppServiceInfo, 
+								const TUid& aUid, const std::vector<TDataTypeWithPriority*>& aDataType);
+
+/**
+ * Creates Class TApplicationRegistrationInfo for XML Parsing
+ */
+ 
+void CreateApplicationRegistrationInfoL(XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+								const CAppInfoReader* aAppInfoReader);
+
+/**
+ * Update Installation Information in Database using SRCTOOL
+ */
+void UpdateInstallationInformation_xml(const CParameterList* aParamList,XmlDetails::TScrPreProvisionDetail aScrPreProvisionDetail);
+/**
+ * Generate XML for Class AppInfoReader and call the function to Update Installation Information in Database using SRCTOOL
+ */
+void ReadApplicationInformationFromResourceFilesL(XmlDetails::TScrPreProvisionDetail& aScrPreProvisionDetail, 
+															const std::string& aFileName,const CParameterList* aParamList, 
+															const CInterpretSIS& aInterpretSis, int& aNewFileFlag);
+
+/**
+ * Parse the Directory for resource file.
+ */
+void ParseResourceDir(const CParameterList* aParamList, const CInterpretSIS& aInterpretSis);
+
+/**
+ * Backup hash files for re-installation (SA over SA or PU over PU)
+ */
+void BackupHashForFile(const std::wstring& aFile, const int aDriveLetter, const std::wstring& aPath);
+
+/**
+ * Restore hash files for re-installation (SA over SA or PU over PU)
+ */
+void RestoreHashForFile(const std::wstring& aFile, const int aDriveLetter, const std::wstring& aPath);
+
+/**
+ * Utility function to Replace "/" to "\"
+ */
+int FirstInvalidDirSeparatorSizetap(std::wstring& aPath, std::wstring::size_type& aIndex);
+
+/**
+ * Utility function to Replace "/" to "\"
+ */
+std::wstring FixPathDelimiterstap( const std::wstring& aString );
+#endif //__DIRPARSE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/parse.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,337 @@
+// Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+//
+/** 
+* @file parse.cpp
+*
+* @internalComponent
+* @released
+*/
+#include "parse.h"
+#include "barsc2.h"
+
+std::string FullNameWithoutDrive(std::string& Buf )
+	{
+	  std::string iName;
+	   std::string::size_type index = Buf.find( ':' );
+	   if( index != std::string::npos )
+			iName.assign(Buf, index+1, Buf.size());
+	
+	   return iName;
+	}
+
+/**
+ * Converts from Ptr8* datatype to wstring
+ */
+std::wstring Ptr8ToWstring(const Ptr8* aBuf)
+{
+	std::wstring str2(aBuf->GetLength(), L'\0'); // Make room for characters
+
+	TUint8* temp = aBuf->GetPtr();
+	memcpy(str2.begin(),temp,aBuf->GetLength());
+	
+	return str2;
+}
+
+/**
+ * Converts from Ptr16* datatype to wstring
+ */
+std::wstring Ptr16ToWstring(const Ptr16* aBuf)
+{
+	std::wstring str2(aBuf->GetLength(), L'\0'); // Make room for characters
+
+	TUint16* temp = aBuf->GetPtr();
+	std::copy(temp,temp+aBuf->GetLength(),str2.begin());
+
+	return str2;
+}
+
+/**
+ * Converts from Ptr16* datatype to string
+ */
+std::string Ptr16ToString(Ptr16* aBuf)
+{
+		std::string str2(aBuf->GetLength(), '\0'); // Make room for characters
+
+		TUint16* temp = aBuf->GetPtr();
+		for(int i =0; i<aBuf->GetLength(); i++)
+		{
+			str2[i] = *temp++;
+		}
+		str2[aBuf->GetLength()] = '\0';
+		return str2;
+}
+
+//Local function to Copy TUint16
+void BufCpy(TUint16* aTemp1,TUint16* aTemp2, TInt aLength)
+{
+	for(TInt i =0 ; i< aLength; i++)
+	{
+		*aTemp1++ = *aTemp2++;
+	}
+}
+
+//Local function to Copy TUint8
+void BufCpy8(TUint8* aTemp1, const TUint8* aTemp2, TInt aLength)
+{
+	for(TInt i =0 ; i< aLength; i++)
+	{
+		*aTemp1++ = *aTemp2++;
+	}
+}
+
+//Search for either wild character in the input string.
+//return 1 if found else return 0
+TInt FindWild(PtrC16 *aPtr)
+{
+	TUint32 i = 0;
+	const TUint16* Pt = aPtr->iPtr;
+	for( i=0; i < aPtr->iMaxLength; i++)
+	{
+		if((*Pt=='*') || (*Pt=='?'))
+			return 1;
+		else
+			Pt++;
+	}
+	return 0;
+}
+
+//Find if wild character present in the input string
+//return 1 if found else return 0
+TInt FindWild(std::string& aRegistrationFileDrive, std::string& aAppFilePath, std::string& aAppFileNameAndExt)
+{
+
+	string::size_type index1 = aRegistrationFileDrive.find_last_of("*?");
+	if( index1 != string::npos )
+		return 1;
+
+	string::size_type index2 = aAppFilePath.find_last_of("*?");
+	if( index2 != string::npos )
+		return 1;
+
+	string::size_type index3 = aAppFileNameAndExt.find_last_of("*?");
+	if( index3 != string::npos )
+		return 1;
+	return 0;
+}
+
+//Default Constructor for class ParsePtrC
+ParsePtrC::ParsePtrC() 
+		: iNamePresent(0),iPathPresent(0),iExtPresent(0),iDrivePresent(0)
+{
+}
+
+//Destructor for class ParsePtrC
+ParsePtrC::~ParsePtrC() 
+{
+	delete iNameBuf;
+	delete Buf;
+	iNameBuf = NULL;
+	Buf = NULL;
+}
+
+//To Avoid double Delete in destructor.
+void ParsePtrC::SetToNull()
+{
+	iNameBuf = NULL;
+}
+
+//Constructor for class ParsePtrC
+ParsePtrC::ParsePtrC(const PtrC16* aName)
+	: iNamePresent(0),iPathPresent(0),iExtPresent(0),iDrivePresent(0)
+	{
+	iNameBuf = new PtrC16;
+	TUint16* temp = (TUint16*)aName->iPtr;
+	if(NULL==iNameBuf)
+	{
+		std::string errMsg= "Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	iNameBuf->iPtr = aName->iPtr;
+	iNameBuf->iMaxLength = aName->iMaxLength;
+
+	Buf = new string(aName->iMaxLength,'\0');
+
+	if(NULL==Buf)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+
+	for(TInt i = 0; i<aName->iMaxLength; i++ )
+	{
+		(*Buf)[i] = *temp;
+		temp++;
+	}
+}
+
+PtrC16* ParsePtrC::FullName()
+{
+	return iNameBuf;
+}
+
+std::string ParsePtrC::StrName()
+{
+	return *Buf;
+}
+
+//Constructor for class ParsePtrC
+ParsePtrC::ParsePtrC(std::string aStr)
+	: iNamePresent(0),iPathPresent(0),iExtPresent(0),iDrivePresent(0)
+{
+	Buf = new string;
+	if(NULL==Buf)
+	{
+		std::string errMsg= "Failed : Error in Reading File. Memory Allocation Failed";
+		throw CResourceFileException(errMsg);
+	}
+	*Buf = aStr;
+}
+
+std::string ParsePtrC::Name()
+{
+  string iName;
+
+  TInt i = Buf->rfind("\\");
+  if(i!=string::npos)
+     iName.assign(*Buf, i, Buf->size()-4);
+  else
+  {
+	  if(ExtPresent())
+		iName.assign(*Buf, i, Buf->size()-4);
+	  else
+		iName.assign(*Buf, 0, Buf->size());
+  }
+	  
+   return iName;
+}
+
+std::string ParsePtrC::NameAndExt()
+{
+  string iName;
+
+  TInt i = Buf->rfind("\\");
+  if(i!=string::npos)
+     iName.assign(*Buf, i, Buf->size());
+
+   return iName;
+}
+
+std::string ParsePtrC::FullPath()
+{
+  string iName;
+
+  TInt i = Buf->rfind("\\");
+  if(i!=string::npos)
+     iName.assign(*Buf, 0, i);
+
+   return iName;
+}
+
+std::string ParsePtrC::Path()
+{
+  string iName;
+
+  TInt j = Buf->rfind("\\");
+  TInt i = Buf->find("\\");
+  if(i!=string::npos)
+     iName.assign(*Buf, i, Buf->size()-j);
+
+   return iName;
+}
+
+std::string ParsePtrC::Drive()
+{
+  string iName;
+
+   string::size_type index = Buf->find( ':' );
+   if( index != string::npos )
+		iName.assign(*Buf, index-1, 2);
+
+   return iName;
+}
+
+std::string ParsePtrC::FullNameWithoutDrive()
+{
+  string iName;
+
+   string::size_type index = Buf->find( ':' );
+   if( index != string::npos )
+		iName.assign(*Buf, index+1, Buf->size());
+
+   return iName;
+}
+
+TInt ParsePtrC::NamePresent()
+{
+	TInt i = Buf->rfind("\\");
+	if(i!=string::npos)
+		iNamePresent = 1;
+	else
+	{
+		if(Buf!= NULL)
+			iNamePresent = 1;
+		else
+			iNamePresent = 0;
+	}
+	return iNamePresent;
+}
+
+TInt ParsePtrC::PathPresent()
+{
+	TInt i = Buf->find("\\");
+	if(i!=string::npos)
+		iPathPresent = 1;
+	else
+		iPathPresent = 0;
+	return iPathPresent;
+}
+
+TInt ParsePtrC::ExtPresent()
+{
+	TInt i = Buf->find(".");
+	if(i!=string::npos)
+		iExtPresent = 1;
+	else
+		iExtPresent = 0;
+	return iExtPresent;
+}
+
+TInt ParsePtrC::DrivePresent()
+{
+	TInt i = Buf->find(":");
+	if(i!=string::npos)
+		iDrivePresent = 1;
+	else
+		iDrivePresent = 0;
+	return iDrivePresent;
+}
+
+TInt ParsePtrC::IsWild()
+{
+	string::size_type index = Buf->find_last_of("*?");
+	if( index != string::npos )
+		return 1;
+	return 0;
+}
+
+TInt ParsePtrC::IsValidName()
+{
+	string::size_type index = Buf->find_last_of("*?< > : \" / |");
+	if( index != string::npos )
+		return 1;
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/parse.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,90 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// parse.h
+//
+/** 
+* @file parse.h
+*
+* @internalComponent
+* @released
+*/
+#ifndef __PARSE_H__
+#define __PARSE_H__
+
+#include <iostream>
+#include <string>
+#include "commontypes.h"
+using namespace std;
+
+#define KUidAppRegistrationResourceFile 0x101f8021
+
+//Local function to Copy TUint16
+void BufCpy(TUint16* aTemp1,TUint16* aTemp2, TInt aLength);
+//Local function to Copy TUint8
+void BufCpy8(TUint8* aTemp1, const TUint8* aTemp2, TInt aLength);
+//Find if wild character present in the input string
+TInt FindWild(PtrC16 *aPtr);
+//Find if wild character present in the input string
+TInt FindWild(std::string& aRegistrationFileDrive, std::string& aAppFilePath, std::string& aAppFileNameAndExt);
+
+std::string FullNameWithoutDrive(std::string& Buf );
+
+/**
+ * Converts from Ptr8* datatype to wstring
+ */
+std::wstring Ptr8ToWstring(const Ptr8* aBuf);
+/**
+ * Converts from Ptr16* datatype to wstring
+ */
+std::wstring Ptr16ToWstring(const Ptr16* aBuf);
+/**
+ * Converts from Ptr16* datatype to string
+ */
+std::string Ptr16ToString(Ptr16* aBuf);
+
+
+class ParsePtrC 
+	{
+public:
+	ParsePtrC();
+	~ParsePtrC();
+	ParsePtrC(std::string aStr);
+	ParsePtrC(const PtrC16* aName);
+	
+	PtrC16* FullName();
+	std::string StrName();
+	std::string Name();
+	std::string NameAndExt();
+	std::string FullPath();
+	std::string Path();
+	std::string Drive();
+	std::string FullNameWithoutDrive();
+	TInt NamePresent();
+	TInt PathPresent();
+	TInt ExtPresent();
+	TInt DrivePresent();
+	TInt IsWild();
+	TInt IsValidName();
+	void SetToNull();
+
+private:
+	PtrC16* iNameBuf;
+	TInt iNamePresent;
+	TInt iPathPresent;
+	TInt iExtPresent;
+	TInt iDrivePresent;
+	std::string* Buf;
+	};
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/uidtype.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,125 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+/** 
+* @file uidtype.cpp
+*
+* @internalComponent
+* @released
+*/
+#include <cassert>
+#include "uidtype.h"
+using namespace rscparser;
+// Class TUid
+
+TBool TUid::operator==(const TUid& aUid) const
+/**
+Compares two UIDs for equality.
+
+@param aUid The UID to be compared with this UID.
+
+@return True, if the two UIDs are equal; false otherwise. 
+*/
+	{
+
+	return(iUid==aUid.iUid);
+	}
+
+TBool TUid::operator!=(const TUid& aUid) const
+/**
+Compares two UIDs for inequality.
+
+@param aUid The UID to be compared with this UID.
+
+@return True, if the two UIDs are unequal; false otherwise. 
+*/
+	{
+
+	return(iUid!=aUid.iUid);
+	}
+
+/**
+Get  UID.
+
+@param Void
+
+@return UID. 
+*/
+TUint32 TUid::GetUid()
+{
+	return iUid;
+}
+
+TUidType::TUidType()
+/**
+Default constructor.
+
+Creates a UID type, and sets all three component UIDs to NullUid.
+*/
+    {
+
+	memset(this,0,sizeof(TUidType));
+    }
+
+TUidType::TUidType(TUid aUid1,TUid aUid2,TUid aUid3)
+/**
+Constructor that creates a UID type and sets all three UID components
+to the specified values.
+
+@param aUid1 Value for UID1.
+@param aUid2 Value for UID2.
+@param aUid3 Value for UID3.
+*/
+    {
+
+
+    iUid[0]=aUid1;
+    iUid[1]=aUid2;
+    iUid[2]=aUid3;
+    }
+
+
+const TUid& TUidType::operator[](TInt aIndex) const
+/**
+Gets the UID component as identified by the specified index.
+
+@param aIndex Index value indicating which UID component to return.
+               0 specifies UID1,
+               1 specifies UID2,
+               2 specifies UID3.
+
+@return A reference to the required UID component.
+
+@panic USER 37 if aIndex is not in the range 0 to 2, inclusive.
+*/
+    {
+
+	assert(aIndex>=0 && aIndex<KMaxCheckedUid);
+	return(iUid[aIndex]);
+    }
+
+TBool TUidType::operator==(const TUidType& aUidType) const
+/**
+Compares this UID type for equality with the specified UID type.
+
+@param aUidType The UID type to be compared. 
+
+@return True, if each component UID is equal to the corresponding component 
+        UID in the specified UID type; false, otherwise.
+*/
+    {
+
+    return(iUid[0]==aUidType.iUid[0] &&
+           iUid[1]==aUidType.iUid[1] &&
+           iUid[2]==aUidType.iUid[2]);
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/uidtype.h	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,127 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// uidtype.h
+//
+
+/** 
+* @file uidtype.h
+*
+* @internalComponent
+* @released
+*/
+
+#ifndef __UIDTYPE_H__
+#define __UIDTYPE_H__
+
+#include <iostream>
+#include "symbiantypes.h"
+
+namespace rscparser
+{
+/**
+@internalComponent
+@released
+
+Defines a Null UID value.
+
+@see TUid
+*/
+const TInt KNullUidValue=0;
+
+/**
+@publishedAll
+@released
+
+Defines the number of TUids that form a TUidType.
+
+@see TUid
+@see TUidType
+*/
+const TInt KMaxCheckedUid=3;
+
+
+/**
+@publishedAll
+@released
+
+A globally unique 32-bit number.
+*/
+class TUid
+	{
+public:
+	TBool operator==(const TUid& aUid) const;
+	TBool operator!=(const TUid& aUid) const;
+	static inline TUid Uid(TInt aUid);
+	static inline TUid Null();
+	TUint32 GetUid();
+	
+public:
+	/**
+	The 32-bit integer UID value.
+	*/
+	TUint32 iUid;
+	};
+
+
+/**
+@publishedAll
+@released
+
+Defines a null UID
+*/
+#define NullUid TUid::Null()
+
+/**
+Constructs a Null-valued TUid object.
+
+@return The constructed Null-valued TUid object.
+*/
+inline TUid TUid::Null()
+	{TUid uid={KNullUidValue};return uid;}
+
+/**
+Constructs the TUid object from a 32-bit integer.
+
+@param aUid The 32-bit integer value from which the TUid object is to be
+            constructed.
+
+@return The constructed TUid object.
+*/
+inline TUid TUid::Uid(TInt aUid)
+	{TUid uid={aUid};return uid;}
+	
+/**
+@publishedAll
+@released
+
+Encapsulates a set of three unique identifiers (UIDs) which, in combination, 
+identify a system object such as a GUI application or a DLL. The three
+component UIDs are referred to as UID1, UID2 and UID3.
+
+An object of this type is referred to as a compound identifier or a UID type.
+*/
+class TUidType
+	{
+public:
+
+	 TUidType();
+	 TUidType(TUid aUid1,TUid aUid2,TUid aUid3);
+	 TBool operator==(const TUidType& aUidType) const;
+	 const TUid& operator[](TInt anIndex) const;
+	
+private:
+	TUid iUid[KMaxCheckedUid];
+	};
+}
+#endif
\ No newline at end of file
--- a/secureswitools/swisistools/source/scrtool/data/create_db.xml	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/scrtool/data/create_db.xml	Fri Apr 16 15:05:20 2010 +0300
@@ -9,7 +9,8 @@
 	<SQLQuery>CREATE TABLE SoftwareTypeNames(NameId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_SoftwareTypeNames_SoftwareTypeId ON SoftwareTypeNames(SoftwareTypeId);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_SoftwareTypeNames_Name ON SoftwareTypeNames(Name);</SQLQuery>
-	<SQLQuery>CREATE TABLE SoftwareTypes(SoftwareTypeId INTEGER PRIMARY KEY NOT NULL,SifPluginUid INTEGER,InstallerSecureId INTEGER,ExecutionLayerSecureId INTEGER);</SQLQuery>
+	<SQLQuery>CREATE TABLE SoftwareTypes(SoftwareTypeId INTEGER PRIMARY KEY NOT NULL,SifPluginUid INTEGER,LauncherExecutable TEXT);</SQLQuery>
+	<SQLQuery>CREATE TABLE CustomAccessList(AccessId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SecureId INTEGER NOT NULL,AccessMode INTEGER DEFAULT 0);</SQLQuery>
 	<SQLQuery>CREATE TABLE MimeTypes(MimeTypeId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,MimeType TEXT NOT NULL UNIQUE COLLATE NOCASE);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_MimeTypes_SoftwareTypeId ON MimeTypes(SoftwareTypeId);</SQLQuery>
 	<SQLQuery>CREATE TABLE Components(ComponentId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SoftwareTypeName TEXT NOT NULL,Size INTEGER DEFAULT 0,Removable BOOLEAN DEFAULT 1,ScomoState INTEGER DEFAULT 0,DRMProtected INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,KnownRevoked INTEGER DEFAULT 0,OriginVerified INTEGER DEFAULT 0,InstalledDrives INTEGER DEFAULT 0,GlobalIdHash INTEGER DEFAULT 0,GlobalId TEXT UNIQUE,Version TEXT,InstallTime TEXT NOT NULL,CompPresence BOOLEAN DEFAULT 1);</SQLQuery>
@@ -32,5 +33,21 @@
 	<SQLQuery>CREATE INDEX idx_FileProperties_CmpFileId ON FileProperties(CmpFileId);</SQLQuery>
 	<SQLQuery>CREATE TABLE ScrVersion(MajorVersion INTEGER NOT NULL, MinorVersion INTEGER NOT NULL, BuildNumber INTEGER NOT NULL);</SQLQuery>
 	<SQLQuery>INSERT INTO ScrVersion(MajorVersion, MinorVersion, BuildNumber) VALUES(1, 1, 1);</SQLQuery>
+	<SQLQuery>CREATE TABLE AppRegistrationInfo(AppUid INTEGER PRIMARY KEY NOT NULL,ComponentId INTEGER DEFAULT 0,AppFile TEXT COLLATE NOCASE UNIQUE NOT NULL,TypeId INTEGER NOT NULL,Attributes INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,Embeddable INTEGER DEFAULT 0,NewFile INTEGER DEFAULT 0,Launch INTEGER DEFAULT 0,GroupName TEXT COLLATE NOCASE,DefaultScreenNumber INTEGER DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppRegistrationInfo_AppFile ON AppRegistrationInfo(AppFile);</SQLQuery>
+	<SQLQuery>CREATE TABLE FileOwnershipInfo(FileOwnerInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,FileName TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_FileOwnershipInfo_AppUid ON FileOwnershipInfo(AppUid);</SQLQuery>
+	<SQLQuery>CREATE TABLE ServiceInfo(ServiceId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,Uid INTEGER DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ServiceInfo_AppUid ON ServiceInfo(AppUid);</SQLQuery>
+	<SQLQuery>CREATE TABLE DataType(DataTypeId INTEGER PRIMARY KEY AUTOINCREMENT,ServiceId INTEGER NOT NULL,Priority INTEGER NOT NULL,Type TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_DataType_ServiceId ON DataType(ServiceId);</SQLQuery>
+	<SQLQuery>CREATE TABLE LocalizableAppInfo(LocalAppInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,ShortCaption TEXT COLLATE NOCASE,GroupName TEXT COLLATE NOCASE,Locale INTEGER DEFAULT 0,CaptionAndIconId INTEGER,CONSTRAINT U_AppUid_Locale UNIQUE (AppUid,Locale));</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_LocalizableAppInfo ON LocalizableAppInfo(AppUid,Locale);</SQLQuery>
+	<SQLQuery>CREATE TABLE ViewData(ViewId INTEGER PRIMARY KEY AUTOINCREMENT,LocalAppInfoId INTEGER NOT NULL,Uid INTEGER NOT NULL,ScreenMode INTEGER DEFAULT 0,CaptionAndIconId INTEGER);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ViewData_LocalAppInfoId ON ViewData(LocalAppInfoId);</SQLQuery>
+	<SQLQuery>CREATE TABLE CaptionAndIconInfo(CaptionAndIconId INTEGER PRIMARY KEY AUTOINCREMENT,Caption TEXT COLLATE NOCASE,NumberOfIcons INTEGER DEFAULT 0,IconFile TEXT COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE TABLE AppProperties(PropertyId INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT NOT NULL COLLATE NOCASE,Locale INTEGER DEFAULT 0,AppUid INTEGER NOT NULL,ServiceUid INTEGER DEFAULT 0,IntValue INTEGER,StrValue TEXT,IsStr8Bit BOOLEAN DEFAULT 0,CONSTRAINT U_AppUid_Locale_Name UNIQUE (AppUid,ServiceUid,Locale,Name));</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppProperties_AppUid ON AppProperties(AppUid);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppProperties_Name ON AppProperties(Name);</SQLQuery>
 </CreateDatabase>
 
Binary file secureswitools/swisistools/source/scrtool/data/preprovision.dtd has changed
--- a/secureswitools/swisistools/source/scrtool/options.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/scrtool/options.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -24,12 +24,12 @@
 #include <string>
 #include <algorithm>
 
-std::string COptions::iCurrentVersion = "Registry Database Generator Version 1, 0, 1";
+std::string COptions::iCurrentVersion = "Registry Database Generator Version 1, 0, 2";
 
 std::string COptions::iDescription =	"A utility for generating and updating the Software Component Registry database which stores "
 							"information for all installed software components.";
 
-std::string COptions::iCopyright = "Copyright (c) 2008 Symbian Software Ltd. All rights reserved.";
+std::string COptions::iCopyright = "Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.";
 
 std::string COptions::iUsage	=	
 						"Usage : scrtool [-h|-?] [-v] [-l] [-w] -c or -d [DB name] -f [Environment XML file] -p [Pre-provision XML file]"
@@ -294,4 +294,4 @@
 bool COptions::IsPreProvisionInfoAvailable()
 	{
 	return iPreProvisionUpdate;
-	}
\ No newline at end of file
+	}
--- a/secureswitools/swisistools/source/signsis/openssllicense.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/signsis/openssllicense.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
--- a/secureswitools/swisistools/source/signsis/parameter.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/signsis/parameter.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -2,7 +2,7 @@
 * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
+* under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
--- a/secureswitools/swisistools/source/sisxlibrary/utility_interface.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/sisxlibrary/utility_interface.h	Fri Apr 16 15:05:20 2010 +0300
@@ -99,6 +99,36 @@
  */
 int ConvertMultiByteToWideChar(const char* aSource, int aSourceLen, wchar_t* aTarget, int aTargetLen, TUint32 aCodePage = 0);
 
+/*
+Copies an existing file to a new file.
+@Parameters : The name of an existing file. 
+If lpExistingFileName does not exist, CopyFile fails, and GetLastError returns ERROR_FILE_NOT_FOUND.
+
+@Parameters : The name of the new file. 
+
+@Parameters : If this parameter is TRUE and the new file specified by lpNewFileName already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.
+
+Return Value
+If the function succeeds, the return value is nonzero.
+If the function fails, the return value is zero.
+*/
+
+int FileCopyA(const char* aSrc, const char* aDest, size_t aFlag);
+
+
+/*
+Moves an existing file or a directory, including its children
+@Parameters : The current name of the file or directory on the local computer. 
+@Parameters : The new name for the file or directory. The new name must not already exist. A new file may be on a different file system or drive. A new directory must be on the same drive. 
+
+Return Value
+If the function succeeds, the return value is nonzero.
+If the function fails, the return value is zero.
+*/
+
+int FileMoveA(const char* aSrc, const char* aDest);
+
+
 // interface for only Linux
 
 #ifdef __TOOLS2_LINUX__
--- a/secureswitools/swisistools/source/sisxlibrary/utility_linux.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/sisxlibrary/utility_linux.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -621,5 +621,14 @@
 	}
 
 
+int FileCopyA(const char* aSrc, const char* aDest, size_t aFlag)
+	{
+		int err= 0;
+		return err;
+	}
+int FileMoveA(const char* aSrc, const char* aDest)
+	{
+		int err= 0;
+		return err;
+	}
 
-
--- a/secureswitools/swisistools/source/sisxlibrary/utility_windows.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/sisxlibrary/utility_windows.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -129,7 +129,9 @@
 HANDLE MakeSISOpenFile(LPCWSTR pszFilename, DWORD dwAccessMode, DWORD dwCreateFlags)
 // Open file with Unicode filename correctly under Win95 and WinNT
 	{
-	return CreateFileW(pszFilename, dwAccessMode, 0, NULL, dwCreateFlags, FILE_ATTRIBUTE_NORMAL, NULL);
+	// Opening the file with FILE_SHARE_READ access, so that other processes can access
+	// the package file in parallel( Issue observed in Raptor with parallel builds udeb and urel)
+	return CreateFileW(pszFilename, dwAccessMode, 1, NULL, dwCreateFlags, FILE_ATTRIBUTE_NORMAL, NULL);
 	}
 
 BOOL MakeSISDeleteFile(LPCWSTR pszFilename)
@@ -183,3 +185,15 @@
 	return ::GetLastError();
 	}
 
+int FileCopyA(const char* aSrc, const char* aDest, size_t aFlag)
+{
+	int err=CopyFileA(aSrc,aDest,aFlag);
+	return err;
+}
+
+int FileMoveA(const char* aSrc, const char* aDest)
+{
+	int err=MoveFileA(aSrc,aDest);
+	return err;
+}
+
--- a/secureswitools/swisistools/source/xmlparser/xmlparser.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/xmlparser/xmlparser.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -248,8 +248,8 @@
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagUniqueSoftwareTypeName( &XMLString::release, XMLString::transcode("UniqueSoftwareTypeName") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagLocalizableSwTypeName( &XMLString::release, XMLString::transcode("LocalizableSoftwareTypeName") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagSifPluginUid( &XMLString::release, XMLString::transcode("SifPluginUid") );
-	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagInstallerSid( &XMLString::release, XMLString::transcode("InstallerSid") );
-	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagExecutionLayerSid( &XMLString::release, XMLString::transcode("ExecutionLayerSid") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagLauncherExecutable( &XMLString::release, XMLString::transcode("LauncherExecutable") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagCustomAcess( &XMLString::release, XMLString::transcode("CustomAcess") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagMIMEDetails( &XMLString::release, XMLString::transcode("MIMEDetails") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagMIMEType( &XMLString::release, XMLString::transcode("MIMEType") );
 	
@@ -278,19 +278,23 @@
 	sscanf(sifPluginUidText.get(),"%x",&sifPluginUidValue);
 	scrEnvDetails.iSifPluginUid = sifPluginUidValue;
 	
-	DOMNodeList* installerSid = aEnvironment->getElementsByTagName(tagInstallerSid.get());
-	textContent = installerSid->item(0)->getTextContent();
-	fn_auto_ptr<releaseChPtr,char> installerSidText(&XMLString::release, XMLString::transcode(textContent));
-	int installerSidValue = 0;
-	sscanf(installerSidText.get(),"%x",&installerSidValue);
-	scrEnvDetails.iInstallerSid = installerSidValue;
-	
-	DOMNodeList* executionLayerSid = aEnvironment->getElementsByTagName(tagExecutionLayerSid.get());
-	textContent = executionLayerSid->item(0)->getTextContent();
-	fn_auto_ptr<releaseChPtr,char> executionLayerSidText(&XMLString::release, XMLString::transcode(textContent));
-	int executionLayerSidValue = 0;
-	sscanf(executionLayerSidText.get(),"%x",&executionLayerSidValue);
-	scrEnvDetails.iExecutionLayerSid = executionLayerSidValue;
+    DOMNodeList* launcherExecutable = aEnvironment->getElementsByTagName(tagLauncherExecutable.get());
+    if(0 != launcherExecutable->getLength())
+        {
+		textContent = launcherExecutable->item(0)->getTextContent();
+		fn_auto_ptr<releaseXmlChPtr, XMLCh> launcherExecutableText( &XMLString::release,textContent );
+		const XMLCh* launcherExecutableValue = launcherExecutableText.get();
+		scrEnvDetails.iLauncherExecutable = launcherExecutableValue;
+		}
+    DOMNodeList* customAcessList = aEnvironment->getElementsByTagName(tagCustomAcess.get());
+	const  XMLSize_t customAcessDataCount = customAcessList->getLength();
+	for( XMLSize_t count=0 ; count<customAcessDataCount ; ++count )
+		{
+		DOMNode* customAcessRoot = customAcessList->item(count);
+		DOMElement* customAcessNode = static_cast< xercesc::DOMElement* >( customAcessRoot );
+		XmlDetails::TScrEnvironmentDetails::TCustomAcessList customAcessData = GetCustomAcessList(customAcessNode);
+		scrEnvDetails.iCustomAcessList.push_back(customAcessData);
+		}
 	
 	DOMNodeList* mimeDetails = aEnvironment->getElementsByTagName(tagMIMEDetails.get());
 	DOMNode* mimeDetailRoot	= mimeDetails->item(0);
@@ -381,6 +385,7 @@
 
 XmlDetails::TScrPreProvisionDetail::TComponent CScrXmlParser::GetPreProvisionData( const DOMElement* aDOMElement)
 	{
+	LOGENTER("CScrXmlParser::GetPreProvisionData()");
 	XmlDetails::TScrPreProvisionDetail::TComponent component;
 	
 	DOMNodeList* childNodes = aDOMElement->getChildNodes();
@@ -392,6 +397,7 @@
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagComponentFile( &XMLString::release, XMLString::transcode("ComponentFile") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagComponentDetails( &XMLString::release, XMLString::transcode("ComponentDetails") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagComponentDependency( &XMLString::release, XMLString::transcode("ComponentDependency") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfo( &XMLString::release, XMLString::transcode("ApplicationRegistrationInfo") );
 
 	XmlDetails::TScrPreProvisionDetail::TComponentDetails componentDetails = GetComponentDetails(aDOMElement);
 	component.iComponentDetails = componentDetails;
@@ -422,13 +428,19 @@
 			XmlDetails::TScrPreProvisionDetail::TComponentDependency componentDependency = GetComponentDependency(currentElement);
 			component.iComponentDependency = componentDependency;
 			}
+		else if( XMLString::equals(currentElement->getTagName(), tagApplicationRegistrationInfo.get()))
+			{
+			XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo appRegistrationInfo = GetApplicationRegistrationInfo(currentElement);
+			component.iApplicationRegistrationInfo.push_back(appRegistrationInfo);
+			}
 		}
-
+	LOGEXIT("CScrXmlParser::GetPreProvisionData()");
 	return component;
 	}
 
 XmlDetails::TScrPreProvisionDetail::TComponentLocalizable CScrXmlParser::GetComponentLocalizable(const DOMElement* aDOMElement)
 	{
+	LOGENTER("CScrXmlParser::GetComponentLocalizable()");
 	// tags in ComponentLocalizable
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagComponentLocalizableLocale( &XMLString::release, XMLString::transcode("ComponentLocalizable_Locale") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagComponentLocalizableName( &XMLString::release, XMLString::transcode("ComponentLocalizable_Name") );
@@ -454,13 +466,14 @@
 		const XMLCh* textVendor = vendor->item(0)->getTextContent();
 		componentLocalizable.iVendor = textVendor;
 		}
-
+	LOGEXIT("CScrXmlParser::GetComponentLocalizable()");
 	return componentLocalizable;
 	
 	}
 
 XmlDetails::TScrPreProvisionDetail::TComponentProperty CScrXmlParser::GetComponentProperty(const DOMElement* aEnvironment)
 	{
+	LOGENTER("CScrXmlParser::GetComponentProperty()");
 	// tags in ComponentProperty
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagComponentPropertyName( &XMLString::release, XMLString::transcode("Name") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagComponentPropertyLocale( &XMLString::release, XMLString::transcode("ComponentProperty_Locale") );
@@ -515,13 +528,14 @@
 		const XMLCh* textIsBinary = isBinary->item(0)->getTextContent();
 		componentProperty.iIsStr8Bit = Util::WideCharToInteger(textIsBinary);		
 		}
-
+	LOGEXIT("CScrXmlParser::GetComponentProperty()");
 	return componentProperty;
 	
 	}
 
 XmlDetails::TScrPreProvisionDetail::TComponentFile CScrXmlParser::GetComponentFile( const DOMElement* aDOMElement)
 	{
+	LOGENTER("CScrXmlParser::GetComponentFile()");
 	XmlDetails::TScrPreProvisionDetail::TComponentFile componentFile;
 	
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagFileProperty( &XMLString::release, XMLString::transcode("FileProperty") );
@@ -543,12 +557,13 @@
 	DOMNamedNodeMap* attributes = aDOMElement->getAttributes();
 	DOMNode* location = attributes->getNamedItem(tagLocation.get());
 	componentFile.iLocation = location->getTextContent();
-	
+	LOGEXIT("CScrXmlParser::GetComponentFile()");
 	return componentFile;
 	}
 
 XmlDetails::TScrPreProvisionDetail::TComponentDependency CScrXmlParser::GetComponentDependency( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement)
 	{
+	LOGENTER("CScrXmlParser::GetComponentDependency()");
 	XmlDetails::TScrPreProvisionDetail::TComponentDependency componentDependency;
 	
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagDepList( &XMLString::release, XMLString::transcode("DependencyList") );
@@ -586,13 +601,14 @@
 	DOMNamedNodeMap* attributes = aDOMElement->getAttributes();
 	DOMNode* dependentId = attributes->getNamedItem(tagDependentId.get());
 	componentDependency.iDependentId = dependentId->getTextContent();
-	
+	LOGEXIT("CScrXmlParser::GetComponentDependency()");
 	return componentDependency;
 	}
 
 XmlDetails::TScrPreProvisionDetail::TComponentFile::TFileProperty 
 	CScrXmlParser::GetFileProperty( const DOMElement* aDOMElement)
 	{
+	LOGENTER("CScrXmlParser::GetFileProperty()");
 	// tag for FileProperty
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagFilePropertyName( &XMLString::release, XMLString::transcode("Name") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagFilePropertyValue( &XMLString::release, XMLString::transcode("FileProperty_Value") );
@@ -638,13 +654,16 @@
 				}
 			}
 		}
+	LOGEXIT("CScrXmlParser::GetFileProperty()");
 	return fileProperty;
 	}
 		
 XmlDetails::TScrPreProvisionDetail::TComponentDetails 
 	CScrXmlParser::GetComponentDetails( const DOMElement* aDOMElement)
 	{
+	LOGENTER("CScrXmlParser::GetComponentDetails()");
 	// tags for ComponentDetails
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagRomApplication( &XMLString::release, XMLString::transcode("RomApplication") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagRemovable( &XMLString::release, XMLString::transcode("Removable") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagSize( &XMLString::release, XMLString::transcode("Size") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagScomoState( &XMLString::release, XMLString::transcode("ScomoState") );
@@ -655,6 +674,7 @@
 	
 	XmlDetails::TScrPreProvisionDetail::TComponentDetails componentDetails;
 	
+	DOMNodeList* romApplication	= aDOMElement->getElementsByTagName(tagRomApplication.get());
 	DOMNodeList* removable	= aDOMElement->getElementsByTagName(tagRemovable.get());
 	DOMNodeList* size		= aDOMElement->getElementsByTagName(tagSize.get());
 	DOMNodeList* scomoState = aDOMElement->getElementsByTagName(tagScomoState.get());
@@ -663,6 +683,13 @@
 	DOMNodeList* originVerified	= aDOMElement->getElementsByTagName(tagOriginVerified.get());
 	DOMNodeList* hidden	= aDOMElement->getElementsByTagName(tagHidden.get());
 	
+	if( romApplication->getLength() != 0)
+		{
+		LOGINFO("CScrXmlParser::GetComponentDetails()- rom app");
+		const XMLCh* textRomApplication = romApplication->item(0)->getTextContent();
+		componentDetails.iIsRomApplication = Util::WideCharToInteger(textRomApplication);
+		}
+
 	if( removable->getLength() != 0)
 		{
 		const XMLCh* textRemovable = removable->item(0)->getTextContent();
@@ -716,13 +743,14 @@
 		const XMLCh* textHidden = hidden->item(0)->getTextContent();
 		componentDetails.iIsHidden = Util::WideCharToInteger(textHidden);
 		}
-	
+	LOGEXIT("CScrXmlParser::GetComponentDetails()");
 	return componentDetails;
 	}
 
 XmlDetails::TScrEnvironmentDetails::TLocalizedSoftwareTypeName 
 	CScrXmlParser::GetLocalizedSoftwareTypeName(const DOMElement* aDOMElement)
 	{
+	LOGENTER("CScrXmlParser::GetLocalizedSoftwareTypeName()");
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagSwTypeNameLocale( &XMLString::release, XMLString::transcode("Locale") );
 	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagSwTypeNameValue( &XMLString::release, XMLString::transcode("Value") );
 	
@@ -737,8 +765,567 @@
 	
 	const XMLCh* textName = name->getTextContent();
 	localizedSwTypeName.iName = textName;
+	LOGEXIT("CScrXmlParser::GetLocalizedSoftwareTypeName()");
+	return localizedSwTypeName;
+	}
 
-	return localizedSwTypeName;
+XmlDetails::TScrEnvironmentDetails::TCustomAcessList 
+	CScrXmlParser::GetCustomAcessList(const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetCustomAcessList()");
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagSecureId( &XMLString::release, XMLString::transcode("SecureId") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAccessMode( &XMLString::release, XMLString::transcode("AccessMode") );
+	
+	DOMNamedNodeMap* attributes = aDOMElement->getAttributes();
+	DOMNode* secureId = attributes->getNamedItem(tagSecureId.get());
+	DOMNode* accessMode = attributes->getNamedItem(tagAccessMode.get());
+	
+	XmlDetails::TScrEnvironmentDetails::TCustomAcessList customAcessList;
+
+	fn_auto_ptr<releaseChPtr,char> textSecureId(&XMLString::release, XMLString::transcode(secureId->getTextContent()));
+	int secureIdVal=0;	
+	sscanf(textSecureId.get(),"%x",&secureIdVal);
+	customAcessList.iSecureId = secureIdVal;
+	
+	const XMLCh* textAccessMode = accessMode->getTextContent();
+	customAcessList.iAccessMode = Util::WideCharToInteger(textAccessMode);
+	LOGEXIT("CScrXmlParser::GetCustomAcessList()");
+	return customAcessList;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo CScrXmlParser::GetApplicationRegistrationInfo(const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetApplicationRegistrationInfo()");
+	// tags in ApplicationRegistrationInfo
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfoAppAttribute( &XMLString::release, XMLString::transcode("ApplicationAttribute") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfoOpaqueData ( &XMLString::release, XMLString::transcode("OpaqueData") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfoFileOwnershipInfo( &XMLString::release, XMLString::transcode("FileOwnershipinfo") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfoAppDataType( &XMLString::release, XMLString::transcode("ApplicationDataType") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfoAppServiceInfo( &XMLString::release, XMLString::transcode("ApplicationServiceInfo") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfoAppLocalizableInfo( &XMLString::release, XMLString::transcode("ApplicationLocalizableInfo") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationRegistrationInfoAppProperty( &XMLString::release, XMLString::transcode("ApplicationProperty") );
+
+	DOMNodeList* appAttributes = aDOMElement->getElementsByTagName(tagApplicationRegistrationInfoAppAttribute.get());
+	const XMLSize_t appAttributeCount = appAttributes->getLength();
+	DOMNodeList* OpaqueData	= aDOMElement->getElementsByTagName(tagApplicationRegistrationInfoOpaqueData.get());
+	const XMLSize_t OpaqueDataCount = OpaqueData->getLength();
+	DOMNodeList* fileOwnershipInfos	= aDOMElement->getElementsByTagName(tagApplicationRegistrationInfoFileOwnershipInfo.get());
+	const XMLSize_t fileOwnershipInfoCount = fileOwnershipInfos->getLength();
+	DOMNodeList* appServiceInfos = aDOMElement->getElementsByTagName(tagApplicationRegistrationInfoAppServiceInfo.get());
+	const XMLSize_t appServiceInfoCount = appServiceInfos->getLength();
+	DOMNodeList* appLocalizableInfos	= aDOMElement->getElementsByTagName(tagApplicationRegistrationInfoAppLocalizableInfo.get());
+	const XMLSize_t appLocalizableInfoCount = appLocalizableInfos->getLength();
+	DOMNodeList* appProperties = aDOMElement->getElementsByTagName(tagApplicationRegistrationInfoAppProperty.get());
+	const XMLSize_t appPropertyCount = appProperties->getLength();
+
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo appRegistrationInfo;
+
+	// for each AppAttribute retrieve all tags
+	for( XMLSize_t index = 0; index < appAttributeCount; ++index )
+		{
+		DOMElement* currentappAttribute = static_cast< xercesc::DOMElement* >( appAttributes->item(index) );
+		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute appAttribute = GetAppAttribute(currentappAttribute);
+		appRegistrationInfo.iApplicationAttribute.push_back(appAttribute);
+		}
+
+	// for each OpaqueData retrieve all tags
+	for( XMLSize_t index = 0; index < OpaqueDataCount; ++index )
+		{
+		DOMElement* currentOpaqueData = static_cast< xercesc::DOMElement* >( OpaqueData->item(index) );
+		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty appProperty;
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType opaqueDataType = GetOpaqueDataType(currentOpaqueData);
+
+		appProperty.iLocale = opaqueDataType.iLocale;
+		appProperty.iName = L"OpaqueData";
+		appProperty.iIntValue = 0;
+		appProperty.iIsStr8Bit = true;
+		appProperty.iServiceUid = 0;
+		appProperty.iStrValue = opaqueDataType.iOpaqueData;
+		
+		appRegistrationInfo.iApplicationProperty.push_back(appProperty);
+		}
+
+	// for each FileOwnershipInfo retrieve all tags
+	for( XMLSize_t index = 0; index < fileOwnershipInfoCount; ++index )
+		{
+		DOMElement* currentFileOwnershipInfo = static_cast< xercesc::DOMElement* >( fileOwnershipInfos->item(index) );
+
+		std::wstring file = GetFileOwnershipInfo(currentFileOwnershipInfo);
+
+		appRegistrationInfo.iFileOwnershipInfo.push_back(file);
+		}
+
+	// for each appServiceInfo retrieve all tags
+	for( XMLSize_t index = 0; index < appServiceInfoCount; ++index )
+		{
+		DOMElement* currentappServiceInfo = static_cast< xercesc::DOMElement* >( appServiceInfos->item(index) );
+		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo appServiceInfo = GetAppServiceInfo(currentappServiceInfo, appRegistrationInfo);
+		appRegistrationInfo.iApplicationServiceInfo.push_back(appServiceInfo);
+		}
+
+	// for each appLocalizableInfo retrieve all tags
+	for( XMLSize_t index = 0; index < appLocalizableInfoCount; ++index )
+		{
+		DOMElement* currentAppLocalizableInfo = static_cast< xercesc::DOMElement* >( appLocalizableInfos->item(index) );
+		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo appLocalizableInfo = GetAppLocalizableInfo(currentAppLocalizableInfo);
+		appRegistrationInfo.iApplicationLocalizableInfo.push_back(appLocalizableInfo);
+		}
+
+	// for each AppProperty retrieve all tags
+	for( XMLSize_t index = 0; index < appPropertyCount; ++index )
+		{
+		DOMElement* currentAppProperty = static_cast< xercesc::DOMElement* >( appProperties->item(index) );
+		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty appProperty = GetAppProperty(currentAppProperty);
+		appRegistrationInfo.iApplicationProperty.push_back(appProperty);
+		}
+	LOGEXIT("CScrXmlParser::GetApplicationRegistrationInfo()");
+	return appRegistrationInfo;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute 
+	CScrXmlParser::GetAppAttribute( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetAppAttribute()");
+	// tags in AppAttribute
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppAttributeName( &XMLString::release, XMLString::transcode("Name") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppAttributeValue( &XMLString::release, XMLString::transcode("ApplicationAttribute_Value") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppAttributeIsBinary( &XMLString::release, XMLString::transcode("ApplicationAttribute_IsBinary") );
+		
+	// tags of ComponentProperty_Value
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationAttributeIntValue( &XMLString::release, XMLString::transcode("ApplicationAttribute_IntValue") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagApplicationAttributeStrValue( &XMLString::release, XMLString::transcode("ApplicationAttribute_StrValue") );
+	
+	// attribute - name
+	DOMNamedNodeMap* attributes = aDOMElement->getAttributes();
+	DOMNode* name = attributes->getNamedItem(tagAppAttributeName.get());
+		
+	DOMNodeList* value = aDOMElement->getElementsByTagName(tagAppAttributeValue.get());
+	DOMNodeList* isBinary = aDOMElement->getElementsByTagName(tagAppAttributeIsBinary.get());
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute appAttribute;
+	
+	const XMLCh* textName = name->getTextContent();
+	appAttribute.iName	= textName;
+	
+	DOMNodeList* childNodes = value->item(0)->getChildNodes();
+	const XMLSize_t nodeCount = childNodes->getLength();
+
+	for(int index = 0; index< nodeCount; ++index)
+		{
+		DOMElement* currentElement = static_cast< xercesc::DOMElement* >( childNodes->item(index) );
+		if( XMLString::equals(currentElement->getTagName(), tagApplicationAttributeIntValue.get()))
+			{
+			appAttribute.iIsIntValue = true;
+			appAttribute.iValue = currentElement->getTextContent();
+			break;
+			}
+		else if( XMLString::equals(currentElement->getTagName(), tagApplicationAttributeStrValue.get()))
+			{
+			appAttribute.iIsIntValue = false;
+			appAttribute.iValue = currentElement->getTextContent();
+			break;
+			}
+		}
+		
+	if(isBinary->getLength() != 0)
+		{
+		const XMLCh* textIsBinary = isBinary->item(0)->getTextContent();
+		appAttribute.iIsStr8Bit = Util::WideCharToInteger(textIsBinary);		
+		}
+	LOGEXIT("CScrXmlParser::GetAppAttribute()");
+	return appAttribute;
+	}
+
+std::wstring CScrXmlParser::GetFileOwnershipInfo( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetFileOwnershipInfo()");
+	// tags in FileOwnershipInfo 
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagFileName( &XMLString::release, XMLString::transcode("FileName") );
+
+	DOMNodeList* fileName = aDOMElement->getElementsByTagName(tagFileName.get());
+	
+	std::wstring file;
+
+	if( fileName->getLength() != 0)
+		{
+		const XMLCh* fil = fileName->item(0)->getTextContent();
+		file = fil;
+		}
+
+	LOGEXIT("CScrXmlParser::GetFileOwnershipInfo()");
+	return file;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType 
+	CScrXmlParser::GetDataType( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetDataType()");
+	// tags in DataType 
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagDataTypePriority( &XMLString::release, XMLString::transcode("Priority") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagDataType( &XMLString::release, XMLString::transcode("Type") );
+
+	DOMNodeList* priority = aDOMElement->getElementsByTagName(tagDataTypePriority.get());
+	DOMNodeList* type = aDOMElement->getElementsByTagName(tagDataType.get());
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType dataType;
+
+	if( priority->getLength() != 0)
+		{
+		const XMLCh* pri = priority->item(0)->getTextContent();
+		dataType.iPriority = Util::WideCharToInteger(pri);
+		}
+
+	if( type->getLength() != 0)
+		{
+		const XMLCh* typ = type->item(0)->getTextContent();
+		dataType.iType = typ;
+		}
+	LOGEXIT("CScrXmlParser::GetDataType()");
+	return dataType;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType 
+	CScrXmlParser::GetOpaqueDataType( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetOpaqueDataType()");
+	// tags in OpaqueDataType 
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagData( &XMLString::release, XMLString::transcode("Data") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagOpaqueLocale( &XMLString::release, XMLString::transcode("OpaqueLocale") );
+
+	DOMNodeList* Data = aDOMElement->getElementsByTagName(tagData.get());
+	DOMNodeList* OpaqueLocale = aDOMElement->getElementsByTagName(tagOpaqueLocale.get());
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType opaqueDataType;
+
+	if( OpaqueLocale->getLength() != 0)
+		{
+		const XMLCh* pri = OpaqueLocale->item(0)->getTextContent();
+		opaqueDataType.iLocale = Util::WideCharToInteger(pri);
+		}
+
+	if( Data->getLength() != 0)
+		{
+		const XMLCh* typ = Data->item(0)->getTextContent();
+		opaqueDataType.iOpaqueData = typ;
+		}
+	LOGEXIT("CScrXmlParser::GetOpaqueDataType()");
+	return opaqueDataType;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType 
+	CScrXmlParser::GetServiceOpaqueDataType( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetServiceOpaqueDataType()");
+	// tags in OpaqueDataType 
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagServiceData( &XMLString::release, XMLString::transcode("ServiceData") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagServiceOpaqueLocale( &XMLString::release, XMLString::transcode("ServiceOpaqueLocale") );
+
+	DOMNodeList* ServiceData = aDOMElement->getElementsByTagName(tagServiceData.get());
+	DOMNodeList* ServiceOpaqueLocale = aDOMElement->getElementsByTagName(tagServiceOpaqueLocale.get());
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType opaqueDataType;
+
+	if( ServiceOpaqueLocale->getLength() != 0)
+		{
+		const XMLCh* pri = ServiceOpaqueLocale->item(0)->getTextContent();
+		opaqueDataType.iLocale = Util::WideCharToInteger(pri);
+		}
+
+	if( ServiceData->getLength() != 0)
+		{
+		const XMLCh* typ = ServiceData->item(0)->getTextContent();
+		opaqueDataType.iOpaqueData = typ;
+		}
+	LOGEXIT("CScrXmlParser::GetServiceOpaqueDataType()");
+	return opaqueDataType;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo 
+	CScrXmlParser::GetAppServiceInfo( const DOMElement* aDOMElement, XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppRegistrationInfo )
+	{
+	LOGENTER("CScrXmlParser::GetAppServiceInfo()");
+	// tags in AppServiceInfo
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppServiceInfoUid( &XMLString::release, XMLString::transcode("Uid") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppServiceAppProperty( &XMLString::release, XMLString::transcode("ServiceOpaqueData") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppServiceInfoDataType( &XMLString::release, XMLString::transcode("ApplicationDataType") );
+
+	DOMNodeList* uid = aDOMElement->getElementsByTagName(tagAppServiceInfoUid.get());
+
+	DOMNodeList* ServiceOpaqueData = aDOMElement->getElementsByTagName(tagAppServiceAppProperty.get());
+	const XMLSize_t ServiceOpaqueDataCount = ServiceOpaqueData->getLength();
+	
+	DOMNodeList* dataTypes = aDOMElement->getElementsByTagName(tagAppServiceInfoDataType.get());
+	const XMLSize_t dataTypeCount = dataTypes->getLength();
+
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo appServiceInfo;
+
+	if( uid->getLength() != 0)
+		{
+		const XMLCh* priority = uid->item(0)->getTextContent();
+		appServiceInfo.iUid = Util::WideCharToInteger(priority);
+		}
+
+	// for each OpaqueData retrieve all tags
+	for( XMLSize_t index = 0; index < ServiceOpaqueDataCount; ++index )
+		{
+		DOMElement* currentOpaqueData = static_cast< xercesc::DOMElement* >( ServiceOpaqueData->item(index) );
+		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty appProperty;
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType opaqueDataType = GetServiceOpaqueDataType(currentOpaqueData);
+
+		appProperty.iLocale = opaqueDataType.iLocale;
+		appProperty.iName = L"OpaqueData";
+		appProperty.iIntValue = 0;
+		appProperty.iIsStr8Bit = true;
+		appProperty.iServiceUid = appServiceInfo.iUid;
+		appProperty.iStrValue = opaqueDataType.iOpaqueData;
+		
+		aAppRegistrationInfo.iApplicationProperty.push_back(appProperty);
+		}
+
+	// for each DataType retrieve all tags
+	for( XMLSize_t index = 0; index < dataTypeCount; ++index )
+		{
+		DOMElement* currentDataType = static_cast< xercesc::DOMElement* >( dataTypes->item(index) );
+		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType dataType = GetDataType(currentDataType);
+		appServiceInfo.iDataType.push_back(dataType);
+		}
+	LOGEXIT("CScrXmlParser::GetAppServiceInfo()");
+	return appServiceInfo;
+
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo 
+	CScrXmlParser::GetAppLocalizableInfo( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetAppLocalizableInfo()");
+	// tags in AppLocalizableInfo  
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoAttribute( &XMLString::release, XMLString::transcode("LocalizableAttribute") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoViewData ( &XMLString::release, XMLString::transcode("ViewData") );
+	
+	DOMNodeList* localizableAttributes = aDOMElement->getElementsByTagName(tagAppLocalizableInfoAttribute.get());
+	const XMLSize_t attributeCount = localizableAttributes->getLength();
+	DOMNodeList* viewData = aDOMElement->getElementsByTagName(tagAppLocalizableInfoViewData.get());
+	const XMLSize_t viewDataCount = viewData->getLength();
+
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo appLocalizableInfo;
+
+	LOGINFO("for each AppLocalizableInfoAttribute retrieve all tags");
+	// for each AppLocalizableInfoAttribute retrieve all tags
+	for( XMLSize_t index = 0; index < attributeCount; ++index )
+		{
+		DOMElement* currentLocalizableAttribute = static_cast< xercesc::DOMElement* >( localizableAttributes->item(index) );
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute appLocalizableAttribute = GetAppLocalizableAttribute(currentLocalizableAttribute);
+		appLocalizableInfo.iLocalizableAttribute.push_back(appLocalizableAttribute);
+		}
+
+	LOGINFO("for each AppLocalizableViewData retrieve all tags");
+	// for each AppLocalizableViewData retrieve all tags
+	
+	for( XMLSize_t index = 0; index < viewDataCount; ++index )
+		{
+		DOMElement* currentLocalizableViewData = static_cast< xercesc::DOMElement* >( viewData->item(index) );
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData appLocalizableViewData = GetAppLocalizableViewData(currentLocalizableViewData);
+		LOGINFO("push_back viewdata");
+		appLocalizableInfo.iViewData.push_back(appLocalizableViewData);
+		}
+
+	LOGEXIT("CScrXmlParser::GetAppLocalizableInfo()");
+	return appLocalizableInfo;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute 
+	CScrXmlParser::GetAppLocalizableAttribute( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetAppLocalizableAttribute()");
+	// tags in AppLocalizableInfo  
+	// tags in AppLocalizableInfoAttribute
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoAttributeName( &XMLString::release, XMLString::transcode("Name") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoAttributeValue( &XMLString::release, XMLString::transcode("LocalizableAttribute_Value") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoAttributeIsBinary( &XMLString::release, XMLString::transcode("LocalizableAttribute_IsBinary") );
+		
+	// tags of AppLocalizableInfoAttribute_Value
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoAttributeIntValue( &XMLString::release, XMLString::transcode("LocalizableAttribute_IntValue") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoAttributeStrValue( &XMLString::release, XMLString::transcode("LocalizableAttribute_StrValue") );
+	
+	LOGINFO("attribute - name");
+	// attribute - name
+	DOMNamedNodeMap* attributes = aDOMElement->getAttributes();
+	DOMNode* name = attributes->getNamedItem(tagAppLocalizableInfoAttributeName.get());
+		
+	DOMNodeList* value = aDOMElement->getElementsByTagName(tagAppLocalizableInfoAttributeValue.get());
+	DOMNodeList* isBinary = aDOMElement->getElementsByTagName(tagAppLocalizableInfoAttributeIsBinary.get());
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute appLocalizableAttribute;
+	
+	LOGINFO("name->getTextContent");
+	const XMLCh* textName = name->getTextContent();
+	appLocalizableAttribute.iName = textName;
+	
+	DOMNodeList* childNodes = value->item(0)->getChildNodes();
+	const XMLSize_t nodeCount = childNodes->getLength();
+
+	for(int index = 0; index< nodeCount; ++index)
+		{
+		DOMElement* currentElement = static_cast< xercesc::DOMElement* >( childNodes->item(index) );
+		if( XMLString::equals(currentElement->getTagName(), tagAppLocalizableInfoAttributeIntValue.get()))
+			{
+			appLocalizableAttribute.iIsIntValue = true;
+			appLocalizableAttribute.iValue = currentElement->getTextContent();
+			break;
+			}
+		else if( XMLString::equals(currentElement->getTagName(), tagAppLocalizableInfoAttributeStrValue.get()))
+			{
+			appLocalizableAttribute.iIsIntValue = false;
+			appLocalizableAttribute.iValue = currentElement->getTextContent();
+			break;
+			}
+		}
+		
+	if(isBinary->getLength() != 0)
+		{
+		const XMLCh* textIsBinary = isBinary->item(0)->getTextContent();
+		appLocalizableAttribute.iIsStr8Bit = Util::WideCharToInteger(textIsBinary);		
+		}
+
+	LOGEXIT("CScrXmlParser::GetAppLocalizableAttribute()");
+	return appLocalizableAttribute;
+	}
+
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData 
+	CScrXmlParser::GetAppLocalizableViewData( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetAppLocalizableViewData()");
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableInfoViewDataAttribute ( &XMLString::release, XMLString::transcode("ViewDataAttribute") );
+
+	DOMNodeList* viewDataAttr = aDOMElement->getElementsByTagName(tagAppLocalizableInfoViewDataAttribute.get());
+	const XMLSize_t viewDataAttrCount = viewDataAttr->getLength();
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData appViewData;
+
+	for( XMLSize_t index = 0; index < viewDataAttrCount; ++index )
+	{
+		DOMElement* currentLocalizableViewData = static_cast< xercesc::DOMElement* >( viewDataAttr->item(index) );
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes appLocalizableViewData = GetAppLocalizableViewDataAttributes(currentLocalizableViewData);
+		LOGINFO("push_back viewdata");
+		appViewData.iViewDataAttributes.push_back(appLocalizableViewData);
+	}
+	LOGEXIT("CScrXmlParser::GetAppLocalizableViewData()");
+	return appViewData;
+	}
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes 
+	CScrXmlParser::GetAppLocalizableViewDataAttributes( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetAppLocalizableViewDataAttributes()");
+	// tags in AppLocalizableViewData
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableViewDataName( &XMLString::release, XMLString::transcode("Name") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableViewDataValue( &XMLString::release, XMLString::transcode("ViewData_Value") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableViewDataIsBinary( &XMLString::release, XMLString::transcode("ViewData_IsBinary") );
+		
+	// tags of AppLocalizableViewData_Value
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableViewDataIntValue( &XMLString::release, XMLString::transcode("ViewData_IntValue") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppLocalizableViewDataStrValue( &XMLString::release, XMLString::transcode("ViewData_StrValue") );
+		
+	LOGINFO("attribute - name");
+	// attribute - name
+	DOMNamedNodeMap* attributes = aDOMElement->getAttributes();
+	DOMNode* name = attributes->getNamedItem(tagAppLocalizableViewDataName.get());
+		
+	DOMNodeList* value = aDOMElement->getElementsByTagName(tagAppLocalizableViewDataValue.get());
+	DOMNodeList* isBinary = aDOMElement->getElementsByTagName(tagAppLocalizableViewDataIsBinary.get());
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes appLocalizableViewDataAttribute;
+	
+	LOGINFO("name->getTextContent");
+	const XMLCh* textName = name->getTextContent();
+	LOGINFO("assign name");
+	appLocalizableViewDataAttribute.iName = textName;
+
+	LOGINFO("getChildNodes()");
+	DOMNodeList* childNodes = value->item(0)->getChildNodes();
+	LOGINFO("childNodes->getLength()");
+	const XMLSize_t nodeCount = childNodes->getLength();
+
+	for(int index = 0; index< nodeCount; ++index)
+		{
+		DOMElement* currentElement = static_cast< xercesc::DOMElement* >( childNodes->item(index) );
+		if( XMLString::equals(currentElement->getTagName(), tagAppLocalizableViewDataIntValue.get()))
+			{
+			LOGINFO("int value");
+			appLocalizableViewDataAttribute.iIsIntValue = true;
+			appLocalizableViewDataAttribute.iValue = currentElement->getTextContent();
+			break;
+			}
+		else if( XMLString::equals(currentElement->getTagName(), tagAppLocalizableViewDataStrValue.get()))
+			{
+			LOGINFO("str value");
+			appLocalizableViewDataAttribute.iIsIntValue = false;
+			appLocalizableViewDataAttribute.iValue = currentElement->getTextContent();
+			break;
+			}
+		}
+		
+	if(isBinary->getLength() != 0)
+		{
+		LOGINFO("bin value");
+		const XMLCh* textIsBinary = isBinary->item(0)->getTextContent();
+		appLocalizableViewDataAttribute.iIsStr8Bit = Util::WideCharToInteger(textIsBinary);		
+		}
+	LOGEXIT("CScrXmlParser::GetAppLocalizableViewDataAttributes()");
+	return appLocalizableViewDataAttribute;
+	}
+
+
+XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty 
+	CScrXmlParser::GetAppProperty( const DOMElement* aDOMElement)
+	{
+	LOGENTER("CScrXmlParser::GetAppProperty()");
+	// tags in AppProperty
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppPropertyLocale( &XMLString::release, XMLString::transcode("Locale") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppPropertyName( &XMLString::release, XMLString::transcode("Name") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppPropertyIntValue( &XMLString::release, XMLString::transcode("IntValue") );
+	fn_auto_ptr<releaseXmlChPtr, XMLCh> tagAppPropertyStrValue( &XMLString::release, XMLString::transcode("StrValue") );
+
+	DOMNodeList* locale = aDOMElement->getElementsByTagName(tagAppPropertyLocale.get());
+	DOMNodeList* name = aDOMElement->getElementsByTagName(tagAppPropertyName.get());
+	DOMNodeList* intvalue = aDOMElement->getElementsByTagName(tagAppPropertyIntValue.get());
+	DOMNodeList* strvalue = aDOMElement->getElementsByTagName(tagAppPropertyStrValue.get());
+	
+	XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty appProperty;
+
+	if( locale->getLength() != 0)
+		{
+		const XMLCh* loc = locale->item(0)->getTextContent();
+		appProperty.iLocale = Util::WideCharToInteger(loc);
+		}
+
+	if( name->getLength() != 0)
+		{
+		const XMLCh* nam = name->item(0)->getTextContent();
+		appProperty.iName = nam;
+		}
+	
+	if( intvalue->getLength() != 0)
+		{
+		const XMLCh* intval = intvalue->item(0)->getTextContent();
+		appProperty.iIntValue = Util::WideCharToInteger(intval);
+		}
+
+	if( strvalue->getLength() != 0)
+		{
+		const XMLCh* strval = strvalue->item(0)->getTextContent();
+		appProperty.iStrValue = strval;
+		}
+	LOGEXIT("CScrXmlParser::GetAppProperty()");
+	return appProperty;
 	}
 
 void CScrXmlParser::ConfigDomParser(xercesc::XercesDOMParser& aDomParser)
--- a/secureswitools/swisistools/source/xmlparser/xmlparser.h	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/xmlparser/xmlparser.h	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -113,9 +113,7 @@
 			{
 		public:
 			TScrEnvironmentDetails()
-			:iSifPluginUid(0),
-			iInstallerSid(0),
-			iExecutionLayerSid(0)
+			:iSifPluginUid(0)
 			{}
 			
 			class TLocalizedSoftwareTypeName
@@ -128,12 +126,23 @@
 				int iLocale;
 				std::wstring iName;
 				};
+
+            class TCustomAcessList
+				{
+			public:
+				TCustomAcessList()
+				:iAccessMode(1)
+				{}
+								
+				int iSecureId;
+				int iAccessMode;;
+				};
 			
 			std::wstring iUniqueSoftwareTypeName;
 			std::vector<TLocalizedSoftwareTypeName> iLocalizedSoftwareTypeNames;
 			int iSifPluginUid;
-			int iInstallerSid;
-			int iExecutionLayerSid;
+            std::wstring iLauncherExecutable;
+			std::vector<TCustomAcessList> iCustomAcessList;
 			std::vector<std::wstring> iMIMEDetails;
 			};
 
@@ -218,7 +227,8 @@
 			public:
 			TComponentDetails()
 
-			:iIsRemovable(1),
+			:iIsRomApplication(0),
+			iIsRemovable(1),
 			iSize(0),
 			iScomoState(1),
 			iOriginVerified(1),
@@ -238,6 +248,7 @@
 				std::wstring iBuild;
 				};
 
+			int iIsRomApplication;
 			int iIsRemovable;
 			__int64 iSize;
 			int iScomoState;
@@ -246,7 +257,123 @@
 			int iOriginVerified;
 			int iIsHidden;
 			};
+		
+		class TApplicationRegistrationInfo
+			{
+			public:
+				TApplicationRegistrationInfo()
+				{}
 
+				class TAppAttribute
+					{
+					public:
+					TAppAttribute()
+					:iIsIntValue(false),
+					iIsStr8Bit(false)
+					{}
+					std::wstring iName;
+					std::wstring iValue;
+					bool iIsIntValue;
+					int iIsStr8Bit;
+					};
+
+				class TDataType
+					{
+					public:
+					TDataType()
+					{}
+					int iPriority;
+					std::wstring iType;
+					};
+
+				class TOpaqueDataType
+					{
+					public:
+					TOpaqueDataType()
+					:iLocale(0)
+					{}
+					int iLocale;
+					int iServiceUid;
+					std::wstring iOpaqueData;
+					};
+
+				class TAppServiceInfo
+					{
+					public:
+					TAppServiceInfo()
+					{}
+					int iUid;
+					std::vector<TDataType> iDataType;
+					};
+
+				class TAppLocalizableInfo
+					{
+					public:
+					TAppLocalizableInfo()
+					{}
+
+					class TLocalizableAttribute
+						{
+						public:
+						TLocalizableAttribute()
+						:iIsIntValue(false),
+						iIsStr8Bit(false)
+						{}
+						std::wstring iName;
+						std::wstring iValue;
+						bool iIsIntValue;
+						int iIsStr8Bit;
+						};
+
+					class TViewData
+						{
+						public:
+						TViewData()
+						{}
+
+						class TViewDataAttributes
+						{
+						public:
+						TViewDataAttributes()
+						:iIsIntValue(false),
+						iIsStr8Bit(false)
+						{}
+						std::wstring iName;
+						std::wstring iValue;
+						bool iIsIntValue;
+						int iIsStr8Bit;
+						};
+						
+						std::vector<TViewDataAttributes> iViewDataAttributes;
+						};
+
+					std::vector<TLocalizableAttribute> iLocalizableAttribute;
+					std::vector<TViewData> iViewData;
+					};
+
+				class TAppProperty
+					{
+					public:
+					TAppProperty()
+					:iLocale(0),
+					iIntValue(0)
+					{}
+					int iLocale;
+					std::wstring iName;
+					int iServiceUid;
+					int iIntValue;
+					std::wstring iStrValue;
+					bool iIsStr8Bit;
+					};
+
+			std::vector<TAppAttribute> iApplicationAttribute;
+			std::vector<std::wstring> iFileOwnershipInfo;
+			std::vector<TAppServiceInfo> iApplicationServiceInfo;
+			std::vector<TAppLocalizableInfo> iApplicationLocalizableInfo;
+			std::vector<TAppProperty> iApplicationProperty;
+			std::vector<TOpaqueDataType> iOpaqueDataType;
+			};
+		
 		class TComponent
 			{
 			public:
@@ -258,6 +385,7 @@
 			std::vector<TComponentProperty>		iComponentProperties;
 			std::vector<TComponentFile>			iComponentFiles;
 			TComponentDependency iComponentDependency;
+			std::vector<TApplicationRegistrationInfo> iApplicationRegistrationInfo;
 			TComponentDetails iComponentDetails;
 			};
 
@@ -316,8 +444,34 @@
 		
 		XmlDetails::TScrPreProvisionDetail::TComponentDetails GetComponentDetails( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
 		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo GetApplicationRegistrationInfo(const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute GetAppAttribute( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		std::wstring GetFileOwnershipInfo( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType GetDataType( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType GetOpaqueDataType( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType GetServiceOpaqueDataType( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo GetAppServiceInfo( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement, XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppRegistrationInfo);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo GetAppLocalizableInfo( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute GetAppLocalizableAttribute( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData GetAppLocalizableViewData( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes GetAppLocalizableViewDataAttributes( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty GetAppProperty( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
 		XmlDetails::TScrEnvironmentDetails::TLocalizedSoftwareTypeName GetLocalizedSoftwareTypeName( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
 		
+        XmlDetails::TScrEnvironmentDetails::TCustomAcessList GetCustomAcessList(const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
 		void ConfigDomParser(xercesc::XercesDOMParser& aDomParser);
 	};
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-preq1835-interpretsis-08_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,67 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM preq1835-interpretsis-08
+REM PREQ1835 preq1835-interpretsis-08 - Verify if ROM SIS STUB and Pre-Provisioned registration files are processed. This is a positive testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+if not exist .\romdrive\private mkdir .\romdrive\private > NUL
+if not exist .\romdrive\private\10003a3f mkdir .\romdrive\private\10003a3f > NUL
+if not exist .\romdrive\private\10003a3f\import mkdir .\romdrive\private\10003a3f\import > NUL
+if not exist .\romdrive\private\10003a3f\import\apps mkdir .\romdrive\private\10003a3f\import\apps > NUL
+if not exist .\romdrive\private\10003a3f\apps mkdir .\romdrive\private\10003a3f\apps > NUL
+if not exist .\romdrive\resource mkdir .\romdrive\resource > NUL
+if not exist .\romdrive\resource\apps mkdir .\romdrive\resource\apps > NUL
+
+del .\backup\romdrive\sys\install\scr\provisioned\scr.db
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_stub.sis .\romdrive\system\install\interpretsis_preq1835_stub.sis /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_01_reg.rsc .\romdrive\private\10003a3f\import\apps\interpretsis_preq1835_01_reg.rsc /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_02_reg.rsc .\romdrive\private\10003a3f\apps\interpretsis_preq1835_02_reg.rsc /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_01.r01 .\romdrive\resource\apps\interpretsis_preq1835_01.r01 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_01.r03 .\romdrive\resource\apps\interpretsis_preq1835_01.r03 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_01.r04 .\romdrive\resource\apps\interpretsis_preq1835_01.r04 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_01.r24 .\romdrive\resource\apps\interpretsis_preq1835_01.r24 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq1835_02.r03 .\romdrive\resource\apps\interpretsis_preq1835_02.r03 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq183501.mbm .\romdrive\resource\apps\interpretsis_preq183501.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq183503.mbm .\romdrive\resource\apps\interpretsis_preq183503.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq183504.mbm .\romdrive\resource\apps\interpretsis_preq183504.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_preq183524.mbm .\romdrive\resource\apps\interpretsis_preq183524.mbm /Y > NUL
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+copy \epoc32\release\winscw\udeb\z\sys\install\scr\provisioned\scr.db .\romdrive\sys\install\scr\provisioned\scr.db /Y > NUL
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_preq1835_08.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/preq1835-interpretsis-01/argumentfile_05.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-01_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,44 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-01
+REM testcase testcase-interpretsis-01 - Install sis. This is a positive testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-02_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-02
+REM testcase testcase-interpretsis-02 - Install sis. Add an applications registration info with same app file name. This is a negative testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase_05.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-03_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-03
+REM testcase testcase-interpretsis-03 - Install sis. Add an applications registration info with same appuid. This is a negative testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase_06.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-04_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,44 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-04
+REM testcase testcase-interpretsis-04 - Install an applications registration info with null app file name. This is a negative testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase_07.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-05_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,44 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-05
+REM testcase testcase-interpretsis-05 - Install sis. This is a positive testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+call interpretsis -z .\romdrive -c .\cdrive  -a /epoc32/release/winscw/udeb/z/private/10003a3f/test -w info -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-06_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,48 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-06
+REM testcase testcase-interpretsis-06 - Install an applications registration info with SA and PU. This is a positive testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+
+del .\backup\romdrive\sys\install\scr\provisioned\scr.db
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+copy \epoc32\release\winscw\udeb\z\sys\install\scr\provisioned\scr.db .\romdrive\sys\install\scr\provisioned\scr.db /Y > NUL
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase_08.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase_10.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-07_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,41 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-07
+REM testcase testcase-interpretsis-07 - Test for Uninstall when installation fails. This is a negative testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase_09.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/api-inst-testcase-interpretsis-08_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,80 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@ECHO OFF
+REM testcase-interpretsis-08
+REM testcase testcase-interpretsis-08 - Verify if ROM SIS STUB and Pre-Provisioned registration files are processed. This is a positive testcase 
+
+if not exist .\cdrive mkdir .\cdrive > NUL
+if not exist .\cdrive\resource mkdir .\cdrive\resource > NUL
+if not exist .\cdrive\resource\apps mkdir .\cdrive\resource\apps > NUL
+if not exist .\romdrive mkdir .\romdrive > NUL
+if not exist .\romdrive\system mkdir .\romdrive\system > NUL
+if not exist .\romdrive\system\install mkdir .\romdrive\system\install > NUL
+if not exist .\romdrive\private mkdir .\romdrive\private > NUL
+if not exist .\romdrive\private\10003a3f mkdir .\romdrive\private\10003a3f > NUL
+if not exist .\romdrive\private\10003a3f\import mkdir .\romdrive\private\10003a3f\import > NUL
+if not exist .\romdrive\private\10003a3f\import\apps mkdir .\romdrive\private\10003a3f\import\apps > NUL
+if not exist .\romdrive\private\10003a3f\apps mkdir .\romdrive\private\10003a3f\apps > NUL
+if not exist .\romdrive\resource mkdir .\romdrive\resource > NUL
+if not exist .\romdrive\resource\apps mkdir .\romdrive\resource\apps > NUL
+
+del .\backup\romdrive\sys\install\scr\provisioned\scr.db
+
+xcopy /E /Y backup\cdrive cdrive > NUL
+xcopy /E /Y backup\romdrive romdrive > NUL
+
+copy \epoc32\release\winscw\udeb\z\sys\install\scr\provisioned\scr.db .\romdrive\sys\install\scr\provisioned\scr.db /Y > NUL
+
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_stub.sis .\romdrive\system\install\interpretsis_testcase_stub.sis /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_01_reg.rsc .\romdrive\private\10003a3f\import\apps\interpretsis_testcase_01_reg.rsc /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_02_reg.rsc .\romdrive\private\10003a3f\apps\interpretsis_testcase_02_reg.rsc /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_01.r01 .\romdrive\resource\apps\interpretsis_testcase_01.r01 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_01.r03 .\romdrive\resource\apps\interpretsis_testcase_01.r03 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_01.r04 .\romdrive\resource\apps\interpretsis_testcase_01.r04 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_01.r24 .\romdrive\resource\apps\interpretsis_testcase_01.r24 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase_02.r03 .\romdrive\resource\apps\interpretsis_testcase_02.r03 /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase01.mbm .\romdrive\resource\apps\interpretsis_testcase01.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase03.mbm .\romdrive\resource\apps\interpretsis_testcase03.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase04.mbm .\romdrive\resource\apps\interpretsis_testcase04.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase24.mbm .\romdrive\resource\apps\interpretsis_testcase24.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase01.mbm .\cdrive\resource\apps\interpretsis_testcase01.mbm /Y > NUL
+copy \epoc32\winscw\c\tswi\tinterpretsisinteg\data\interpretsis_testcase03.mbm .\cdrive\resource\apps\interpretsis_testcase03.mbm /Y > NUL
+
+REM Remove installation files from any previous tests
+if exist  .\cdrive\Documents\InstTest\devlangsup*.txt  del .\cdrive\Documents\InstTest\devlangsup*.txt  > NUL
+
+call interpretsis -z .\romdrive -c .\cdrive  -s /epoc32/winscw/c/tswi/tsis/data/interpretsis_testcase_08.sis -w info -I /epoc32/winscw/c/tswi/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini  -l /epoc32/winscw/c/interpretsis_test_harness_db.txt > NUL
+
+copy .\romdrive\sys\install\scr\provisioned\scr.db \epoc32\winscw\c\sys\install\scr\scr.db /Y > NUL
+
+if exist  .\romdrive\system\install\interpretsis_testcase_stub.sis  del .\romdrive\system\install\interpretsis_testcase_stub.sis  > NUL
+if exist  .\romdrive\private\10003a3f\import\apps\interpretsis_testcase_01_reg.rsc  del .\romdrive\private\10003a3f\import\apps\interpretsis_testcase_01_reg.rsc  > NUL
+if exist  .\romdrive\private\10003a3f\apps\interpretsis_testcase_02_reg.rsc  del .\romdrive\private\10003a3f\apps\interpretsis_testcase_02_reg.rsc  > NUL
+if exist  .\romdrive\resource\apps\interpretsis_testcase_01.r* del .\romdrive\resource\apps\interpretsis_testcase_01.r*  > NUL
+if exist  .\romdrive\resource\apps\interpretsis_testcase_02.r* del .\romdrive\resource\apps\interpretsis_testcase_02.r*  > NUL
+if exist  .\romdrive\resource\apps\interpretsis_testcase*.mbm  del .\romdrive\resource\apps\interpretsis_testcase*.mbm > NUL
+
+IF NOT EXIST .\backup\cdrive mkdir .\backup\cdrive > NUL
+IF NOT EXIST .\backup\romdrive mkdir .\backup\romdrive > NUL
+xcopy /E /Y cdrive backup\cdrive > NUL
+xcopy /E /Y romdrive backup\romdrive > NUL
+
+IF NOT %errorlevel%==0 GOTO LAST
+ECHO ***ERRORCODE*** %errorlevel% PASS>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+GOTO END
+:LAST
+ECHO ***ERRORCODE*** %errorlevel% FAIL>>/epoc32/winscw/c/interpretsis_test_harness_db.txt
+:END
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/hello_sis.sis has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183501.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183503.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183504.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq183524.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r01 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r03 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r04 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01.r24 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_01_reg.rsc has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_02.r03 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_02_reg.rsc has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_preq1835_stub.sis has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase01.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase03.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase04.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase24.mbm has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r01 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r03 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r04 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01.r24 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_01_reg.rsc has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_02.r03 has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_02_reg.rsc has changed
Binary file secureswitools/swisistools/test/tinterpretsisinteg/data/interpretsis_testcase_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,25 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32std.h>
+
+GLDEF_C TInt E32Main()
+/**
+   EXE Entry Point
+   @return - Standard Epoc error code on exit
+ */
+	{
+	return KErrNone;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp.mmp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+//
+// TstApp.MMP for test component TstApp
+//
+
+target		tstapp.exe
+TARGETTYPE 	exe
+
+UID             0x100039CE 0xA000E525
+//targetpath      /sys/bin
+CAPABILITY 	All -Tcb
+VENDORID 	0x70000001
+
+systeminclude   /epoc32/include
+systeminclude   /epoc32/include/techview
+
+SOURCEPATH .
+SOURCE tstapp.cpp
+
+//Application localisable resource file
+resource  	tstapp_loc.RSS
+start resource 	tstapp_loc.RSS
+targetpath 	/resource/apps
+lang		sc 01 02 03
+end
+
+// Application exe registration resource file
+resource  	tstapp_reg.rss
+start resource 	tstapp_reg.rss
+targetpath 	/private/10003a3f/test
+lang		sc
+end
+
+// START resource files for tstapp2
+
+start resource	tstapp2_loc.RSS
+HEADER
+targetpath	/resource/apps
+lang		SC
+end
+
+start resource	tstapp2_reg.RSS
+targetpath	/private/10003a3f/test
+lang		SC 
+end
+
+// START resource files for tstappnouid3
+start resource	tstappnouid3_reg.RSS
+targetpath	/private/10003a3f/test
+lang		SC 
+end
+
+// START resource files for tstappnouid2
+start resource	tstappnouid2_reg.RSS
+targetpath	/private/10003a3f/test
+lang		SC 
+end
+
+// START resource files for tstappnoappfile
+start resource	tstappnoappfile_reg.RSS
+targetpath	/private/10003a3f/test
+lang		SC 
+end
+
+LIBRARY    	euser.lib
+LIBRARY 	ecom.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp01.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+rls_string STRING_r_tstapp_caption_string "TstCapUK"
+rls_string STRING_r_tstapp_short_caption_string "TCUK"
+
+rls_string STRING_r_tstapp_view1_caption "V1UK"
+rls_string STRING_r_tstapp_view2_caption "V2UK"
+
+rls_string STRING_r_tstapp_icon_file ""
+rls_string STRING_r_tstapp_view1_icon_file ""
+rls_string STRING_r_tstapp_view2_icon_file ""
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp02.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+rls_string STRING_r_tstapp_caption_string "TstCap_FR"
+rls_string STRING_r_tstapp_short_caption_string "TC_FR"
+
+rls_string STRING_r_tstapp_view1_caption "V1_FR"
+rls_string STRING_r_tstapp_view2_caption "V2_FR"
+
+rls_string STRING_r_tstapp_icon_file ""
+rls_string STRING_r_tstapp_view1_icon_file ""
+rls_string STRING_r_tstapp_view2_icon_file ""
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp03.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+rls_string STRING_r_tstapp_caption_string "TstCap_GE"
+rls_string STRING_r_tstapp_short_caption_string "TC_GE"
+
+rls_string STRING_r_tstapp_view1_caption "V1_GE"
+rls_string STRING_r_tstapp_view2_caption "V2_GE"
+
+rls_string STRING_r_tstapp_icon_file ""
+rls_string STRING_r_tstapp_view1_icon_file ""
+rls_string STRING_r_tstapp_view2_icon_file ""
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp2_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,39 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file TstApp2_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+NAME SER1
+
+#include <uikon.rh>
+#include <appinfo.rh>
+ 
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE LOCALISABLE_APP_INFO R_LAI
+	{
+	short_caption = "TstApp2";
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO
+			{
+			caption = "TstApp2Caption";
+			number_of_icons = 0;
+			}
+		};			
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp2_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,35 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file CustomiseDefaultIconApp_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <tstapp2_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x124 // UID of the application this registration file represents
+
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file="TstApp2";
+	
+	localisable_resource_file="\\resource\\apps\\tstapp2_loc";
+	localisable_resource_id=R_LAI;
+		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp_loc.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,94 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file TstApp_loc.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+NAME SER1
+
+#include <uikon.rh>
+#include <appinfo.rh>
+
+#if defined(LANGUAGE_01)
+#include "tstapp01.rls"
+#elif(LANGUAGE_02)
+#include "tstapp02.rls"
+#elif(LANGUAGE_03)
+#include "tstapp03.rls"
+#else
+#include "tstappsc.rls"
+#endif
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE LOCALISABLE_APP_INFO R_LAI
+	{
+	short_caption = STRING_r_tstapp_short_caption_string;
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO
+			{
+			caption = STRING_r_tstapp_caption_string;
+			number_of_icons = 1;
+			icon_file="";
+			}
+		};
+
+	view_list =
+		{
+		VIEW_DATA
+			{
+			uid = 270565258;
+			screen_mode = 0x00;
+			caption_and_icon =
+				{
+				CAPTION_AND_ICON_INFO
+					{
+					caption = STRING_r_tstapp_view1_caption;
+					number_of_icons = 1;
+					icon_file = STRING_r_tstapp_view1_icon_file ;
+					}
+				};
+			},
+		VIEW_DATA
+			{
+			uid = 270565259;
+			screen_mode = 0x00;
+			caption_and_icon =
+				{
+				CAPTION_AND_ICON_INFO
+					{
+					caption = STRING_r_tstapp_view2_caption;
+					number_of_icons = 1;
+					icon_file = STRING_r_tstapp_view2_icon_file;
+					}
+				};
+			}
+ 			
+		};
+		
+	}
+
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_service_specific_data_loc
+	{
+	name = "Localised_text_for_service_UID_0x01020305";
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstapp_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,81 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file TstApp_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include <appinfo.rh>
+#include <tstapp_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x123
+RESOURCE APP_REGISTRATION_INFO
+	{	
+	app_file = TstApp;
+	localisable_resource_file="\\Resource\\Apps\\tstapp_loc";
+	localisable_resource_id = R_LAI;
+	attributes = KAppIsControlPanelItem;
+	hidden = KAppNotHidden;
+	embeddability = KAppNotEmbeddable;
+	newfile = KAppDoesNotSupportNewFile;
+	launch = KAppLaunchInForeground;
+	group_name = "Games";
+	file_ownership_list = 
+		{
+		FILE_OWNERSHIP_INFO { file_name="C:\\System\\file2"; }
+		};
+
+	datatype_list = 
+		{
+		DATATYPE { priority=EDataTypePriorityNormal; type="text/plain"; }
+		};
+
+	service_list =
+		{
+		SERVICE_INFO { uid = 0x10101010;},
+		SERVICE_INFO 
+			{
+			uid = 0x01020304; 
+			datatype_list = 
+				{
+				DATATYPE { priority=EDataTypePriorityNormal; type="text/custom1"; }
+				};
+			opaque_data = r_first_service_specific_data;
+			},
+		SERVICE_INFO { uid = 0x02345000; opaque_data = r_second_service_specific_data;},
+		SERVICE_INFO { uid = 0x05678000; opaque_data = r_first_service_specific_data;},
+		SERVICE_INFO { uid = 0x01020305; opaque_data = R_SERVICE_SPECIFIC_DATA_LOC; },
+		SERVICE_INFO { uid = 0x01020304; opaque_data = 0;}
+		};
+
+	}
+
+STRUCT SERVICE_NAME
+	{
+	LTEXT name = "";
+	}
+
+RESOURCE SERVICE_NAME r_first_service_specific_data
+	{
+	name = "Non-localised_text_for_service_uid_0x01020304";
+	}
+
+RESOURCE SERVICE_NAME r_second_service_specific_data
+	{
+	name = "Non-localised_text_for_service_uid_0x02345000";
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappnoappfile_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,33 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file CustomiseDefaultIconApp_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <tstapp2_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x10208181 // UID of the application this registration file represents
+
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	localisable_resource_file="\\resource\\apps\\tstapp2_loc";
+	localisable_resource_id=R_LAI;
+		
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappnouid2_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file CustomiseDefaultIconApp_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <tstapp2_loc.rsg>
+
+UID2 1
+UID3 0x10208181 // UID of the application this registration file represents
+
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file="TstApp3";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappnouid3_reg.rss	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,29 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file CustomiseDefaultIconApp_reg.rss
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <appinfo.rh>
+#include <tstapp2_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file="TstApp4";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/data/regfiles/tstappsc.rls	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+rls_string STRING_r_tstapp_caption_string "TstCap_UK"
+rls_string STRING_r_tstapp_short_caption_string "TC_UK"
+
+rls_string STRING_r_tstapp_view1_caption "V1_SC"
+rls_string STRING_r_tstapp_view2_caption "V2_SC"
+
+rls_string STRING_r_tstapp_icon_file ""
+rls_string STRING_r_tstapp_view_icon_file ""
+
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-01.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-01.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_01
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-01_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-01_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_01
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-02.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-02.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_02
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-02_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-02_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_02
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-03.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-03.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_03
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-03_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-03_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_03
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-04.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-04.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_04
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-04_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-04_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_04
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-05.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-05.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_05
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-05_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-05_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_05
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-06.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-06.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_06
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-06_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-06_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_06
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-07.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-07.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_07
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-07_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-07_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_07
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-08.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-08.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_08
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-08_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-08_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_08
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-09.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-09.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_09
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-09_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-09_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_09
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-10.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-10.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_10
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-10_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-10_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_10
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-11.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-11.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_11
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-11_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-11_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_11
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-12.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-12.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_12
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-12_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-12_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_12
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-13.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-13.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_13
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-13_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-13_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_13
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-14.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-14.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_14
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-14_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-14_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_14
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-15.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-15.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_15
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-15_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-15_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_15
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-16.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-16.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_16
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-16_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-16_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_16
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-17.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-17.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_17
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-17_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-17_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_17
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-18.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-18.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_18
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-18_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-18_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_18
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-19.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-19.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_19
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-19_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-19_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_19
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-20.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-20.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_20
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-20_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-20_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_20
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-21.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-21.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_21
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-21_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-21_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_21
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-22.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-22.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_22
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-22_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-22_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_22
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-23.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-23.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_23
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-23_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-23_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_23
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-24.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-24.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_24
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-24_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-24_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_24
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-25.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-25.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_25
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-25_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-25_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_25
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-26.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-26.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_26
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-26_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-26_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_26
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-27.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-27.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_27
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-27_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-27_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_27
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-28.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-28.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_28
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-28_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-28_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_28
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-29.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-29.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_29
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-29_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-29_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_29
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-30.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-30.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_30
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-30_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-30_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_30
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-31.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-31.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_31
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-31_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-31_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_31
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-32.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-32.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_32
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-32_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-32_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_32
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-33.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-33.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_33
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-33_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-33_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_33
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-34.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-34.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_34
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-34_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-34_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_34
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-35.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-35.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_35
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-35_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-35_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_35
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-36.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-36.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_36
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-36_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-36_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_36
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-37.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-37.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_36
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-37_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-37_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_36
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-38.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-38.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_38
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-38_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-38_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_38
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-39.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-39.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_39
--- a/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-39_db.bat	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/int_nr_option-39_db.bat	Fri Apr 16 15:05:20 2010 +0300
@@ -2,16 +2,16 @@
 @rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 @rem All rights reserved.
 @rem This component and the accompanying materials are made available
-@rem under the terms of the License "Eclipse Public License v1.0"
+@rem under the terms of "Eclipse Public License v1.0"
 @rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
 @rem
 @rem Initial Contributors:
 @rem Nokia Corporation - initial contribution.
 @rem
 @rem Contributors:
 @rem
-@rem Description:
+@rem Description: 
 @rem
 @ECHO OFF
 REM int_nr_option_39
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/parameters_file/preq1835-interpretsis-07.txt	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,5 @@
+interpretsis_preq1835_09_reg.rsc
+interpretsis_preq1835_09.r01
+interpretsis_preq1835_09.r03
+interpretsis_preq183501_09.mbm
+interpretsis_preq183503_09.mbm
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/parameters_file/testcase-interpretsis-07.txt	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,5 @@
+interpretsis_testcase_09_reg.rsc
+interpretsis_testcase_09.r01
+interpretsis_testcase_09.r03
+interpretsis_testcase01_09.mbm
+interpretsis_testcase03_09.mbm
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-01.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,65 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Device supported language tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//! @SYMTestCaseID 		API-INST-testcase-InterpretSIS-01
+//! @SYMTestCaseDesc 		Verify SCR for All positive scenario.
+//! @SYMPREQ  			PREQ1835
+//! @SYMTestStatus		Released
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		Check SCR for All positive scenario.
+//! @SYMTestExpectedResults 	ViewData should be shown in current running language.
+//! @SYMTestType		CIT
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+START_TESTCASE API-INST-testcase-InterpretSIS-01
+
+// Delete the SCR Database file
+//RUN_TEST_STEP 100 tscr SCRDeleteDbFile c:\tswi\tinterpretsisinteg\scripts\ini.ini db_file 
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_english
+//Test for ViewInfo, Locale = Eng
+RUN_TEST_STEP 100 tscr ScrGetAppViewInfo c:\tswi\tinterpretsisinteg\scripts\ini.ini get_app_view_info_partial_eng
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_german
+//Test for ViewInfo, Locale = German
+RUN_TEST_STEP 100 tscr ScrGetAppViewInfo c:\tswi\tinterpretsisinteg\scripts\ini.ini get_app_view_info_partial_ger
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_spanish
+//Test for AppOwnedFiles, Locale = Spanish
+RUN_TEST_STEP 100 tscr SCRGetAppOwnedFilesEntry c:\tswi\tinterpretsisinteg\scripts\ini.ini appownedfiles_spn
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale_Eng
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale_Ger
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_spanish
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale_Spn
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_french
+//Test for nearest language locale
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale_Frn
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_english
+
+END_TESTCASE API-INST-testcase-InterpretSIS-01
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-02.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Device supported language tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//! @SYMTestCaseID 		API-INST-testcase-InterpretSIS-02
+//! @SYMTestCaseDesc 		Add an applications registration info with same app file name.
+//! @SYMPREQ  			PREQ1835
+//! @SYMTestStatus		Released
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		Check Adding an applications registration info with same app file name.
+//! @SYMTestExpectedResults 	Negative TestCases
+//! @SYMTestType		CIT
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+START_TESTCASE API-INST-testcase-InterpretSIS-02
+
+// Delete the SCR Database file
+//RUN_TEST_STEP 100 tscr SCRDeleteDbFile c:\tswi\tinterpretsisinteg\scripts\ini.ini db_file
+
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry c:\tswi\tinterpretsisinteg\scripts\ini.ini add_app_reg_info_sameappfile
+
+END_TESTCASE API-INST-testcase-InterpretSIS-02
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-03.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,47 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Device supported language tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//! @SYMTestCaseID 		API-INST-testcase-InterpretSIS-03
+//! @SYMTestCaseDesc 		Add an applications registration info with same appuid.
+//! @SYMPREQ  			PREQ1835
+//! @SYMTestStatus		Released
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		Check Adding an applications registration info with same appuid.
+//! @SYMTestExpectedResults 	Negative Test Case.
+//! @SYMTestType		CIT
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+START_TESTCASE API-INST-testcase-InterpretSIS-03
+
+
+// Delete the SCR Database file
+//RUN_TEST_STEP 100 tscr SCRDeleteDbFile c:\tswi\tinterpretsisinteg\scripts\ini.ini db_file
+
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry c:\tswi\tinterpretsisinteg\scripts\ini.ini add_app_reg_info_sameappuid
+
+END_TESTCASE API-INST-testcase-InterpretSIS-03
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-04.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,44 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Device supported language tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//! @SYMTestCaseID 		API-INST-testcase-InterpretSIS-04
+//! @SYMTestCaseDesc 		Add an applications registration info with same appuid.
+//! @SYMPREQ  			PREQ1835
+//! @SYMTestStatus		Released
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		Check Adding an applications registration info with same appuid.
+//! @SYMTestExpectedResults 	Negative Test Case.
+//! @SYMTestType		CIT
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+START_TESTCASE API-INST-testcase-InterpretSIS-04
+
+
+RUN_TEST_STEP 100 tscr SCRAddApplicationEntry c:\tswi\tinterpretsisinteg\scripts\ini.ini add_app_reg_info_nullappuid
+
+END_TESTCASE API-INST-testcase-InterpretSIS-04
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-05.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,46 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Device supported language tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//! @SYMTestCaseID 		API-INST-testcase-InterpretSIS-05
+//! @SYMTestCaseDesc 		Verify SCR for All positive scenario.
+//! @SYMPREQ  			PREQ1835
+//! @SYMTestStatus		Released
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		Check SCR for All positive scenario.
+//! @SYMTestExpectedResults 	App info should be as expected in the database.
+//! @SYMTestType		CIT
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+START_TESTCASE API-INST-testcase-InterpretSIS-05
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale
+
+// Delete the SCR Database file
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile c:\tswi\tinterpretsisinteg\scripts\ini.ini db_file 
+
+END_TESTCASE API-INST-testcase-InterpretSIS-05
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-06.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Device supported language tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//! @SYMTestCaseID 		API-INST-testcase-InterpretSIS-06
+//! @SYMTestCaseDesc 		Verify SCR for PU type package.
+//! @SYMPREQ  			testcase
+//! @SYMTestStatus		Released
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		Check SCR for All application registration data.
+//! @SYMTestExpectedResults 	Appreginfo with PU data should be shown in current running language.
+//! @SYMTestType		CIT
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+START_TESTCASE API-INST-testcase-InterpretSIS-06
+
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_english
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale_Eng_PU
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale_Ger_PU
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_english
+
+// Delete the SCR Database file
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile c:\tswi\tinterpretsisinteg\scripts\ini.ini db_file 
+
+END_TESTCASE API-INST-testcase-InterpretSIS-06
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/api-inst-testcase-interpretsis-08.script	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Device supported language tests
+
+// Load Suite
+LOAD_SUITE tscr -SharedData
+SHARED_DATA z:\tusif\tscr\tscr.ini shared_data
+LOAD_SUITE tSisRegistryTest
+LOAD_SUITE tscrapparc
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//! @SYMTestCaseID 		API-INST-testcase-InterpretSIS-08
+//! @SYMTestCaseDesc 		Verify if ROM SIS STUB and Pre-Provisioned registration files are processed.
+//! @SYMPREQ  			testcase
+//! @SYMTestStatus		Released
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		Check SCR for All application registration data.
+//! @SYMTestExpectedResults 	ROM SIS STUB and Pre-Provisioned registration files should be shown in current running language.
+//! @SYMTestType		CIT
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+START_TESTCASE API-INST-testcase-InterpretSIS-08
+
+// Delete the SCR Database file
+//RUN_TEST_STEP 100 tscr SCRDeleteDbFile c:\tswi\tinterpretsisinteg\scripts\ini.ini db_file 
+
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_german
+RUN_TEST_STEP 100 tscrapparc ScrGetApplicationRegistrationView c:\tswi\tinterpretsisinteg\scripts\ini.ini ApplicationRegistrationData_MultipleApp_Locale_Ger_08
+RUN_TEST_STEP 100 tSisRegistryTest ChangeLocale c:\tswi\tinterpretsisinteg\scripts\ini.ini langauge_to_english
+
+// Delete the SCR Database file
+RUN_TEST_STEP 100 tscr SCRDeleteDbFile c:\tswi\tinterpretsisinteg\scripts\ini.ini db_file 
+
+END_TESTCASE API-INST-testcase-InterpretSIS-08
+
+
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/ini.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/ini.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -568,6 +568,9 @@
 [langauge_to_english]
 language=01
 
+[langauge_to_spanish]
+language=04
+
 [equ_package_info_swiss_belgian_french]
 uid-01=88000108
 package-01=Equivalent_BF
@@ -618,3 +621,1621 @@
 uid=88000108
 script=c:\tswi\tuiscriptadaptors\scripts\uninstall.xml
 
+[get_app_view_info_partial_eng]
+AppUid=ABC
+
+ViewDataCount=2
+VwUid0=268123121
+VwScreenMode0=0
+VwCaption0=view_268123121_caption_eng
+VwIconFileName0=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons0=1
+VwUid1=268123122
+VwScreenMode1=1
+VwCaption1=view_268123122_caption_eng
+VwIconFileName1=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons1=2
+
+
+[get_app_view_info_partial_ger]
+AppUid=ABC
+
+ViewDataCount=2
+VwUid0=268123123
+VwScreenMode0=3
+VwCaption0=view_268123123_caption_ger
+VwIconFileName0=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons0=3
+VwUid1=268123124
+VwScreenMode1=4
+VwCaption1=view_268123124_caption_ger
+VwIconFileName1=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons1=4
+
+[appownedfiles_eng]
+AppUid=ABC
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+
+[appownedfiles_spn]
+AppUid=ABE
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+
+[add_app_reg_info_sameappuid]
+ComponentName=interpretsis_eng_testcase
+VendorName=Symbian Software Ltd
+SoftwareType=plain
+GlobalIdName=native
+AppUid=AC1
+AppFile=interpretsis_testcase_06
+
+[add_app_reg_info_nullappuid]
+ComponentName=interpretsis_eng_testcase
+VendorName=Symbian Software Ltd
+SoftwareType=plain
+GlobalIdName=native
+AppUid=ABCD
+AppFile=interpretsis_testcase_07
+
+[add_app_reg_info_sameappfile]
+ComponentName=interpretsis_eng_testcase
+VendorName=Symbian Software Ltd
+SoftwareType=plain
+GlobalIdName=native
+AppUid=AC1
+AppFile=interpretsis_testcase_try
+
+
+[add_app_reg_info_sameappfile_1]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global1221
+AppUid=A0001221
+AppFile=appname
+
+[add_app_reg_info_sameappfile_2]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global1221
+AppUid=A0001221
+AppFile=ApPnAmE
+
+[add_app_reg_info]
+ComponentName=Component
+VendorName=SecurityTeam
+SoftwareType=plain
+GlobalIdName=Component_Global
+AppUid=A0001234
+AppFile=appname
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+DefaultScreenNumber=0
+OpaqueData=somedata
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+ServiceInfoCount=1
+ServiceUid0=987654321
+ServiceOpaqueData0=servicedata
+ServiceDataTypeCount0=1
+ServiceDataTypePriority0=1
+ServiceDataType0=text/plain
+LocalizableAppInfoCount=2
+LocShortCaption0=sc0
+LocAppLanguage0=0
+LocGroupName0=Games
+LocCaption0=c0
+LocIconFileName0=iconfile
+LocNumberOfAppIcons0=2
+ViewDataCount0=1
+VwUid0=45689123
+VwScreenMode0=0
+VwCaption0=vc
+VwIconFileName0=viewiconfile
+VwNumberOfAppIcons0=0
+LocShortCaption1=sc0
+LocAppLanguage1=1
+LocGroupName1=Games
+LocCaption1=c0
+LocIconFileName1=iconfile
+LocNumberOfAppIcons1=2
+ViewDataCount1=1
+VwUid1=45689123
+VwScreenMode1=0
+VwCaption1=vc
+VwIconFileName1=viewiconfile
+VwNumberOfAppIcons1=0
+AppPropertyCount=1
+PropertyLocale0=0
+PropertyName0=p1
+PropertyIntValue0=2
+PropertyStrValue0=asd
+
+[appownedfiles]
+AppUid=A0001234
+OwnedFileCount=2
+FileName0=file0
+FileName1=file2
+
+[noappownedfiles]
+AppUid=A0001234
+OwnedFileCount=0
+
+[appcapability]
+AppUid=A0001234
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+
+[appcapability_nogroupname]
+AppUid=A0001234
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=
+
+[appicon]
+AppUid=A0001234
+LocIconFileName=iconfile
+
+[noappicon]
+AppUid=A0001234
+LocIconFileName
+
+[appicon_nolocalizedinfoforenglish]
+AppUid=A0001234
+LocIconFileName=iconfile_IntFr
+
+[appviewicon]
+AppUid=A0001234
+VwUid=45689123
+VwIconFileName=viewiconfile
+
+[noappviewicon]
+AppUid=A0001234
+VwUid=0
+VwIconFileName
+
+[appviewicon_nolocalizedinfoforenglish]
+AppUid=A0001234
+VwUid=45689123
+VwIconFileName=viewiconfile_IntFr0
+
+[noviewdatafornearestlanguage]
+AppUid=A0001234
+VwUid=45689123
+VwIconFileName
+
+[get_app_view_info_partial_2]
+AppUid=A0000222
+
+
+[ApplicationRegistrationData_MultipleApp_Locale_Eng_PU]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_ab0_01
+
+
+[ApplicationRegistrationData_MultipleApp_Locale_Ger_PU]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_ab0_03
+
+
+[ApplicationRegistrationData_MultipleApp_Locale_Eng]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_abc_01
+configsection1 = get_app_reg_info_abd_01
+configsection2 = get_app_reg_info_abe_01
+configsection3 = get_app_reg_info_abf_01
+configsection4 = get_app_reg_info_ac0_01
+
+[ApplicationRegistrationData_MultipleApp_Locale_Ger]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_abc_03
+configsection1 = get_app_reg_info_abd_03
+configsection2 = get_app_reg_info_abe_03
+configsection3 = get_app_reg_info_abf_03
+configsection4 = get_app_reg_info_ac0_03
+
+[ApplicationRegistrationData_MultipleApp_Locale_Spn]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_abc_04
+configsection1 = get_app_reg_info_abd_04
+configsection2 = get_app_reg_info_abe_04
+configsection3 = get_app_reg_info_abf_04
+configsection4 = get_app_reg_info_ac0_04
+
+[ApplicationRegistrationData_MultipleApp_Locale_Frn]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_abc_24
+configsection1 = get_app_reg_info_abd_24
+configsection2 = get_app_reg_info_abe_24
+configsection3 = get_app_reg_info_abf_24
+configsection4 = get_app_reg_info_ac0_24
+
+
+[get_app_reg_info_abc_dup]
+AppUid=ABC
+AppFile=interpretsis_testcase
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_01020305
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=4
+
+LocShortCaption0=HW
+LocAppLanguage0=1
+LocGroupName0=Tapash_Group
+LocCaption0=helloworld
+LocIconFileName0=\resource\apps\interpretsis_testcase01.mbm
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=268123121
+VwScreenMode0=0
+VwCaption0=view_268123121_caption_eng
+VwIconFileName0=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons0=1
+VwUid1=268123122
+VwScreenMode1=1
+VwCaption1=view_268123122_caption_eng
+VwIconFileName1=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons1=2
+
+LocShortCaption1=Hallo
+LocAppLanguage1=3
+LocGroupName1=Tapash_Group
+LocCaption1=interpretsis_testcase
+LocNumberOfAppIcons1=0
+ViewDataCount1=2
+VwUid2=268123123
+VwScreenMode2=3
+VwCaption2=view_268123123_caption_ger
+VwIconFileName2=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons2=3
+VwUid3=268123124
+VwScreenMode3=4
+VwCaption3=view_268123124_caption_ger
+VwIconFileName3=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons3=4
+
+LocShortCaption2=HW_Spain
+LocAppLanguage2=4
+LocGroupName2=Tapash_Group
+LocCaption2=interpretsis_testcase
+LocNumberOfAppIcons2=2
+ViewDataCount2=2
+VwUid3=268123125
+VwScreenMode3=5
+VwCaption3=view_268123125_caption_spn
+VwIconFileName3=z:\resource\apps\interpretsis_testcase04.mbm
+VwNumberOfAppIcons3=5
+VwUid4=268123126
+VwScreenMode4=6
+VwCaption4=view_268123126_caption_spn
+VwIconFileName4=z:\resource\apps\interpretsis_testcase04.mbm
+VwNumberOfAppIcons4=6
+
+LocShortCaption3=HW_FR
+LocAppLanguage3=24
+LocGroupName3=Tapash_Group
+LocCaption3=hello_French
+LocIconFileName3=\resource\apps\interpretsis_testcase24.mbm
+LocNumberOfAppIcons3=2
+ViewDataCount3=2
+VwUid5=268123127
+VwScreenMode5=7
+VwCaption5=view_268123127_caption_fr
+VwIconFileName5=z:\resource\apps\interpretsis_testcase24.mbm
+VwNumberOfAppIcons5=7
+VwUid6=268123128
+VwScreenMode6=8
+VwCaption6=view_268123128_caption_fr
+VwIconFileName6=z:\resource\apps\interpretsis_testcase24.mbm
+VwNumberOfAppIcons6=8
+
+
+[get_app_reg_info_abc_01]
+AppUid=ABC
+AppFile=interpretsis_testcase
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+PropertiesCount=0
+ServiceInfoCount=3
+ServiceUid0=10208dca
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=0ffb3bf3
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=0ffb3bf4
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=HW
+LocAppLanguage0=1
+LocGroupName0=Tapash_Group
+LocCaption0=helloworld
+LocIconFileName0=\resource\apps\interpretsis_testcase01.mbm
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=268123121
+VwScreenMode0=0
+VwCaption0=view_268123121_caption_eng
+VwIconFileName0=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons0=1
+VwUid1=268123122
+VwScreenMode1=1
+VwCaption1=view_268123122_caption_eng
+VwIconFileName1=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons1=2
+
+[get_app_reg_info_abd_01]
+AppUid=ABD
+AppFile=interpretsis_testcase_dup
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abe_01]
+AppUid=ABE
+AppFile=interpretsis_testcase_02
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abf_01]
+AppUid=ABF
+AppFile=interpretsis_testcase_03
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_ac0_01]
+AppUid=AC0
+AppFile=interpretsis_testcase_04
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abc_03]
+AppUid=ABC
+AppFile=interpretsis_testcase
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=10208dca
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=0ffb3bf3
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=0ffb3bf4
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=Hallo
+LocAppLanguage0=3
+LocGroupName0=Tapash_Group
+LocCaption0=interpretsis_testcase
+LocNumberOfAppIcons0=0
+ViewDataCount0=2
+VwUid0=268123123
+VwScreenMode0=3
+VwCaption0=view_268123123_caption_ger
+VwIconFileName0=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons0=3
+VwUid1=268123124
+VwScreenMode1=4
+VwCaption1=view_268123124_caption_ger
+VwIconFileName1=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons1=4
+
+[get_app_reg_info_abd_03]
+AppUid=ABD
+AppFile=interpretsis_testcase_dup
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abe_03]
+AppUid=ABE
+AppFile=interpretsis_testcase_02
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=Hallo
+LocAppLanguage0=3
+LocGroupName0=Tapash_Group
+LocCaption0=interpretsis_testcase_02
+LocNumberOfAppIcons0=0
+ViewDataCount0=2
+VwUid0=268123123
+VwScreenMode0=3
+VwCaption0=view_268123123_caption_ger
+VwIconFileName0=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons0=3
+VwUid1=268123124
+VwScreenMode1=4
+VwCaption1=view_268123124_caption_ger
+VwIconFileName1=z:\resource\apps\interpretsis_testcase03.mbm
+VwNumberOfAppIcons1=4
+
+[get_app_reg_info_abf_03]
+AppUid=ABF
+AppFile=interpretsis_testcase_03
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_ac0_03]
+AppUid=AC0
+AppFile=interpretsis_testcase_04
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abc_04]
+AppUid=ABC
+AppFile=interpretsis_testcase
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=10208dca
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=0ffb3bf3
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=0ffb3bf4
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=HW_Spain
+LocAppLanguage0=4
+LocGroupName0=Tapash_Group
+LocCaption0=interpretsis_testcase
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=268123125
+VwScreenMode0=5
+VwCaption0=view_268123125_caption_spn
+VwIconFileName0=z:\resource\apps\interpretsis_testcase04.mbm
+VwNumberOfAppIcons0=5
+VwUid1=268123126
+VwScreenMode1=6
+VwCaption1=view_268123126_caption_spn
+VwIconFileName1=z:\resource\apps\interpretsis_testcase04.mbm
+VwNumberOfAppIcons1=6
+
+[get_app_reg_info_abd_04]
+AppUid=ABD
+AppFile=interpretsis_testcase_dup
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abe_04]
+AppUid=ABE
+AppFile=interpretsis_testcase_02
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abf_04]
+AppUid=ABF
+AppFile=interpretsis_testcase_03
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=HW_Spain
+LocAppLanguage0=4
+LocGroupName0=Tapash_Group
+LocCaption0=interpretsis_testcase_03
+LocNumberOfAppIcons0=2
+ViewDataCount0=0
+
+[get_app_reg_info_ac0_04]
+AppUid=AC0
+AppFile=interpretsis_testcase_04
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abc_24]
+AppUid=ABC
+AppFile=interpretsis_testcase
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=10208dca
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=0ffb3bf3
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=0ffb3bf4
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=HW_FR
+LocAppLanguage0=24
+LocGroupName0=Tapash_Group
+LocCaption0=hello_French
+LocIconFileName0=\resource\apps\interpretsis_testcase24.mbm
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=268123127
+VwScreenMode0=7
+VwCaption0=view_268123127_caption_fr
+VwIconFileName0=z:\resource\apps\interpretsis_testcase24.mbm
+VwNumberOfAppIcons0=7
+VwUid1=268123128
+VwScreenMode1=8
+VwCaption1=view_268123128_caption_fr
+VwIconFileName1=z:\resource\apps\interpretsis_testcase24.mbm
+VwNumberOfAppIcons1=8
+
+[get_app_reg_info_abd_24]
+AppUid=ABD
+AppFile=interpretsis_testcase_dup
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abe_24]
+AppUid=ABE
+AppFile=interpretsis_testcase_02
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_abf_24]
+AppUid=ABF
+AppFile=interpretsis_testcase_03
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=0
+
+[get_app_reg_info_ac0_24]
+AppUid=AC0
+AppFile=interpretsis_testcase_04
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid0=270568906
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg2
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif2
+
+ServiceUid1=268123123
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=268123124
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg2
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif2
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=HW_FR
+LocAppLanguage0=24
+LocGroupName0=Tapash_Group
+LocCaption0=hello_French
+LocIconFileName0=\resource\apps\interpretsis_testcase24.mbm
+LocNumberOfAppIcons0=2
+ViewDataCount0=0
+
+[get_app_reg_info_ab0_01]
+AppUid=E8000AB0
+AppFile=interpretsis_testcase_08
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=10208dca
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=0ffb3bf3
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=0ffb3bf4
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=HW
+LocAppLanguage0=1
+LocGroupName0=Tapash_Group
+LocCaption0=helloworld
+LocIconFileName0=\resource\apps\interpretsis_testcase01.mbm
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=268123123
+VwScreenMode0=0
+VwCaption0=view_268123123_caption_eng
+VwIconFileName0=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons0=5
+VwUid1=268123124
+VwScreenMode1=1
+VwCaption1=view_268123124_caption_eng
+VwIconFileName1=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons1=6
+
+[get_app_reg_info_ab0_03]
+AppUid=E8000AB0
+AppFile=interpretsis_testcase_08
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=10208dca
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=0ffb3bf3
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=0ffb3bf4
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=Hallo_PU
+LocAppLanguage0=3
+LocGroupName0=Tapash_Group
+LocCaption0=Hallo_Welt_PU
+LocIconFileName0=\resource\apps\interpretsis_testcase03.mbm
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=268123123
+VwScreenMode0=0
+VwCaption0=view_268123123_caption_ger_PU
+VwIconFileName0=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons0=5
+VwUid1=268123124
+VwScreenMode1=1
+VwCaption1=view_268123124_caption_ger_PU
+VwIconFileName1=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons1=6
+
+[db_file]
+DbFilePath=c:\sys\install\scr\scr.db
+JournalFilePath=c:\sys\install\scr\scr.db-journal
+
+[ApplicationRegistrationData_MultipleApp_Locale]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_01
+configsection1 = get_app_reg_info_02
+
+[get_app_reg_info_01]
+AppUid=123
+AppFile=TstApp
+Attributes=2
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+OwnedFileCount=1
+FileName0=C:\System\file2
+ServiceInfoCount=6
+ServiceUid0=269488144
+ServiceDataTypeCount0=0
+
+ServiceUid1=16909060
+ServiceOpaqueData1=Non-localised_text_for_service_uid_0x01020304
+ServiceDataTypeCount1=1
+ServiceDataTypePriority0=0
+ServiceDataType0=text/custom1
+
+ServiceUid2=36982784
+ServiceOpaqueData2=Non-localised_text_for_service_uid_0x02345000
+ServiceDataTypeCount2=0
+
+ServiceUid3=90669056
+ServiceOpaqueData3=Non-localised_text_for_service_uid_0x01020304
+ServiceDataTypeCount3=0
+
+ServiceUid4=16909061
+ServiceOpaqueData4=Non-localised_text_for_service_uid_0x02345000
+ServiceDataTypeCount4=0
+
+ServiceUid5=16909060
+ServiceDataTypeCount5=0
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=TCUK
+LocAppLanguage0=1
+LocCaption0=TstCapUK
+LocNumberOfAppIcons0=1
+ViewDataCount0=2
+VwUid0=270565258
+VwScreenMode0=0
+VwCaption0=V1UK
+VwNumberOfAppIcons0=1
+VwUid1=270565259
+VwScreenMode1=0
+VwCaption1=V2UK
+VwNumberOfAppIcons1=1
+
+[get_app_reg_info_02]
+AppUid=124
+AppFile=TstApp2
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=Games
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=TstApp2
+LocCaption0=TstApp2Caption
+LocNumberOfAppIcons0=0
+ViewDataCount0=0
+
+[ApplicationRegistrationData_MultipleApp_Locale_Ger_08]
+NoOfEntries=1
+AppRegEntriesConfigCount=1
+configsection0 = get_app_reg_info_ab0_08
+configsection1 = get_app_reg_info_abc_03
+configsection2 = get_app_reg_info_abd_03
+
+[get_app_reg_info_ab0_08]
+AppUid=E8000AB0
+AppFile=interpretsis_testcase_08
+Attributes=0
+Hidden=0
+Embeddability=0
+NewFile=0
+Launch=0
+GroupName=AppNameGroup
+DefaultScreenNumber=2
+OpaqueData=Non-localised_resource
+PropertiesCount=0
+OwnedFileCount=2
+FileName0=z:\temp\AppNameTempFile.txt
+FileName1=z:\temp\AppName.txt
+ServiceInfoCount=3
+ServiceUid0=10208dca
+ServiceDataTypeCount0=2
+ServiceDataTypePriority0=0
+ServiceDataType0=image/jpeg1
+ServiceDataTypePriority1=0
+ServiceDataType1=image/gif1
+
+ServiceUid1=0ffb3bf3
+ServiceOpaqueData1=Non-localised_service_uid_01020304
+ServiceDataTypeCount1=2
+ServiceDataTypePriority2=0
+ServiceDataType2=image/jpeg2
+ServiceDataTypePriority3=0
+ServiceDataType3=image/gif2
+
+ServiceUid2=0ffb3bf4
+ServiceOpaqueData2=Non-localised_service_uid_02030405
+ServiceDataTypeCount2=2
+ServiceDataTypePriority4=0
+ServiceDataType4=image/jpeg3
+ServiceDataTypePriority5=0
+ServiceDataType5=image/gif3
+
+LocalizableAppInfoCount=1
+
+LocShortCaption0=Hallo
+LocAppLanguage0=3
+LocGroupName0=Tapash_Group
+LocCaption0=Hallo_Welt
+LocIconFileName0=\resource\apps\interpretsis_testcase03.mbm
+LocNumberOfAppIcons0=2
+ViewDataCount0=2
+VwUid0=268123123
+VwScreenMode0=0
+VwCaption0=view_268123123_caption_ger
+VwIconFileName0=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons0=5
+VwUid1=268123124
+VwScreenMode1=1
+VwCaption1=view_268123124_caption_ger
+VwIconFileName1=z:\resource\apps\interpretsis_testcase01.mbm
+VwNumberOfAppIcons1=6
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-01.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-01.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-02.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-02.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-03.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-03.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-05.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-05.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-06.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-06.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-07.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-07.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-08.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-08.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-09.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-09.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-10.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-10.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-11.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-11.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-12.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-12.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-13.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-13.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-14.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-14.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-15.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-15.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-16.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-16.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-17.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-17.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-18.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-18.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-19.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-19.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-20.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-20.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-21.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-21.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-22.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-22.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-23.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-23.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-24.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-24.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-25.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-25.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-26.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-26.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-27.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-27.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-28.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-28.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-29.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-29.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-30.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-30.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-31.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-31.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-32.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-32.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-33.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-33.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-34.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-34.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-35.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-35.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-36.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-36.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-37.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-37.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-38.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-38.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- a/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-39.script	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/scripts/int_nr_option-39.script	Fri Apr 16 15:05:20 2010 +0300
@@ -1,17 +1,17 @@
+//
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Eclipse Public License v1.0"
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/sfl-v10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
 //
 // Contributors:
 //
-// Description:
-//
+// Description: 
 //
 
 // Load Suite
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,19 @@
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+DEVICE_SUPPORTED_LANGUAGE = 01
+DEVICE_SUPPORTED_LANGUAGE = 03
+DEVICE_SUPPORTED_LANGUAGE = 04
+DEVICE_SUPPORTED_LANGUAGE = 24
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_05.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,17 @@
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+DEVICE_SUPPORTED_LANGUAGE = 01
+DEVICE_SUPPORTED_LANGUAGE = 03
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/testcase-interpretsis-01/argumentfile_10.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,16 @@
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+DEVICE_SUPPORTED_LANGUAGE = 03
--- a/secureswitools/swisistools/test/tinterpretsisinteg/testlistdb.xml	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/testlistdb.xml	Fri Apr 16 15:05:20 2010 +0300
@@ -1654,6 +1654,54 @@
 	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-preq2525-interpretsis-19_db.bat API-INST-PREQ2525-InterpretSIS-19</command>
 	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\check.pl">API-INST-PREQ2525-InterpretSIS-19 preq2525-interpretsis-19.txt 1 "positive" "none"</check>
 	</test>
+	
+	<test id="API-INST-testcase-InterpretSIS-01">
+	<title>API-INST-testcase-InterpretSIS-01</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-01_db.bat  API-INST-testcase-InterpretSIS-01</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\swicheck.pl">API-INST-testcase-InterpretSIS-01  API-INST-testcase-InterpretSIS-01 3  "positive"  "both" "nouid" "nobatchfile" "API-INST-testcase-InterpretSIS-01.script" "API-INST-testcase-InterpretSIS-01.htm" "FAIL = 0" "FAIL = 0" </check>
+	</test>
+	
+	<test id="API-INST-testcase-InterpretSIS-02">
+	<title>API-INST-testcase-InterpretSIS-02</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-02_db.bat  API-INST-testcase-InterpretSIS-02</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\swicheck.pl">API-INST-testcase-InterpretSIS-02  API-INST-testcase-InterpretSIS-02 3  "positive"  "both" "nouid" "nobatchfile" "API-INST-testcase-InterpretSIS-02.script" "API-INST-testcase-InterpretSIS-02.htm" "FAIL = 0" "FAIL = 0" </check>
+	</test>
+	
+	<test id="API-INST-testcase-InterpretSIS-03">
+	<title>API-INST-testcase-InterpretSIS-03</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-03_db.bat  API-INST-testcase-InterpretSIS-03</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\swicheck.pl">API-INST-testcase-InterpretSIS-03  API-INST-testcase-InterpretSIS-03 3  "positive"  "both" "nouid" "nobatchfile" "API-INST-testcase-InterpretSIS-03.script" "API-INST-testcase-InterpretSIS-03.htm" "FAIL = 0" "FAIL = 0" </check>
+	</test>
+	
+	<test id="API-INST-testcase-InterpretSIS-04">
+	<title>API-INST-testcase-InterpretSIS-04</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-04_db.bat  API-INST-testcase-InterpretSIS-04</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\swicheck.pl">API-INST-testcase-InterpretSIS-04  API-INST-testcase-InterpretSIS-04 3  "positive"  "both" "nouid" "nobatchfile" "API-INST-testcase-InterpretSIS-04.script" "API-INST-testcase-InterpretSIS-04.htm" "FAIL = 0" "FAIL = 0" </check>
+	</test>
+	
+	<test id="API-INST-testcase-InterpretSIS-05">
+	<title>API-INST-testcase-InterpretSIS-05</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-05_db.bat  API-INST-testcase-InterpretSIS-05</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\swicheck.pl">API-INST-testcase-InterpretSIS-05  API-INST-testcase-InterpretSIS-05 3  "positive"  "both" "nouid" "nobatchfile" "API-INST-testcase-InterpretSIS-05.script" "API-INST-testcase-InterpretSIS-05.htm" "FAIL = 0" "FAIL = 0" </check>
+	</test>
+
+	<test id="API-INST-testcase-InterpretSIS-06">
+	<title>API-INST-testcase-InterpretSIS-06</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-06_db.bat  API-INST-testcase-InterpretSIS-06</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\swicheck.pl">API-INST-testcase-InterpretSIS-06  API-INST-testcase-InterpretSIS-06 3  "positive"  "both" "nouid" "nobatchfile" "API-INST-testcase-InterpretSIS-06.script" "API-INST-testcase-InterpretSIS-06.htm" "FAIL = 0" "FAIL = 0" </check>
+	</test>
+	
+	<test id="API-INST-testcase-InterpretSIS-07">
+	<title>API-INST-testcase-InterpretSIS-07 Install sis</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-07_db.bat API-INST-testcase-InterpretSIS-07</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\check.pl">API-INST-testcase-InterpretSIS-07 testcase-interpretsis-07.txt 1 "negative" "none"</check>
+	</test>
+	
+	<test id="API-INST-testcase-InterpretSIS-08">
+	<title>API-INST-testcase-InterpretSIS-08</title>
+	<command log="no">\epoc32\winscw\c\tswi\tinterpretsisinteg\api-inst-testcase-interpretsis-08_db.bat  API-INST-testcase-InterpretSIS-08</command>
+	<check type="program" name="perl \epoc32\winscw\c\tswi\tinterpretsisinteg\swicheck.pl">API-INST-testcase-InterpretSIS-08  API-INST-testcase-InterpretSIS-08 3  "positive"  "both" "nouid" "nobatchfile" "API-INST-testcase-InterpretSIS-08.script" "API-INST-testcase-InterpretSIS-08.htm" "FAIL = 0" "FAIL = 0" </check>
+	</test>
 
 <test id="INT_NR_Option-01">
 	<title>INT_NR_Option-01</title>
--- a/secureswitools/swisistools/test/tscrtool/data/create_db.xml	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tscrtool/data/create_db.xml	Fri Apr 16 15:05:20 2010 +0300
@@ -9,25 +9,45 @@
 	<SQLQuery>CREATE TABLE SoftwareTypeNames(NameId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_SoftwareTypeNames_SoftwareTypeId ON SoftwareTypeNames(SoftwareTypeId);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_SoftwareTypeNames_Name ON SoftwareTypeNames(Name);</SQLQuery>
-	<SQLQuery>CREATE TABLE SoftwareTypes(SoftwareTypeId INTEGER PRIMARY KEY NOT NULL,SifPluginUid INTEGER,InstallerSecureId INTEGER,ExecutionLayerSecureId INTEGER);</SQLQuery>
+	<SQLQuery>CREATE TABLE SoftwareTypes(SoftwareTypeId INTEGER PRIMARY KEY NOT NULL,SifPluginUid INTEGER,LauncherExecutable TEXT);</SQLQuery>
+	<SQLQuery>CREATE TABLE CustomAccessList(AccessId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SecureId INTEGER NOT NULL,AccessMode INTEGER DEFAULT 0);</SQLQuery>
 	<SQLQuery>CREATE TABLE MimeTypes(MimeTypeId INTEGER PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,MimeType TEXT NOT NULL UNIQUE COLLATE NOCASE);</SQLQuery>
-	<SQLQuery>CREATE INDEX idx_MimeTypes_SoftwareType ON MimeTypes(SoftwareTypeId);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_MimeTypes_SoftwareTypeId ON MimeTypes(SoftwareTypeId);</SQLQuery>
 	<SQLQuery>CREATE TABLE Components(ComponentId INTEGER PRIMARY KEY AUTOINCREMENT,SoftwareTypeId INTEGER NOT NULL,SoftwareTypeName TEXT NOT NULL,Size INTEGER DEFAULT 0,Removable BOOLEAN DEFAULT 1,ScomoState INTEGER DEFAULT 0,DRMProtected INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,KnownRevoked INTEGER DEFAULT 0,OriginVerified INTEGER DEFAULT 0,InstalledDrives INTEGER DEFAULT 0,GlobalIdHash INTEGER DEFAULT 0,GlobalId TEXT UNIQUE,Version TEXT,InstallTime TEXT NOT NULL,CompPresence BOOLEAN DEFAULT 1);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_Components_SoftwareTypeId ON Components(SoftwareTypeId);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_Components_GlobalIdIdHash ON Components(GlobalIdHash);</SQLQuery>
-	<SQLQuery>CREATE TABLE ComponentLocalizables(CompLocalId INTEGER PRIMARY KEY AUTOINCREMENT, ComponentId INTEGER DEFAULT 0,ApplicationId INTEGER DEFAULT 0,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL,Vendor TEXT);</SQLQuery>
+	<SQLQuery>CREATE TABLE ComponentLocalizables(CompLocalId INTEGER PRIMARY KEY AUTOINCREMENT, ComponentId INTEGER DEFAULT 0,Locale INTEGER DEFAULT 0,Name TEXT NOT NULL,Vendor TEXT);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_ComponentLocalizables_ComponentId ON ComponentLocalizables(ComponentId);</SQLQuery>
-	<SQLQuery>CREATE TABLE ComponentDependencies(GlobalIdHash INTEGER PRIMARY KEY NOT NULL,DependantGlobalId TEXT NOT NULL,SupplierGlobalId TEXT NOT NULL);</SQLQuery>
+	<SQLQuery>CREATE TABLE ComponentDependencies(GlobalIdHash INTEGER PRIMARY KEY NOT NULL,DependantGlobalIdHash INTEGER NOT NULL, SupplierGlobalIdHash INTEGER NOT NULL, DependantGlobalId TEXT NOT NULL,SupplierGlobalId TEXT NOT NULL,VersionFrom TEXT, VersionTo TEXT);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentDependencies_DependantGlobalId ON ComponentDependencies(DependantGlobalIdHash);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentDependencies_SupplierGlobalId ON ComponentDependencies(SupplierGlobalIdHash);</SQLQuery>
 	<SQLQuery>CREATE TABLE ComponentsFiles(CmpFileId INTEGER PRIMARY KEY NOT NULL,ComponentId INTEGER NOT NULL,LocationHash INTEGER DEFAULT 0,Location TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_ComponentsFiles_ComponentId ON ComponentsFiles(ComponentId);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_ComponentsFiles_LocationHash ON ComponentsFiles(LocationHash);</SQLQuery>
 	<SQLQuery>CREATE TABLE ComponentProperties(PropertyId INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL COLLATE NOCASE,Locale INTEGER DEFAULT 0,ComponentId INTEGER NOT NULL,IntValue INTEGER,StrValue TEXT,IsStr8Bit BOOLEAN DEFAULT 0);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_ComponentProperties_Name ON ComponentProperties(Name);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_ComponentProperties_ComponentId ON ComponentProperties(ComponentId);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ComponentProperties_IntValue ON ComponentProperties(IntValue);</SQLQuery>
 	<SQLQuery>CREATE TABLE FileProperties(PropertyId INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL COLLATE NOCASE,CmpFileId INTEGER NOT NULL,IntValue INTEGER,StrValue TEXT, Locale INTEGER DEFAULT 0,IsStr8Bit BOOLEAN DEFAULT 0);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_FileProperties_Name ON FileProperties(Name);</SQLQuery>
 	<SQLQuery>CREATE INDEX idx_FileProperties_CmpFileId ON FileProperties(CmpFileId);</SQLQuery>
 	<SQLQuery>CREATE TABLE ScrVersion(MajorVersion INTEGER NOT NULL, MinorVersion INTEGER NOT NULL, BuildNumber INTEGER NOT NULL);</SQLQuery>
 	<SQLQuery>INSERT INTO ScrVersion(MajorVersion, MinorVersion, BuildNumber) VALUES(1, 1, 1);</SQLQuery>
+	<SQLQuery>CREATE TABLE AppRegistrationInfo(AppUid INTEGER PRIMARY KEY NOT NULL,ComponentId INTEGER DEFAULT 0,AppFile TEXT COLLATE NOCASE UNIQUE NOT NULL,TypeId INTEGER NOT NULL,Attributes INTEGER DEFAULT 0,Hidden INTEGER DEFAULT 0,Embeddable INTEGER DEFAULT 0,NewFile INTEGER DEFAULT 0,Launch INTEGER DEFAULT 0,GroupName TEXT COLLATE NOCASE,DefaultScreenNumber INTEGER DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppRegistrationInfo_AppFile ON AppRegistrationInfo(AppFile);</SQLQuery>
+	<SQLQuery>CREATE TABLE FileOwnershipInfo(FileOwnerInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,FileName TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_FileOwnershipInfo_AppUid ON FileOwnershipInfo(AppUid);</SQLQuery>
+	<SQLQuery>CREATE TABLE ServiceInfo(ServiceId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,Uid INTEGER DEFAULT 0);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ServiceInfo_AppUid ON ServiceInfo(AppUid);</SQLQuery>
+	<SQLQuery>CREATE TABLE DataType(DataTypeId INTEGER PRIMARY KEY AUTOINCREMENT,ServiceId INTEGER NOT NULL,Priority INTEGER NOT NULL,Type TEXT NOT NULL COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_DataType_ServiceId ON DataType(ServiceId);</SQLQuery>
+	<SQLQuery>CREATE TABLE LocalizableAppInfo(LocalAppInfoId INTEGER PRIMARY KEY AUTOINCREMENT,AppUid INTEGER NOT NULL,ShortCaption TEXT COLLATE NOCASE,GroupName TEXT COLLATE NOCASE,Locale INTEGER DEFAULT 0,CaptionAndIconId INTEGER,CONSTRAINT U_AppUid_Locale UNIQUE (AppUid,Locale));</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_LocalizableAppInfo ON LocalizableAppInfo(AppUid,Locale);</SQLQuery>
+	<SQLQuery>CREATE TABLE ViewData(ViewId INTEGER PRIMARY KEY AUTOINCREMENT,LocalAppInfoId INTEGER NOT NULL,Uid INTEGER NOT NULL,ScreenMode INTEGER DEFAULT 0,CaptionAndIconId INTEGER);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_ViewData_LocalAppInfoId ON ViewData(LocalAppInfoId);</SQLQuery>
+	<SQLQuery>CREATE TABLE CaptionAndIconInfo(CaptionAndIconId INTEGER PRIMARY KEY AUTOINCREMENT,Caption TEXT COLLATE NOCASE,NumberOfIcons INTEGER DEFAULT 0,IconFile TEXT COLLATE NOCASE);</SQLQuery>
+	<SQLQuery>CREATE TABLE AppProperties(PropertyId INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT NOT NULL COLLATE NOCASE,Locale INTEGER DEFAULT 0,AppUid INTEGER NOT NULL,ServiceUid INTEGER DEFAULT 0,IntValue INTEGER,StrValue TEXT,IsStr8Bit BOOLEAN DEFAULT 0,CONSTRAINT U_AppUid_Locale_Name UNIQUE (AppUid,ServiceUid,Locale,Name));</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppProperties_AppUid ON AppProperties(AppUid);</SQLQuery>
+	<SQLQuery>CREATE INDEX idx_AppProperties_Name ON AppProperties(Name);</SQLQuery>
 </CreateDatabase>
 
Binary file secureswitools/swisistools/test/tscrtool/data/preprovision.dtd has changed
Binary file secureswitools/swisistools/test/tscrtool/data/preprovision_appregattribmissing.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/preprovision_appreginfo.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/preprovision_noappattrib.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/preprovision_nocaptioniconinfo.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/preprovision_nullappfile.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/preprovision_nullappuid.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/update_db.dtd has changed
Binary file secureswitools/swisistools/test/tscrtool/data/update_db_end_tag_missing.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/update_db_test.xml has changed
Binary file secureswitools/swisistools/test/tscrtool/data/update_db_unicode.xml has changed
--- a/secureswitools/swisistools/test/tscrtool/tscrtool.ini	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/test/tscrtool/tscrtool.ini	Fri Apr 16 15:05:20 2010 +0300
@@ -139,14 +139,14 @@
 checkdbexists = %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\unicodescr.db
 result=ENone
 
-# preprovision application xml file does not have an attribute specified.
+# preprovision application xml file does not have an attribute specified for ComponentProperty.
 [sec/swi/scrtool/0023]
-option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_attribute_missing.xml
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_attribute_missing.xml
 result=EParseError
 
 # preprovision for handling conditions.
 [sec/swi/scrtool/0024]
-option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_coverage.xml
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_coverage.xml
 result=ENone
 
 # Usage of -f and -p together: positive test
@@ -159,7 +159,37 @@
 option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_doesnotexist.xml
 result=EFileNotPresent
 
-# Usage of -f and -p together: negative test - use nonexisting update_db XML XML
+# Usage of -f and -p together: negative test - use nonexisting update_db XML
 [sec/swi/scrtool/0027]
 option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_nonexisting.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_symbian.xml
 result=EFileNotPresent
+
+# Usage of -f and -p together: preprovision xml having registration information
+[sec/swi/scrtool/0028]
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_appreginfo.xml
+result=ENone
+
+# Usage of -f and -p together: preprovision xml having null app uid
+[sec/swi/scrtool/0029]
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_nullappuid.xml
+result=ESqlCorrupt
+
+# Usage of -f and -p together: preprovision xml with attribute missing for LocalizableInfo
+[sec/swi/scrtool/0030]
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_appregattribmissing.xml
+result=EParseError
+
+# Usage of -f and -p together: preprovision xml with no application attributes
+[sec/swi/scrtool/0031]
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_noappattrib.xml
+result=EParseError
+
+# Usage of -f and -p together: preprovision xml having null app file field
+[sec/swi/scrtool/0032]
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_nullappfile.xml
+result=ESqlCorrupt
+
+# Usage of -f and -p together: preprovision xml having no caption and icon info
+[sec/swi/scrtool/0033]
+option = -c create.db -f %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\update_db_test.xml -p %EPOCROOT%epoc32\winscw\c\tswi\tscrtool\data\preprovision_nocaptioniconinfo.xml
+result=ENone
--- a/sysdef_1_4_0.dtd	Fri Mar 19 09:33:35 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
- <!ELEMENT SystemDefinition (systemModel?, build?)>
- <!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED>
- <!ELEMENT systemModel (layer+)>
- <!ELEMENT layer (logicalset* | module*)*>
- <!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED>
- <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalset name CDATA #REQUIRED>
- <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalsubset name CDATA #REQUIRED>
- <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
- <!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED>
- <!ELEMENT component (unit* | package* | prebuilt*)*>
- <!ATTLIST component name CDATA #REQUIRED>
- <!ELEMENT unit EMPTY>
- <!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT package EMPTY>
- <!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT prebuilt EMPTY>
- <!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
- <!ELEMENT unitList (unitRef+)>
- <!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT unitRef EMPTY>
- <!ATTLIST unitRef unit IDREF #REQUIRED>
- <!ELEMENT targetList EMPTY>
- <!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED>
- <!ELEMENT target EMPTY>
- <!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT option EMPTY>
- <!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED>
- <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
- <!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED>
- <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
- <!ELEMENT unitListRef EMPTY>
- <!ATTLIST unitListRef unitList IDREF #REQUIRED>
- <!ELEMENT layerRef EMPTY>
- <!ATTLIST layerRef layerName CDATA #REQUIRED>
- <!ELEMENT buildLayer EMPTY>
- <!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED>
- <!ELEMENT specialInstructions EMPTY>
- <!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED>  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdef_1_5_1.dtd	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,88 @@
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+  proFile CDATA #IMPLIED
+  qmakeArgs CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>