Revert incorrect RCL_3 drop: RCL_3
authorPat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:21:16 +0100
branchRCL_3
changeset 27 1481bf457703
parent 26 1221b68b8a5f
child 28 00671737faf2
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035
commondrm/commondrm.pro
commondrm/drmbrowserlauncher/bwinscw/DRMBrowserLauncheru.def
commondrm/drmbrowserlauncher/drmbrowserlauncher.pro
commondrm/drmbrowserlauncher/eabi/DRMBrowserLauncheru.def
commondrm/drmbrowserlauncher/src/drmbrowserlauncher.cpp
commondrm/drmencryptor/data/DRMEncryptor.rss
commondrm/drmencryptor/data/DRMEncryptor_caption.rss
commondrm/drmencryptor/data/DRMEncryptor_reg.rss
commondrm/drmencryptor/group/DRMEncryptor.mmp
commondrm/drmencryptor/group/DRMEncryptor.pkg
commondrm/drmencryptor/group/icon.bmp
commondrm/drmencryptor/group/icon_mask_soft.bmp
commondrm/drmencryptor/group/qgn_menu_DRMEncryptor.bmp
commondrm/drmencryptor/group/qgn_menu_DRMEncryptor_cxt.bmp
commondrm/drmencryptor/group/qgn_menu_DRMEncryptor_cxt_mask_soft.bmp
commondrm/drmencryptor/group/qgn_menu_DRMEncryptor_mask_soft.bmp
commondrm/drmencryptor/inc/DRMEncryptor.hrh
commondrm/drmencryptor/inc/DRMEncryptor.rh
commondrm/drmencryptor/inc/DRMEncryptorApp.h
commondrm/drmencryptor/inc/DRMEncryptorAppUi.h
commondrm/drmencryptor/inc/DRMEncryptorContainer.h
commondrm/drmencryptor/inc/DRMEncryptorDocument.h
commondrm/drmencryptor/inc/DRMEncryptorImage.h
commondrm/drmencryptor/inc/DRMPlayServerTest.h
commondrm/drmencryptor/inc/Performance.h
commondrm/drmencryptor/src/DRMEncryptorApp.cpp
commondrm/drmencryptor/src/DRMEncryptorAppUi.cpp
commondrm/drmencryptor/src/DRMEncryptorContainer.cpp
commondrm/drmencryptor/src/DRMEncryptorDocument.cpp
commondrm/drmencryptor/src/DRMEncryptorImage.cpp
commondrm/drmencryptor/src/DRMPlayServerTest.cpp
commondrm/drmencryptor/src/DrmBb5KeyStorage.cpp
commondrm/drmencryptor/src/DrmEncryptor.cpp
commondrm/drmencryptor/src/DrmKeyStorage.cpp
commondrm/drmencryptor/src/Performance.cpp
commondrm/drmqtencryptor/drmencryptor.h
commondrm/drmqtencryptor/drmencryptor.ui
commondrm/drmqtencryptor/drmencyptor.cpp
commondrm/drmqtencryptor/main.cpp
commondrm/drmqtencryptor/qt_drmencryptor.pro
commondrm/drmrightsmanagerui/group/DRMRightsManager.mmp
commondrm/drmrightsmanagerui/inc/DRMRightsMgrDetailsContainer.h
commondrm/drmrightsmanagerui/loc/DRMRightsManager.loc
commondrm/drmrightsmanagerui/src/DRMRightsMgrAppUi.cpp
commondrm/drmrightsmanagerui/src/DRMRightsMgrDetailsContainer.cpp
commondrm/drmsettingsplugin/data/102750CC.rss
commondrm/drmsettingsplugin/data/drmsettingspluginrsc.rss
commondrm/drmsettingsplugin/group/drmsettingsplugin.mmp
commondrm/drmsettingsplugin/inc/drmsettingsmodel.h
commondrm/drmsettingsplugin/inc/drmsettingsplugin.h
commondrm/drmsettingsplugin/inc/drmsettingsplugin.hrh
commondrm/drmsettingsplugin/inc/drmsettingsplugin.rh
commondrm/drmsettingsplugin/inc/drmsettingsplugincontainer.h
commondrm/drmsettingsplugin/inc/drmsettingsusagecheckbox.h
commondrm/drmsettingsplugin/inc/drmsettingsusagelist.h
commondrm/drmsettingsplugin/src/drmsettingsmodel.cpp
commondrm/drmsettingsplugin/src/drmsettingsplugin.cpp
commondrm/drmsettingsplugin/src/drmsettingsplugincontainer.cpp
commondrm/drmsettingsplugin/src/drmsettingspluginimplementationtable.cpp
commondrm/drmsettingsplugin/src/drmsettingsusagecheckbox.cpp
commondrm/drmsettingsplugin/src/drmsettingsusagelist.cpp
commondrm/drmui/drmuidialogs/bwinscw/drmuidialogsu.def
commondrm/drmui/drmuidialogs/eabi/drmuidialogsu.def
commondrm/drmui/drmuidialogs/group/bld.inf
commondrm/drmui/drmuidialogs/group/drmuidialogs.mmp
commondrm/drmui/drmuidialogs/inc/drmuidialogs.h
commondrm/drmui/drmuidialogs/rom/drmuidialogs.iby
commondrm/drmui/drmuidialogs/src/drmuidialogs.cpp
commondrm/drmui/drmuinotifications/DRMUINotifications.rss
commondrm/drmui/drmuinotifications/drmuinotifications.pro
commondrm/drmui/drmuinotifications/inc/drmuidialogplugin.h
commondrm/drmui/drmuinotifications/inc/drmuidialogpluginkeys.h
commondrm/drmui/drmuinotifications/inc/drmuidialogsbuilder.h
commondrm/drmui/drmuinotifications/resource/Registeringprog.docml
commondrm/drmui/drmuinotifications/resource/accountupdatequery.docml
commondrm/drmui/drmuinotifications/resource/acquiringlicenceprog.docml
commondrm/drmui/drmuinotifications/resource/copyobjectsquery.docml
commondrm/drmui/drmuinotifications/resource/deletedrmfilequery.docml
commondrm/drmui/drmuinotifications/resource/deregisteredconf.docml
commondrm/drmui/drmuinotifications/resource/deregisteringprog.docml
commondrm/drmui/drmuinotifications/resource/drmuinotifications.qrc
commondrm/drmui/drmuinotifications/resource/filedeletedconf.docml
commondrm/drmui/drmuinotifications/resource/forwardprotectedconf.docml
commondrm/drmui/drmuinotifications/resource/getnewlicencequery.docml
commondrm/drmui/drmuinotifications/resource/infoexpiredornoronote.docml
commondrm/drmui/drmuinotifications/resource/invalidornoapnote.docml
commondrm/drmui/drmuinotifications/resource/licenceexpiredconf.docml
commondrm/drmui/drmuinotifications/resource/moveobjectsquery.docml
commondrm/drmui/drmuinotifications/resource/noconnectiondefinednote.docml
commondrm/drmui/drmuinotifications/resource/nocountquery.docml
commondrm/drmui/drmuinotifications/resource/norightsobjectquery.docml
commondrm/drmui/drmuinotifications/resource/notrecognizedconf.docml
commondrm/drmui/drmuinotifications/resource/nousagequery.docml
commondrm/drmui/drmuinotifications/resource/objectlockedconf.docml
commondrm/drmui/drmuinotifications/resource/openingfailpermnote.docml
commondrm/drmui/drmuinotifications/resource/registeredconf.docml
commondrm/drmui/drmuinotifications/resource/registerfailureconf.docml
commondrm/drmui/drmuinotifications/resource/retryforlicencequery.docml
commondrm/drmui/drmuinotifications/resource/rightsobjectexpiredquery.docml
commondrm/drmui/drmuinotifications/resource/rightsobjectsrecievednote.docml
commondrm/drmui/drmuinotifications/resource/simnotallowedquery.docml
commondrm/drmui/drmuinotifications/resource/unabletocopyconf.docml
commondrm/drmui/drmuinotifications/resource/unabletoderegisterconf.docml
commondrm/drmui/drmuinotifications/resource/unabletomoveconf.docml
commondrm/drmui/drmuinotifications/resource/unabletosendconf.docml
commondrm/drmui/drmuinotifications/resource/unabletosendquery.docml
commondrm/drmui/drmuinotifications/resource/unsupportedconf.docml
commondrm/drmui/drmuinotifications/resource/updatedconf.docml
commondrm/drmui/drmuinotifications/resource/updatefailureconf.docml
commondrm/drmui/drmuinotifications/resource/updatingprog.docml
commondrm/drmui/drmuinotifications/resource/viewrestrictionconf.docml
commondrm/drmui/drmuinotifications/resource/waitingforlicenceconf.docml
commondrm/drmui/drmuinotifications/resource/waitingforrightsobjconf.docml
commondrm/drmui/drmuinotifications/rom/drmuinotifications.iby
commondrm/drmui/drmuinotifications/src/drmuidialogplugin.cpp
commondrm/drmui/drmuinotifications/src/drmuidialogsbuilder.cpp
commondrm/drmui/group/bld.inf
commondrm/drmutility/bwinscw/drmutilitycommonu.def
commondrm/drmutility/data/drmutility.rss
commondrm/drmutility/eabi/DrmUtilityDmgrWrapperu.def
commondrm/drmutility/eabi/drmutilitycommonu.def
commondrm/drmutility/group/DRMUiHandlingImpl.mmp
commondrm/drmutility/group/DrmUtilityDmgrWrapper.mmp
commondrm/drmutility/group/bld.inf
commondrm/drmutility/group/drmutilitycommon.mmp
commondrm/drmutility/group/drmutilitywmdrmwrapper.mmp
commondrm/drmutility/group/qt/drmuihandlingimpl.pri
commondrm/drmutility/group/qt/drmuihandlingimpl.pro
commondrm/drmutility/group/qt/drmutilitydmgrwrapper.pri
commondrm/drmutility/group/qt/drmutilitydmgrwrapper.pro
commondrm/drmutility/inc/DrmUiHandlingImpl.h
commondrm/drmutility/inc/DrmUtilityGlobalNoteWrapper.h
commondrm/drmutility/inc/drmutilityconnection.h
commondrm/drmutility/inc/drmutilityui.h
commondrm/drmutility/inc/drmutilitywmdrmwrapper.h
commondrm/drmutility/inc/qdrmutilitydmgreventhandler.h
commondrm/drmutility/loc/DRMUtility.loc
commondrm/drmutility/src/DrmUiHandlingImpl.cpp
commondrm/drmutility/src/DrmUtilityDmgrWrapper.cpp
commondrm/drmutility/src/DrmUtilityGlobalNoteWrapper.cpp
commondrm/drmutility/src/drmutilityconnection.cpp
commondrm/drmutility/src/drmutilityui.cpp
commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp
commondrm/drmutility/src/qdrmutilitydmgreventhandler.cpp
commondrm/drmutility/traces/OstTraceDefinitions.h
commondrm/group/bld.inf
commondrm/rom/DRMEncryptor.iby
commondrm/rom/DRMRightsManagerUI.iby
commondrm/rom/DRMRightsManagerUIResources.iby
commondrm/rom/drmbrowserlauncher.iby
commondrm/rom/drmsettingsplugin.iby
commondrm/rom/drmsettingspluginresources.iby
drm.pro
drm_plat/camese_framework_api/camese_framework_api.metaxml
drm_plat/camese_framework_api/group/bld.inf
drm_plat/camese_framework_api/inc/wmdrmdlahandler.h
drm_plat/drm_common_api/tsrc/data/mmc/DRM/content.dcf
drm_plat/drm_rights_api/tsrc/data/c/content.dcf
drm_plat/wmdrm_access_api/inc/wmdrmaccessecominterface.inl
drm_pub/drm_helper_api/inc/Drmhelper.h
drm_pub/drm_helper_api/loc/DRMCommon.loc
drm_pub/oma_drm_caf_agent_api/tsrc/bc/BCDRMCAFCAPS_exe/group/BCDRMCAFCAPS_exe.mmp
drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/data/content.dcf
drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/group/DRM_CAF.mmp
drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/group/DRM_CAF_nrm.mmp
drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/inc/DRM_CAF.h
inc/DrmUtilityDmgrWrapper.h
inc/buffercontainers.h
inc/buffercontainers.inl
inc/drmbrowserlauncher.h
inc/drmuidialogids.h
layers.sysdef.xml
omadrm/drmengine/agentv2/src/Oma2AgentAttributes.cpp
omadrm/drmengine/agentv2/src/Oma2AgentContent.cpp
omadrm/drmengine/agentv2/src/Oma2AgentManager.cpp
omadrm/drmengine/dcf/src/Oma2Dcf.cpp
omadrm/drmengine/dcfrepository/server/src/DcfRepSrv.cpp
omadrm/drmengine/dm/src/DRMMessageParser.cpp
omadrm/drmengine/drmbackup/inc/DRMBackup.h
omadrm/drmengine/drmbackup/src/DRMBackupObserver.cpp
omadrm/drmengine/group/DRMCommon.mmp
omadrm/drmengine/group/DRM_BAT.mmp
omadrm/drmengine/group/DrmCrypto.mmp
omadrm/drmengine/group/DrmDcf.mmp
omadrm/drmengine/group/DrmKeyStorage.mmp
omadrm/drmengine/group/DrmParsers.mmp
omadrm/drmengine/group/DrmRights.mmp
omadrm/drmengine/group/DrmServerInterfaces.mmp
omadrm/drmengine/group/DrmStdKeyStorage.mmp
omadrm/drmengine/group/OmaDrmAgent.mmp
omadrm/drmengine/group/ROAPHandler.mmp
omadrm/drmengine/group/RightsServer.mmp
omadrm/drmengine/keystorage/src/DrmStdKeyStorage.cpp
omadrm/drmengine/legacy/src/DRMCommon.cpp
omadrm/drmengine/legacy/src/drmcommon.rss
omadrm/drmengine/notifier/inc/DRMMessageStorage.h
omadrm/drmengine/notifier/src/DRMMessageStorage.cpp
omadrm/drmengine/notifier/src/DRMNotifierSession.cpp
omadrm/drmengine/ro/src/DrmRightsParser.cpp
omadrm/drmengine/roap/inc/RoapConnection.h
omadrm/drmengine/roap/src/RoapConnection.cpp
omadrm/drmengine/roap/src/RoapEng.cpp
omadrm/drmengine/roap/src/RoapEngBase.cpp
omadrm/drmengine/roap/src/RoapHttpHandler.cpp
omadrm/drmengine/roap/src/RoapSigner.cpp
omadrm/drmengine/server/inc/DRMRightsServer.h
omadrm/drmengine/server/src/DRMRightsClient.cpp
omadrm/drmengine/server/src/drmrightsdb.cpp
omadrm/drmhelper/group/Drmhelper.mmp
omadrm/drmhelper/group/bld.inf
omadrm/drmhelper/group/drmhelper.pro
omadrm/drmhelper/src/drmhelper.cpp
omadrm/drmlicensemanager/group/DRMLicenseChecker.mmp
omadrm/drmlicensemanager/group/DRMLicenseManager.mmp
omadrm/drmlicensemanager/group/drm_lm_bat.mmp
omadrm/drmplugins/drmfilter/group/HTTPFilterDRM.mmp
omadrm/drmplugins/drmfilter/src/HTTPFilterDRM.cpp
omadrm/drmplugins/drmfilter/src/HTTPFilterDRMDataSupplier.cpp
omadrm/drmplugins/drmrecognizer/group/RecDRM.mmp
omadrm/drmplugins/drmrecognizer/src/101F51F4.RSS
omadrm/drmplugins/drmrecognizer/src/RecDRM.cpp
omadrm/drmplugins/drmrohandler/group/bld.inf
omadrm/drmplugins/drmrohandler/group/crohandler.mmp
omadrm/drmplugins/drmrohandler/group/rohandler.pri
omadrm/drmplugins/drmrohandler/group/rohandler.pro
omadrm/drmplugins/drmrohandler/inc/CRoHandler.h
omadrm/drmplugins/drmrohandler/inc/RoHandlerStringResourceReader.h
omadrm/drmplugins/drmrohandler/inc/StringResourceReader.h
omadrm/drmplugins/drmrohandler/inc/qrohandlerdmgreventhandler.h
omadrm/drmplugins/drmrohandler/inc/rohandlerdmgrwrapper.h
omadrm/drmplugins/drmrohandler/src/CRoHandler.cpp
omadrm/drmplugins/drmrohandler/src/RoHandlerStringResourceReader.cpp
omadrm/drmplugins/drmrohandler/src/StringResourceReader.cpp
omadrm/drmplugins/drmrohandler/src/qrohandlerdmgreventhandler.cpp
omadrm/drmplugins/drmrohandler/src/rohandlerdmgrwrapper.cpp
omadrm/drmplugins/drmromtm/group/RoMtmDat.mmp
omadrm/drmplugins/drmromtm/loc/RoMtmUi.loc
omadrm/drmplugins/drmromtm/uiData/inc/RoMtmCommands.hrh
omadrm/drmplugins/drmromtm/uiData/src/RoMtmDat.cpp
omadrm/drmplugins/drmromtm/uiData/src/RoMtmUi.rss
omadrm/group/bld.inf
omadrm/omadrm.pro
sysdef_1_4_0.dtd
sysdef_1_5_1.dtd
wmdrm/camese/cameseutility/group/CameseUtility.mmp
wmdrm/camese/httpfiltercamese/Src/httpfiltercamesedrmheader.cpp
wmdrm/camese/httpfiltercamese/group/httpfiltercamese.mmp
wmdrm/camese/wmdrmdla/group/wmdrmdla.mmp
wmdrm/camese/wmdrmdla/inc/wmdrmdlahandler.h
wmdrm/camese/wmdrmdla/inc/wmdrmdlahttpfwpluginresolver.h
wmdrm/camese/wmdrmdlaapp/inc/wmdrmdlabrowsercontainer.h
wmdrm/camese/wmdrmdlaapp/inc/wmdrmdlabrowserview.h
wmdrm/camese/wmdrmdlaapp/src/wmdrmdlaappservicesession.cpp
wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp
wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowserview.cpp
wmdrm/wmdrmengine/wmdrmaccess/group/wmdrmaccess.mmp
wmdrm/wmdrmengine/wmdrmaccess/src/wmdrmaccess.cpp
wmdrm/wmdrmengine/wmdrmagent/group/wmdrmagent.mmp
--- a/commondrm/commondrm.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#
-# 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: Commondrm main level project file.
-#
-
-TEMPLATE = subdirs
-
-SYMBIAN_PLATFORMS = WINSCW ARMV5
-
-SUBDIRS += drmbrowserlauncher/drmbrowserlauncher.pro
-SUBDIRS += drmqtencryptor/qt_drmencryptor.pro
-SUBDIRS += drmutility/group/qt/drmutilitydmgrwrapper.pro
-SUBDIRS += drmutility/group/qt/drmuihandlingimpl.pro
-SUBDIRS += drmui/drmuinotifications/drmuinotifications.pro
--- a/commondrm/drmbrowserlauncher/bwinscw/DRMBrowserLauncheru.def	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
-	?LaunchUrlL@CDrmBrowserLauncher@DRM@@QAEXAAVTDesC16@@@Z @ 1 NONAME ; void DRM::CDrmBrowserLauncher::LaunchUrlL(class TDesC16 &)
-	?NewLC@CDrmBrowserLauncher@DRM@@SAPAV12@XZ @ 2 NONAME ; class DRM::CDrmBrowserLauncher * DRM::CDrmBrowserLauncher::NewLC(void)
-	?NewL@CDrmBrowserLauncher@DRM@@SAPAV12@XZ @ 3 NONAME ; class DRM::CDrmBrowserLauncher * DRM::CDrmBrowserLauncher::NewL(void)
-
--- a/commondrm/drmbrowserlauncher/drmbrowserlauncher.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-#
-# 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 = lib
-TARGET = drmbrowserlauncher 	
-
-symbian:
-{
-TARGET.UID1 = 0x1000008D
-TARGET.UID3 = 0x200315BC
-
-TARGET.CAPABILITY = CAP_GENERAL_DLL
-TARGET.VID = VID_DEFAULT
-TARGET.EPOCALLOWDLLDATA = 1
-
-defBlock = \
-	"$${LITERAL_HASH}if defined(ARMCC)" \
-	"DEFFILE ./eabi/" \
-	"$${LITERAL_HASH}elif defined( WINSCW )" \
-	"DEFFILE ./bwinscw/" \
-	"$${LITERAL_HASH}elif defined( WINS )" \
-	"DEFFILE ./bwins/" \
-	"$${LITERAL_HASH}else" \
-	"DEFFILE ./bmarm/" \
-	"$${LITERAL_HASH}endif"
-
-	MMP_RULES += defBlock
-	
-	MMP_RULES -= "OPTION_REPLACE ARMCC --export_all_vtbl // don't use --export_all_vtbl"
-}
-
-DEPENDPATH += .
-DEPENDPATH += ./src
-
-INCLUDEPATH += ../../inc
-
-SOURCES += drmbrowserlauncher.cpp
-
--- a/commondrm/drmbrowserlauncher/eabi/DRMBrowserLauncheru.def	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
-	_ZN3DRM19CDrmBrowserLauncher10LaunchUrlLER7TDesC16 @ 1 NONAME
-	_ZN3DRM19CDrmBrowserLauncher4NewLEv @ 2 NONAME
-	_ZN3DRM19CDrmBrowserLauncher5NewLCEv @ 3 NONAME
-
--- a/commondrm/drmbrowserlauncher/src/drmbrowserlauncher.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-* 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 "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  DRM Browser Launcher class
-*
-*/
-
-
-// INCLUDE FILES
-#include "drmbrowserlauncher.h"
-#include <QDesktopServices>
-#include <QString>
-#include <QUrl>
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-DRM::CDrmBrowserLauncher::CDrmBrowserLauncher()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-DRM::CDrmBrowserLauncher::~CDrmBrowserLauncher()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CDrmBrowserLauncher::NewLC
-// First phase constructor
-// -----------------------------------------------------------------------------
-//
-EXPORT_C DRM::CDrmBrowserLauncher* DRM::CDrmBrowserLauncher::NewLC()
-    {
-    DRM::CDrmBrowserLauncher* self( new( ELeave ) CDrmBrowserLauncher );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CDrmBrowserLauncher::NewL
-// First phase constructor
-// -----------------------------------------------------------------------------
-//
-EXPORT_C DRM::CDrmBrowserLauncher* DRM::CDrmBrowserLauncher::NewL()
-    {
-    DRM::CDrmBrowserLauncher* self( NewLC() );
-    CleanupStack::Pop();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CDrmBrowserLauncher::LaunchUrlL
-// Static method for launching the Browser with a given URL.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void DRM::CDrmBrowserLauncher::LaunchUrlL(TDesC &aUrl)
-		{
-		// convert given URL to QUrl format
-		QString urlString = QString::fromUtf16(aUrl.Ptr(), aUrl.Length());
-		QUrl* url = new QUrl(urlString);
-		bool ret = QDesktopServices::openUrl(*url);
-		if(!ret)
-				{
-				User::Leave(KErrNotFound);
-				}
-			
-		}
-
-void DRM::CDrmBrowserLauncher::ConstructL()
-    {
-    }
-    
-
-
-//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/data/DRMEncryptor.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,466 @@
+/*
+* Copyright (c) 2004 - 2007 Nokia Corporation and/or 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 IDENTIFIER
+NAME    DRME // 4 letter ID
+
+//  INCLUDES
+
+#include "DRMEncryptor.rh"
+#include "DRMEncryptor.hrh"
+#include <drmencryptor.mbg>
+#include <data_caging_paths_strings.hrh>
+
+#include <eikon.rh>
+#include <avkon.rh>
+#include <avkon.rsg>
+#include <avkon.mbg>
+
+#include <appinfo.rh>
+
+RESOURCE RSS_SIGNATURE {}
+
+RESOURCE TBUF { buf= ""; }
+
+RESOURCE EIK_APP_INFO
+    {
+    cba = R_AVKON_SOFTKEYS_EXIT;
+    cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
+    menubar = r_DrmEncryptor_menubar;
+     // no menu bar
+    }
+
+// ---------------------------------------------------------
+//
+//   r_helloworldbasic_menubar
+//   Menubar for HelloWorldBasic example
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_BAR r_DrmEncryptor_menubar
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_DrmEncryptor_menu;
+            }
+        };
+    }
+
+
+// ---------------------------------------------------------
+//
+//   r_helloworldbasic_menu
+//   Menu for "Options"
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_PANE r_DrmEncryptor_menu
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EDrmEncryptorUICommand1;
+            txt = "Encrypt";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDrmEncryptorKeyCommand;
+            txt = "Import Keys";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDrmEncryptorDeleteCommand;
+            txt = "Delete Database";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDrmTimeCommand;
+            txt = "DRMClock time";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = ESetDrmTimeCommand;
+            txt = "Set DRMClock";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EAddROsIntoDb;
+            txt = "Process multiple ROs";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDrmBb5KeyTestCommand;
+            txt = "Bb5KeyTest";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDRMPlayServerCommand;
+            txt = "DrmPlayServerTest";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDRM_API_BATUICommand3;
+            txt = "Run Performance test";
+            cascade=r_DRM_API_sub_menu_1;
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDrmEncryptorDeleteWmDrmCommand;
+            txt = "Delete WmDrm Rights";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDrmEncryptorBackupWmDrmCommand;
+            txt = "Backup WmDrm DB";
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EDrmEncryptorRestoreWmDrmCommand;
+            txt = "Restore WmDrm DB";
+            flags = EEikMenuItemAction;
+            },                     
+        MENU_ITEM
+            {
+            command = EAknSoftkeyExit;
+            txt = "Exit";
+            }
+        };
+    }
+
+
+RESOURCE TITLE_PANE r_DRMEncryptor_title_pane
+    {
+    txt = "DRMEncryptor";
+    }
+
+// Texts and images appear in this order on the DRMEncryptor screen.
+// Every new text item starts from a new line.
+
+RESOURCE DRMEncryptor_ITEM_LIST r_DRMEncryptor_main_text
+    {
+    items =
+        {
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_1;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_2;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_3;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_4;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_5;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_6;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_7;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_8;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_9;
+            },
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_10;
+            },        
+        DRMEncryptor_TEXT
+            {
+            txt = r_DRMEncryptor_copyright_text_11;
+            }            
+        };
+    }
+
+RESOURCE DIALOG r_drm_time_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtMultilineQuery;
+            id = EMultilineFirstLine;
+            control = AVKON_DATA_QUERY
+                {
+                layout = EMultiDataFirstDateEd;
+                label = "Date";
+                control = DATE_EDITOR
+                    {
+                    minDate = DATE
+                        {
+                        year = 1900;
+                        };
+                    maxDate = DATE
+                        {
+                        year = 2100;
+                        };
+                    flags = 0;
+                    };
+                };
+            },
+        DLG_LINE
+            {
+            type = EAknCtMultilineQuery;
+            id = EMultilineSecondLine;
+            control = AVKON_DATA_QUERY
+                {
+                layout = EMultiDataSecondTimeEd;
+                label = "Time";
+                control = TIME_EDITOR
+                    {
+                    minTime = TIME
+                        {
+                        second = 0;
+                        minute = 0;
+                        hour = 0;
+                        };
+                    maxTime = TIME
+                        {
+                        second = 59;
+                        minute = 59;
+                        hour = 23;
+                        };
+                    flags = 0;
+                    };
+                };
+            }
+        };
+    }
+
+/////////////////////////////////
+// PERFORMANCE
+///////////////////////////////
+
+// ---------------------------------------------------------
+//
+//   r_DRM_API_sub_menu_1
+//   SubMenu for "Options->Performance"
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_PANE r_DRM_API_sub_menu_1
+    {
+    items=
+        {
+		MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_1;
+            txt="Generate test files";
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            txt="RFile plain";
+            cascade=r_DRM_API_sub_menu_1_1;
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            txt="CAF plain";
+            cascade=r_DRM_API_sub_menu_1_2;
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            txt="DRM";
+            cascade=r_DRM_API_sub_menu_1_3;
+            flags = EEikMenuItemSpecific;
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+//
+//   r_DRM_API_sub_menu_1
+//   SubMenu for "Options->Performance->RFile"
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_PANE r_DRM_API_sub_menu_1_1
+    {
+    items=
+        {
+		MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_1_1;
+            txt="File opening";
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_1_2;
+            txt="Sequential";
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_1_3;
+            txt="Random";
+            flags = EEikMenuItemSpecific;
+            }
+        };
+    }
+// ---------------------------------------------------------
+//
+//   r_DRM_API_sub_menu_1
+//   SubMenu for "Options->Performance->CAF"
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_PANE r_DRM_API_sub_menu_1_2
+    {
+    items=
+        {
+		MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_2_1;
+            txt="File opening";
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_2_2;
+            txt="Sequential";
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_2_3;
+            txt="Random";
+            flags = EEikMenuItemSpecific;
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+//
+//   r_DRM_API_sub_menu_1
+//   SubMenu for "Options->Performance->DRM"
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_PANE r_DRM_API_sub_menu_1_3
+    {
+    items=
+        {
+        MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_3_1_1;
+            txt="File Opening";
+            flags = EEikMenuItemSpecific;
+            },
+		MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_3_1_2;
+            txt="File Opening with ExecuteIntent";
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_3_1_3;
+            txt="Sequential";
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command=EDRM_API_SubMenuId_3_1_4;
+            txt="Random";
+            flags = EEikMenuItemSpecific;
+            }
+        };
+    }
+
+RESOURCE DIALOG r_aknicon_icon_size_query
+	{
+	flags = EGeneralQueryFlags;
+	buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+		{
+		DLG_LINE
+			{
+			type = EAknCtQuery;
+			id = EGeneralQuery;
+			control = AVKON_DATA_QUERY
+				{
+				layout = ENumberLayout;
+				label = "Add multiplier";
+				control = AVKON_INTEGER_EDWIN
+				    {
+					min = 0;
+					max = 1000;
+					};
+				};
+			}
+		};
+	}
+
+RESOURCE TBUF r_DRMEncryptor_copyright_text_1  { buf = "DRMEncryptor - tool to process OMA DRM 1.0 content into terminal."; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_2  { buf = "Encryptor tool will process DRM messages (.dm) from e:\DRM - directory. If the directory does not exist, it will be created during the first execution. Output files will be placed into e:\Others -directory. On the emulator, the c: drive is used instead of the e: drive"; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_3  { buf = "Encryptor tool process separate delivery rights objects (.oro && .ro && .drc && dr). Place the files under e:\DRM directory and press Encrypt."; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_4  { buf = "With tool the PKI -keys can be imported into hardware. PKI -key files should be placed under e:\DRM\keys."; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_5  { buf = "The tool also allows removal of all rights in the rights database."; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_6  { buf = "DRMClock can be viewed via menu. DRM Time is shown as nitz time."; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_7  { buf = "DRMClock can be set via menu. Use Options -> Set DRM clock."; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_8  { buf = "DRMEncryptor can be used for processing same RO for multiple times. Place ROs into e:\drm -folder and choose Options->Process multiple ROs->add multiplier which will be used for every processed RO."; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_9  { buf = "DRMEncryptor can be used for checking that DrmPlayServer's usage is prohibited for WMDRM files. Place any WMDRM file named as test.wma into e:\drm and choose Options->DrmPlayServerTest"; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_10 { buf = "DRMEncryptor can be used for making backup and restoring WMDRM SQlite License Store. Backup will make a copy of [10282F1B]hds.db to e:\[10282F1B]hds.db. Restore will copy e:\[10282F1B]hds.db back to c:\private\10281e17\[10282F1B]hds.db"; }
+RESOURCE TBUF r_DRMEncryptor_copyright_text_11 { buf = "This tool is purposed only for R&D and should not be used commercially. Copyright © 2004 Nokia. All rights reserved."; }
+
+
+RESOURCE LOCALISABLE_APP_INFO r_DRMEncryptor_localisable_app_info
+    {
+    short_caption = "DRMEncryptor";
+    caption_and_icon =
+    CAPTION_AND_ICON_INFO
+        {
+        caption = "DRMEncryptor";
+        };
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/data/DRMEncryptor_caption.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 <apcaptionfile.rh>
+
+RESOURCE CAPTION_DATA
+    {
+    caption = "DRMEncryptor";
+    shortcaption = "DRM";
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/data/DRMEncryptor_reg.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or 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 <DRMEncryptor.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x01105901 // 0x10005A22 // Define your application UID here
+
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file = "DRMEncryptor";
+  
+
+    localisable_resource_file = APP_RESOURCE_DIR"\\DRMEncryptor";
+
+    localisable_resource_id = R_DRMENCRYPTOR_LOCALISABLE_APP_INFO;
+    datatype_list =
+        {
+        DATATYPE
+            {
+            priority = EDataTypePriorityNormal;
+            type = "application/x-device-key-chain";
+            }
+        };
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/group/DRMEncryptor.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2002-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:  Internal drm test tool
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET         DRMEncryptor.exe
+TARGETTYPE     exe
+
+UID            0x100039CE  0x01105901
+
+CAPABILITY CAP_APPLICATION ReadUserData AllFiles DRM PowerMgmt CommDD
+VENDORID VID_DEFAULT
+
+SOURCEPATH     ../src
+SOURCE         DrmKeyStorage.cpp
+SOURCE         DrmBb5KeyStorage.cpp
+SOURCE         DRMEncryptorApp.cpp
+SOURCE         DRMEncryptorAppUi.cpp
+SOURCE         DRMEncryptorDocument.cpp
+SOURCE         DRMEncryptorContainer.cpp
+SOURCE         DRMEncryptorImage.cpp
+SOURCE         DrmEncryptor.cpp
+SOURCE         DRMPlayServerTest.cpp
+SOURCE         Performance.cpp
+
+
+START RESOURCE ../data/DRMEncryptor.rss
+
+HEADER
+TARGETPATH APP_RESOURCE_DIR
+
+END //RESOURCE
+
+START RESOURCE ../data/DRMEncryptor_reg.rss
+DEPENDS drmencryptor.rsg
+    TARGETPATH /private/10003a3f/apps
+END
+
+// Default system include paths for middleware layer modules.
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE    ../inc
+USERINCLUDE    ../../../inc
+
+LIBRARY        DrmParsers.lib
+LIBRARY        DrmDcf.lib
+LIBRARY        DrmRights.lib
+LIBRARY        DrmServerInterfaces.lib
+LIBRARY        DRMCommon.lib
+LIBRARY        apparc.lib
+LIBRARY        avkon.lib
+LIBRARY        bafl.lib
+LIBRARY        cone.lib
+LIBRARY        eikcoctl.lib
+LIBRARY        eikcore.lib
+LIBRARY        euser.lib
+LIBRARY        fbscli.lib
+LIBRARY        efsrv.lib
+LIBRARY        estor.lib
+LIBRARY        asn1.lib
+LIBRARY        cryptography.lib
+LIBRARY        crypto.lib
+LIBRARY        x509.lib
+LIBRARY        pkixcert.lib
+LIBRARY        random.lib
+LIBRARY        hash.lib
+LIBRARY        flogger.lib
+LIBRARY        ezip.lib
+
+// DRMKeyStorage
+LIBRARY        DrmKeyStorage.lib
+LIBRARY        DrmCrypto.lib
+
+LIBRARY        gdi.lib
+
+
+LIBRARY        caf.lib
+LIBRARY        cafutils.lib
+LIBRARY        drmhelper.lib
+LIBRARY        XmlFramework.lib
+LIBRARY        apmime.lib
+LIBRARY        DcfRep.lib
+LIBRARY        ecom.lib
+
+#ifdef RD_MULTIPLE_DRIVE
+LIBRARY        platformenv.lib
+#endif
+
+LIBRARY        drmaudioplayutility.lib
+
+SMPSAFE
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/group/DRMEncryptor.pkg	Wed Sep 01 12:21:16 2010 +0100
@@ -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:
+;
+; Languages
+; =========
+&EN
+
+; Name, UID for installation, Maj.Ver., Min.Ver., Variant, FLAG TO SPECIFY UNICODE, System component
+; ==================================================================================================
+#{"DRMEncryptor"}, (0x01105901),1,0,0,TYPE=SA
+
+;Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+"\epoc32\release\armv5\urel\DRMEncryptor.exe"-"!:\sys\bin\DRMEncryptor.exe"
+"\epoc32\data\Z\private\10003a3f\apps\DRMEncryptor_reg.RSC"-"!:\private\10003a3f\import\apps\DRMEncryptor_reg.rsc"
+
+
+"\epoc32\data\Z\Resource\apps\DRMEncryptor.mbm"-"!:\resource\apps\DRMEncryptor.mbm"
+"\epoc32\data\Z\Resource\apps\DRMEncryptor.mif"-"!:\resource\apps\DRMEncryptor.mif"
+"\epoc32\data\Z\Resource\apps\DRMEncryptor.RSC"-"!:\resource\apps\DRMEncryptor.RSC"
+"\epoc32\data\Z\Resource\apps\DRMEncryptor_AIF.mif"-"!:\resource\apps\DRMEncryptor_AIF.mif"
+
+; eof
Binary file commondrm/drmencryptor/group/icon.bmp has changed
Binary file commondrm/drmencryptor/group/icon_mask_soft.bmp has changed
Binary file commondrm/drmencryptor/group/qgn_menu_DRMEncryptor.bmp has changed
Binary file commondrm/drmencryptor/group/qgn_menu_DRMEncryptor_cxt.bmp has changed
Binary file commondrm/drmencryptor/group/qgn_menu_DRMEncryptor_cxt_mask_soft.bmp has changed
Binary file commondrm/drmencryptor/group/qgn_menu_DRMEncryptor_mask_soft.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMEncryptor.hrh	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 DRMEncryptor_HRH
+#define DRMEncryptor_HRH
+
+enum TDRMEncryptorItemType
+    {
+    EDRMEncryptorTextItem,
+    EDRMEncryptorImageItem
+    };
+
+// DrmEncryptor enumerate command codes
+enum TDrmEncryptorIds
+    {
+    EDrmEncryptorUICommand1 = 1,  // start value must not be 0
+    EDrmEncryptorKeyCommand,
+    EDrmEncryptorDeleteCommand,
+    ESetDrmTimeCommand,
+    EAddROsIntoDb,
+    EDrmTimeCommand,
+    EDrmBb5KeyTestCommand,
+    EDRMPlayServerCommand,
+    EDRM_API_BATUICommand3,
+    EDRM_API_SubMenuId_1,
+    EDRM_API_SubMenuId_1_1,
+    EDRM_API_SubMenuId_1_2,
+    EDRM_API_SubMenuId_1_3,
+    EDRM_API_SubMenuId_2_1,
+    EDRM_API_SubMenuId_2_2,
+    EDRM_API_SubMenuId_2_3,
+    EDRM_API_SubMenuId_3_1_1,
+    EDRM_API_SubMenuId_3_1_2,
+    EDRM_API_SubMenuId_3_1_3,
+    EDRM_API_SubMenuId_3_1_4,
+    EDrmEncryptorDeleteWmDrmCommand,
+    EDrmEncryptorBackupWmDrmCommand,
+    EDrmEncryptorRestoreWmDrmCommand
+    };
+
+#endif // DRMEncryptor_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMEncryptor.rh	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 DRMEncryptor_RH
+#define DRMEncryptor_RH
+
+#include "DRMEncryptor.hrh"
+
+STRUCT DRMEncryptor_TEXT
+    {
+    BYTE type = EDRMEncryptorTextItem;
+    LLINK txt; // set this
+    }
+
+STRUCT DRMEncryptor_IMAGE
+    {
+    BYTE type = EDRMEncryptorImageItem;
+    LTEXT16 bmpfile = ""; // set this
+    WORD bmpid = 0xffff;  // set this
+    }
+
+STRUCT DRMEncryptor_ITEM_LIST
+    {
+    STRUCT items[]; // text or image items
+    }
+
+#endif // DRMEncryptor_RH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMEncryptorApp.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2002-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:  Declares main application class
+*
+*/
+
+
+#ifndef DRMEncryptorAPP_H
+#define DRMEncryptorAPP_H
+
+// INCLUDES
+#include <aknapp.h>
+
+// CONSTANTS
+// UID of the application
+const TUid KUidDRMEncryptor = { 0x01105901 };
+
+// CLASS DECLARATION
+
+/**
+* CDRMEncryptorApp application class.
+* Provides factory to create concrete document object.
+*
+*/
+class CDRMEncryptorApp : public CAknApplication
+    {
+
+    public: // Functions from base classes
+    private:
+
+        /**
+        * From CApaApplication, creates CDRMEncryptorDocument document object.
+        * @return A pointer to the created document object.
+        */
+        CApaDocument* CreateDocumentL();
+
+        /**
+        * From CApaApplication, returns application's UID (KUidDRMEncryptor).
+        * @return The value of KUidDRMEncryptor.
+        */
+        TUid AppDllUid() const;
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMEncryptorAppUi.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2002-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:  Declares UI class for application.
+*
+*/
+
+
+#ifndef DRMEncryptorAPPUI_H
+#define DRMEncryptorAPPUI_H
+
+// INCLUDES
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <e32std.h>
+#include <coeccntx.h>
+#include <aknappui.h>
+
+// FORWARD DECLARATIONS
+class CDRMEncryptorContainer;
+
+// CONSTANTS
+
+// CLASS DECLARATION
+
+/**
+* Application UI class.
+* Provides support for the following features:
+* - EIKON control architecture
+*
+*/
+class CDRMEncryptorAppUi : public CAknAppUi
+    {
+    public: // Constructors and destructor
+
+        /**
+        * EPOC default constructor.
+        */
+        void ConstructL();
+
+        /**
+        * Destructor.
+        */
+        ~CDRMEncryptorAppUi();
+
+    public: // New functions
+
+    public: // Functions from base classes
+
+        TBool ProcessCommandParametersL(
+            TApaCommand aCommand,
+            TFileName& aDocumentName,
+            const TDesC8& aTail);
+
+
+    private:
+        /**
+        * From CEikAppUi, takes care of command handling.
+        * @param aCommand command to be handled
+        */
+        void HandleCommandL( TInt aCommand );
+
+    private: // Data
+        CDRMEncryptorContainer* iAppContainer;
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMEncryptorContainer.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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:  Declares container control for application.
+*
+*/
+
+
+#ifndef DRMEncryptorCONTAINER_H
+#define DRMEncryptorCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+#include <gdi.h>
+
+// FORWARD DECLARATIONS
+class CEikScrollBarFrame;
+class CDRMEncryptorImage;
+class CFont;
+class TRect;
+class TBidiText;
+
+// CLASS DECLARATION
+
+/**
+*  CDRMEncryptorContainer  container control class.
+*
+*/
+class CDRMEncryptorContainer : public CCoeControl
+    {
+    public: // Constructors and destructor
+        CDRMEncryptorContainer();
+        void ConstructL( const TRect& aRect );
+        ~CDRMEncryptorContainer();
+
+    private: // from CCoeControl
+
+        void Draw( const TRect& aRect ) const;
+        void ActivateL();
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+                                     TEventCode aModifiers );
+
+    private: // new functions
+
+        void SetTextL( const TDesC& aText );
+        void SetImageL( const TDesC& aFileName, TInt aBitmapId );
+        void UpdateScrollIndicatorL();
+
+    private: // Data
+
+        CArrayPtr<HBufC>* iText;
+        CArrayPtr<CDRMEncryptorImage>* iImages;
+        CArrayFixFlat<TInt>* iScreenStarts;
+        TInt iCurrentScreen;
+        TBool iDoNotShowLastLineAgain;
+        CGraphicsContext::TTextAlign iTextAlign;
+        CEikScrollBarFrame* iSBFrame;
+        const CFont* iFont; // not owned
+        TInt iLineWidth;
+        TInt iBaseLineDelta;
+        TInt iTopBaseLineX;
+        TInt iTopBaseLineY;
+        TInt iLinesPerScreen;
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMEncryptorDocument.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 DRMEncryptorDOCUMENT_H
+#define DRMEncryptorDOCUMENT_H
+
+// INCLUDES
+#include <AknDoc.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class  CEikAppUi;
+
+// CLASS DECLARATION
+
+/**
+*  CDRMEncryptorDocument application class.
+*/
+class CDRMEncryptorDocument : public CAknDocument
+    {
+    public: // Constructors and destructor
+        /**
+        * Two-phased constructor.
+        */
+        static CDRMEncryptorDocument* NewL( CEikApplication& aApp );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CDRMEncryptorDocument();
+
+        virtual CFileStore* OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs);
+
+    private:
+
+        /**
+        * Constructor.
+        */
+        CDRMEncryptorDocument( CEikApplication& aApp );
+
+        /**
+        * From CEikDocument, create CDRMEncryptorAppUi "App UI" object.
+        */
+        CEikAppUi* CreateAppUiL();
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMEncryptorImage.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2002-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:  Image to be shown in DRMEncryptor screen.
+*
+*/
+
+
+#ifndef DRMEncryptorIMAGE_H
+#define DRMEncryptorIMAGE_H
+
+// INCLUDES
+
+// FORWARD DECLARATIONS
+class CFbsBitmap;
+
+// CONSTANTS
+
+const TInt KImageTopMargin = 4 ;
+const TInt KImageBottomMargin = 4;
+
+// CLASS DECLARATION
+
+/**
+* CDRMEncryptorImage
+*/
+class CDRMEncryptorImage : public CBase
+    {
+    public: // Constructors and destructor
+
+        static CDRMEncryptorImage* NewLC( const TDesC& aFileName, TInt aBitmapId,
+                                   TInt aStartLine, TInt aBaseLineDelta );
+
+        /**
+        * Destructor
+        */
+        ~CDRMEncryptorImage();
+
+    public: // New functions
+
+        TInt HeightInPixels() const;
+        TInt WidthInPixels() const;
+        TInt StartLine() const;
+        TInt EndLine() const;
+        TInt Lines() const;
+        const CFbsBitmap* Bitmap() const;
+
+    private: // private constructor
+
+        /**
+        * C++ default constructor.
+        */
+        CDRMEncryptorImage();
+
+    private:  // Data
+
+        CFbsBitmap* iBitmap; // owned
+        TInt iStartLine;
+        TInt iEndLine;
+    };
+
+#endif // DRMEncryptorIMAGE_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/DRMPlayServerTest.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or 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 DRMPLAYSERVERTEST_H
+#define DRMPLAYSERVERTEST_H
+
+#include <e32base.h>
+#include <DrmAudioSamplePlayer.h>
+
+class CDRMPlayServerTest : public CBase, public MDrmAudioPlayerCallback
+    {
+    
+    public:
+        
+        static CDRMPlayServerTest* NewLC();
+
+        ~CDRMPlayServerTest();
+
+        TInt ExecutePlayServerTest();
+
+        void MdapcInitComplete( TInt aError, 
+                                const TTimeIntervalMicroSeconds& aDuration );
+
+        void MdapcPlayComplete( TInt aError );
+
+   private:
+        
+        CDRMPlayServerTest();
+        
+        void ConstructL();
+   
+   private:  // Data
+    
+        CDrmPlayerUtility* iDrmPlayerUtility;
+        CActiveSchedulerWait* iWait;
+        TInt iError;
+
+    };
+
+#endif // DRMPLAYSERVERTEST_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/inc/Performance.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2002-2004 Nokia Corporation and/or 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:  ?Description
+*
+*/
+
+
+
+#ifndef PERFORMANCE_H
+#define PERFORMANCE_H
+
+void TestPerformanceL(TInt aCommand);
+
+#endif      // PERFORMANCE_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DRMEncryptorApp.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 FILES
+#include "DRMEncryptorApp.h"
+#include "DRMEncryptorDocument.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CDRMEncryptorApp::AppDllUid()
+// Returns application UID
+// ---------------------------------------------------------
+//
+TUid CDRMEncryptorApp::AppDllUid() const
+    {
+    return KUidDRMEncryptor;
+    }
+
+   
+// ---------------------------------------------------------
+// CDRMEncryptorApp::CreateDocumentL()
+// Creates CDRMEncryptorDocument object
+// ---------------------------------------------------------
+//
+CApaDocument* CDRMEncryptorApp::CreateDocumentL()
+    {
+    return CDRMEncryptorDocument::NewL( *this );
+    }
+
+#include <eikstart.h>
+
+LOCAL_C CApaApplication* NewApplication()
+    {
+    return new CDRMEncryptorApp;
+    }
+
+// ---------------------------------------------------------
+// E32Main()
+//  Main startup entry point
+// Returns: KErrNone
+// ---------------------------------------------------------
+//
+GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication(NewApplication);
+    }
+
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DRMEncryptorAppUi.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,257 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 FILES
+#include "DRMEncryptorAppUi.h"
+#include "DRMEncryptorContainer.h" 
+#include "DRMEncryptor.hrh"
+#include "Performance.h"
+#include "DRMPlayServerTest.h"
+
+#include <avkon.hrh>
+#include <aknnotewrappers.h> 
+
+extern TUint EncryptL(TUint& aEncryptedCount, TUint& aRightsCount, TUint& aMessagesProcessed);
+extern TUint KeyStorage();
+extern void DeleteRdbL();
+extern void GetDrmClockL();
+extern void SetDrmClockL();
+extern TUint Bb5KeyStorage();
+extern void DeleteWmDrmRdbL();
+extern void BackupWmDrmDbL();
+extern void RestoreWmDrmDbL();
+
+
+// ================= MEMBER FUNCTIONS =======================
+//
+// ----------------------------------------------------------
+// CDRMEncryptorAppUi::ConstructL()
+// ?implementation_description
+// ----------------------------------------------------------
+//
+void CDRMEncryptorAppUi::ConstructL()
+    {
+    BaseConstructL();
+    iAppContainer = new( ELeave ) CDRMEncryptorContainer;
+    iAppContainer->SetMopParent( this );
+    iAppContainer->ConstructL( ClientRect() );
+    AddToStackL( iAppContainer );
+    }
+
+// ----------------------------------------------------
+// CDRMEncryptorAppUi::~CDRMEncryptorAppUi()
+// Destructor
+// Frees reserved resources
+// ----------------------------------------------------
+//
+CDRMEncryptorAppUi::~CDRMEncryptorAppUi()
+    {
+    if ( iAppContainer )
+        {
+        RemoveFromStack( iAppContainer );
+        delete iAppContainer;
+        }
+   }
+
+// ----------------------------------------------------
+// CDRMEncryptorAppUi::HandleCommandL( TInt aCommand )
+// ?implementation_description
+// ----------------------------------------------------
+//
+void CDRMEncryptorAppUi::HandleCommandL( TInt aCommand )
+    {
+    TUint result = 0;
+    TUint aEncryptedCount = 0;
+    TUint aRightsCount = 0;
+    TUint aMessagesProcessed = 0;
+    TBuf<128> buffer;
+            
+    switch ( aCommand )
+        {
+        case EAknSoftkeyExit:
+        case EAknSoftkeyBack:
+        case EEikCmdExit:
+            {
+            Exit();
+            break;
+            }
+        case EDrmEncryptorUICommand1:
+            {
+
+            result = EncryptL(aEncryptedCount, aRightsCount, aMessagesProcessed);
+
+            buffer.Append(_L("Encryption done\n"));
+            if(result < 1) 
+            {
+                buffer.Append(_L("No files found"));
+            }
+            if(aMessagesProcessed != 0) 
+            {
+                buffer.AppendNum(aMessagesProcessed);
+                buffer.Append(_L(" messages processed\n"));
+            }
+            if(aRightsCount != 0) 
+            {
+                buffer.AppendNum(aRightsCount);
+                buffer.Append(_L(" rights objects processed\n"));
+            }
+            if(aMessagesProcessed != 0) 
+            {
+                buffer.AppendNum(aEncryptedCount);
+                buffer.Append(_L(" files encrypted\n"));
+            }
+            
+            CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+            informationNote->ExecuteLD(buffer);
+
+            break;
+            }
+        case EDrmEncryptorKeyCommand:
+            {
+            result = KeyStorage();
+
+            if(result < 1) 
+            {
+                buffer.Append(_L("No key files found"));
+            }
+            else 
+            {
+                buffer.Append(_L("Keys imported\n"));
+                buffer.AppendNum(result);
+                buffer.Append(_L(" keys imported"));
+            }
+            CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+            informationNote->ExecuteLD(buffer);
+            break;
+            }
+            case EDrmEncryptorDeleteCommand:
+            {
+                DeleteRdbL();
+                CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+                informationNote->ExecuteLD(_L("Database deleted"));
+                break;
+            }
+            case EDrmTimeCommand:
+            {
+                GetDrmClockL();
+                break;
+            }
+            case ESetDrmTimeCommand:
+            {
+                SetDrmClockL();
+                break;
+            }
+            case EDrmBb5KeyTestCommand:
+            {
+                result = Bb5KeyStorage();
+
+            if(result != KErrNone) 
+            {
+                buffer.Append(_L("No CMLA keys available"));
+                buffer.AppendNum(result);
+
+            }
+            else 
+            {
+                buffer.Append(_L(" CMLA data OK! \n"));
+                buffer.AppendNum(result);
+                buffer.Append(_L(" \n Check log for Root."));
+            }
+            CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+            informationNote->ExecuteLD(buffer);
+            break;
+            }
+            case EDRMPlayServerCommand:
+            {
+                CDRMPlayServerTest* test = CDRMPlayServerTest::NewLC();
+                TInt error = test->ExecutePlayServerTest();
+                CleanupStack::PopAndDestroy( test );
+                if ( error == KErrCANoRights )
+                    {
+                    buffer.Append(_L("Test succeeded\n"));
+                    buffer.Append(_L("DRMPlayServer can't be used with WMDRM"));
+                    }
+                else
+                    {
+                    buffer.Append(_L("Test failed with error code: "));
+                    buffer.AppendNum(error);
+                    }
+                CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+                informationNote->ExecuteLD(buffer);
+                break;
+            }
+            case EDrmEncryptorDeleteWmDrmCommand:
+            {
+                DeleteWmDrmRdbL();
+                CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+                informationNote->ExecuteLD(_L("WmDrm Rights Deleted"));
+                break;
+            }
+            case EDrmEncryptorBackupWmDrmCommand:
+            {
+                TRAPD( error, BackupWmDrmDbL() );
+                if ( !error )
+                    {
+                    buffer.Append(_L("WmDrm License DB backup succeeded"));
+                    }
+                else
+                    {
+                    buffer.Append(_L("WmDrm License DB backup failed"));
+                    }
+                CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+                informationNote->ExecuteLD(buffer);
+                break;
+            }
+            case EDrmEncryptorRestoreWmDrmCommand:
+            {
+                TRAPD( error, RestoreWmDrmDbL() );
+                if ( !error )
+                    {
+                    buffer.Append(_L("WmDrm License DB restore succeeded"));
+                    }
+                else
+                    {
+                    buffer.Append(_L("WmDrm License DB restore failed"));
+                    }
+                CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+                informationNote->ExecuteLD(buffer);
+                break;
+            }            
+        default:
+            TestPerformanceL(aCommand);
+                        
+            buffer.Append(_L("Performance test done\n"));
+            buffer.Append(_L("See results from \nc:\\logs\\performance.log"));
+            
+            CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+            informationNote->ExecuteLD(buffer);
+            
+            break;
+        }
+    }
+
+
+TBool CDRMEncryptorAppUi::ProcessCommandParametersL(
+    TApaCommand /*aCommand*/,
+    TFileName& /*aDocumentName*/,
+    const TDesC8& /*aTail*/)
+    {
+    return EFalse;
+    }
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DRMEncryptorContainer.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,444 @@
+/*
+* Copyright (c) 2002-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 FILES
+
+#include <eiksbfrm.h>
+#include <eikscrlb.h>
+#include <eikrted.h>
+#include <txtrich.h>
+#include <barsread.h>
+#include <eikenv.h>
+#include <aknenv.h>
+#include <AknUtils.h>
+#include <aknconsts.h>
+#include <txtfrmat.h>
+#include <AknBidiTextUtils.h>
+
+#include <DRMEncryptor.rsg>
+#include "DRMEncryptorContainer.h"
+#include "DRMEncryptorImage.h"
+#include "DRMEncryptor.hrh"
+
+// CONSTANTS
+
+_LIT( KDRMEncryptorPanicCategory, "DRMEncryptor" );
+
+enum TDRMEncryptorPanic
+    {
+    EDRMEncryptorNotSupported = 0
+    };
+
+// constructors
+
+CDRMEncryptorContainer::CDRMEncryptorContainer()
+    {
+    }
+
+void CDRMEncryptorContainer::ConstructL( const TRect& aRect )
+    {
+    CreateWindowL();
+
+    // In case of APAC layout, use APAC font
+    TAknLayoutId layoutId;
+    iAvkonEnv->GetCurrentLayoutId( layoutId );
+
+    if ( layoutId == EAknLayoutIdAPAC )
+        {
+        iFont = ApacPlain12();
+        }
+    else
+        {
+        iFont = LatinPlain12();
+        }
+
+    // Calculate various text positioning parameters
+    iBaseLineDelta = iFont->HeightInPixels() * 4 / 3;
+
+    TInt mainPaneWidth( aRect.iBr.iX - aRect.iTl.iX );
+    TInt mainPaneHeight( aRect.iBr.iY - aRect.iTl.iY );
+    // Line width is 87% of client rect, horizontal margins 13%
+    iLineWidth = mainPaneWidth * 87 / 100;
+
+    iTopBaseLineX = ( mainPaneWidth - iLineWidth ) / 2;
+
+    // top margin is 6.5% of the client rect
+    TInt topMargin = mainPaneHeight * 65 / 1000;
+    iTopBaseLineY = topMargin + iFont->AscentInPixels();
+
+    // minimum bottom margin is 3% of the client rect
+    TInt bottomMargin = mainPaneHeight * 3 / 100;
+    iLinesPerScreen =
+        ( mainPaneHeight - topMargin - bottomMargin ) / iBaseLineDelta;
+
+    iTextAlign = CGraphicsContext::ELeft;
+
+    // Every text line on screen is one entry in this array
+    iText = new( ELeave ) CArrayPtrFlat<HBufC>( 20 );
+    // Every image on screen is one entry in this array
+    iImages = new( ELeave ) CArrayPtrFlat<CDRMEncryptorImage>( 1 );
+    // This array contains indices for lines that start the subsequent
+    // screens, for custom scrolling
+    iScreenStarts = new( ELeave ) CArrayFixFlat<TInt>( 5 );
+    // Initialisation: first screen starts at line 0.
+    iScreenStarts->AppendL( 0 );
+
+    // Read text and image items to be shown on the screen from a resource file.
+
+    // real resource
+    TResourceReader reader;
+    iEikonEnv->CreateResourceReaderLC( reader, R_DRMENCRYPTOR_MAIN_TEXT );
+
+    TInt numItems( reader.ReadInt16() );
+
+    for ( TInt i = 0 ; i < numItems ; i++ )
+        {
+        TInt type = reader.ReadInt8();
+
+        if ( type == EDRMEncryptorTextItem )
+            {
+            HBufC* text = iEikonEnv->AllocReadResourceLC( reader.ReadInt32() );
+    SetTextL( *text );
+
+
+            CleanupStack::PopAndDestroy(); // text
+            }
+        else if ( type == EDRMEncryptorImageItem )
+            {
+            TPtrC bitmapFile = reader.ReadTPtrC();
+            TInt bitmapId = reader.ReadInt16();
+            SetImageL( bitmapFile, bitmapId );
+            }
+        else
+            {
+            User::Panic( KDRMEncryptorPanicCategory, EDRMEncryptorNotSupported );
+            }
+        }
+
+    CleanupStack::PopAndDestroy(); // reader
+
+    UpdateScrollIndicatorL();
+    SetRect( aRect );
+    ActivateL();
+    }
+
+// destructor
+
+CDRMEncryptorContainer::~CDRMEncryptorContainer()
+    {
+    delete iSBFrame;
+    delete iScreenStarts;
+
+    if ( iText )
+        {
+        iText->ResetAndDestroy();
+        delete iText;
+        }
+
+    if ( iImages )
+        {
+        iImages->ResetAndDestroy();
+        delete iImages;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorContainer::Draw()
+// -----------------------------------------------------------------------------
+
+void CDRMEncryptorContainer::Draw( const TRect& aRect ) const
+    {
+    CWindowGc& gc = SystemGc();
+
+    //  clear the area
+
+    gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
+    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    gc.Clear( aRect );
+
+    // draw text
+    gc.UseFont( iFont );
+
+    // index of the first line on the screen in the text array
+    TInt firstLine( (*iScreenStarts)[ iCurrentScreen ] );
+    // index of the last line on the screen in the text array
+    TInt lastLine( firstLine + iLinesPerScreen - 1 );
+
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    TPoint position( iTopBaseLineX, iTopBaseLineY );
+    TPoint topLeft;
+    TSize rectSize( iLineWidth, iBaseLineDelta +iFont->DescentInPixels() );
+
+    for ( TInt index = firstLine ;
+          index < iText->Count() && index <= lastLine ;
+          index++, position.iY += iBaseLineDelta )
+        {
+        HBufC* text = (*iText)[ index ];
+
+        if ( text )
+            {
+            topLeft = TPoint( position.iX, position.iY-iBaseLineDelta );
+            gc.DrawText( *text,
+                         TRect( topLeft, rectSize ),
+                         iBaseLineDelta,
+                         iTextAlign );
+            }
+        }
+
+    gc.DiscardFont();
+
+    // draw images
+
+    for ( TInt i = 0 ; i < iImages->Count() ; i++ )
+        {
+        CDRMEncryptorImage* image = (*iImages)[ i ];
+
+        // If part of the image resides in visible lines, draw it.
+        if ( image->StartLine() <= lastLine && image->EndLine() >= firstLine )
+            {
+            position.SetXY( iTopBaseLineX, iTopBaseLineY );
+            position.iY += ( image->StartLine() - firstLine ) * iBaseLineDelta;
+
+            position.iY -= iBaseLineDelta - iFont->DescentInPixels();
+            // Now iY is the top line of rectangle where the picture is
+            // centered in.
+            position.iY += ( (image->Lines()+1) * iBaseLineDelta -
+                             iFont->HeightInPixels() -
+                             image->HeightInPixels() ) / 2;
+
+            // If text is right-aligned, also align images to the right.
+
+            if ( iTextAlign == CGraphicsContext::ERight )
+                {
+                position.iX += ( iLineWidth - image->WidthInPixels() );
+                }
+
+            gc.BitBlt( position, image->Bitmap(), aRect );
+            }
+        }
+
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorContainer::ActivateL()
+// -----------------------------------------------------------------------------
+
+void CDRMEncryptorContainer::ActivateL()
+    {
+    CCoeControl::ActivateL();
+    UpdateScrollIndicatorL();
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorContainer::SetTextL()
+// -----------------------------------------------------------------------------
+
+void CDRMEncryptorContainer::SetTextL( const TDesC& aText )
+    {
+    CArrayFix<TPtrC>* wrappedArray =
+        new( ELeave ) CArrayFixFlat<TPtrC>( 10 );
+
+    CleanupStack::PushL( wrappedArray );
+
+    HBufC* dataToDestroy =
+        AknBidiTextUtils::ConvertToVisualAndWrapToArrayL(
+            aText, iLineWidth, *iFont, *wrappedArray
+        );
+
+    TInt numLines( wrappedArray->Count() );
+    for ( TInt i = 0 ; i < numLines ; i++ )
+        {
+        HBufC* line = (*wrappedArray)[i].AllocLC();
+
+        if(!line->Length())
+            {
+            iText->AppendL( NULL );
+
+            CleanupStack::PopAndDestroy();  // line
+            }
+        else
+            {
+            iText->AppendL( line );
+            CleanupStack::Pop();  // line
+            }
+        }
+    iText->AppendL( NULL );
+
+    // If the last char was newline, add one extra, since
+    // wrapping automatically removes it.
+    if ( aText[ aText.Length() - 1 ] == '\n' )
+        {
+        iText->AppendL( NULL );
+        }
+
+    CleanupStack::PopAndDestroy(); // wrappedArray
+    delete dataToDestroy;
+
+    // update screen scrolling info array
+
+    TInt lastLine( iText->Count() - 1 );
+    TInt screenStart( (*iScreenStarts)[ iScreenStarts->Count() - 1 ] );
+
+    TBool firstNewScreenHandled( EFalse );
+
+    while ( lastLine >= screenStart + iLinesPerScreen )
+        {
+        if ( !firstNewScreenHandled && iDoNotShowLastLineAgain )
+            {
+            screenStart++;
+            firstNewScreenHandled = ETrue;
+            }
+
+        screenStart += iLinesPerScreen - 1;
+        iScreenStarts->AppendL( screenStart );
+        }
+
+    // if text, last line is shown again in next screen
+    iDoNotShowLastLineAgain = EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorContainer::SetImageL()
+// -----------------------------------------------------------------------------
+
+void CDRMEncryptorContainer::SetImageL( const TDesC& aFileName, TInt aBitmapId )
+    {
+    TInt firstLineOfImage( iText->Count() );
+
+    CDRMEncryptorImage* image =
+    CDRMEncryptorImage::NewLC( aFileName, aBitmapId, firstLineOfImage, iBaseLineDelta );
+
+    // new lines to make room for the picture
+
+    for ( TInt i = 0 ; i < image->Lines() ; i++ )
+        {
+        iText->AppendL( NULL );
+        }
+
+    iImages->AppendL( image );
+    CleanupStack::Pop(); // image
+
+    // update screen scrolling info array
+
+    TInt lastLineOfImage( iText->Count() - 1 );
+    TInt screenStart( (*iScreenStarts)[ iScreenStarts->Count() - 1 ] );
+
+    TBool firstNewScreenHandled( EFalse );
+
+    // If the image was not fully shown in the first screen,
+    // start the next screen with the image.
+
+    if ( firstLineOfImage < screenStart + iLinesPerScreen &&
+         lastLineOfImage >= screenStart + iLinesPerScreen )
+        {
+        screenStart = firstLineOfImage;
+        iScreenStarts->AppendL( screenStart );
+        firstNewScreenHandled = ETrue;
+        }
+
+    while ( lastLineOfImage >= screenStart + iLinesPerScreen )
+        {
+        if ( !firstNewScreenHandled && iDoNotShowLastLineAgain )
+            {
+            screenStart++;
+            firstNewScreenHandled = ETrue;
+            }
+
+        screenStart += iLinesPerScreen - 1;
+        iScreenStarts->AppendL( screenStart );
+        }
+
+    if ( lastLineOfImage == screenStart + iLinesPerScreen - 1 )
+        {
+        iDoNotShowLastLineAgain = ETrue;
+        }
+    else
+        {
+        iDoNotShowLastLineAgain = EFalse;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorContainer::OfferKeyEventL()
+// -----------------------------------------------------------------------------
+
+TKeyResponse CDRMEncryptorContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent,
+                                              TEventCode aType )
+    {
+    if ( aType == EEventKey && iScreenStarts->Count() > 1 )
+        {
+        switch ( aKeyEvent.iCode )
+            {
+            case EKeyUpArrow:
+                if ( iCurrentScreen > 0 )
+                    {
+                    iCurrentScreen--;
+                    DrawNow();
+                    UpdateScrollIndicatorL();
+                    }
+                break;
+
+            case EKeyDownArrow:
+                if ( iCurrentScreen < iScreenStarts->Count() - 1 )
+                    {
+                    iCurrentScreen++;
+                    DrawNow();
+                    UpdateScrollIndicatorL();
+                    }
+                break;
+
+            default:
+                break;
+            }
+        }
+
+    return EKeyWasConsumed;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorContainer::UpdateScrollIndicatorL()
+// -----------------------------------------------------------------------------
+
+void CDRMEncryptorContainer::UpdateScrollIndicatorL()
+    {
+    if ( iScreenStarts->Count() <= 1 )
+        {
+        return;
+        }
+
+    if ( !iSBFrame )
+        {
+        iSBFrame = new( ELeave ) CEikScrollBarFrame( this, NULL, ETrue );
+        iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
+                                           CEikScrollBarFrame::EAuto );
+        iSBFrame->SetTypeOfVScrollBar( CEikScrollBarFrame::EArrowHead );
+        }
+
+    TEikScrollBarModel hSbarModel;
+    TEikScrollBarModel vSbarModel;
+    vSbarModel.iThumbPosition = iCurrentScreen;
+    vSbarModel.iScrollSpan = iScreenStarts->Count();
+    vSbarModel.iThumbSpan = 1;
+
+    TEikScrollBarFrameLayout layout;
+    TRect rect( Rect() );
+    iSBFrame->TileL( &hSbarModel, &vSbarModel, rect, rect, layout );
+    iSBFrame->SetVFocusPosToThumbPos( vSbarModel.iThumbPosition );
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DRMEncryptorDocument.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 FILES
+#include "DRMEncryptorDocument.h"
+#include "DRMEncryptorAppUi.h"
+#include "DrmKeyStorage.h"
+
+extern TUint KeyStorageFromZipL(const TDesC&, RFs&);
+
+// ================= MEMBER FUNCTIONS =======================
+
+// constructor
+CDRMEncryptorDocument::CDRMEncryptorDocument( CEikApplication& aApp ) : CAknDocument( aApp )
+    {
+    }
+
+// destructor
+CDRMEncryptorDocument::~CDRMEncryptorDocument()
+    {
+    }
+
+// Two-phased constructor.
+CDRMEncryptorDocument* CDRMEncryptorDocument::NewL( CEikApplication& aApp )
+    {
+    return new( ELeave ) CDRMEncryptorDocument( aApp );
+    }
+    
+CFileStore* CDRMEncryptorDocument::OpenFileL(TBool /*aDoOpen*/, const TDesC& aFileName, RFs& aFs)
+    {
+    KeyStorageFromZipL(aFileName, aFs);
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorDocument::CreateAppUiL()
+// constructs CDRMEncryptorAppUi
+// -----------------------------------------------------------------------------
+//
+CEikAppUi* CDRMEncryptorDocument::CreateAppUiL()
+    {
+    return new( ELeave ) CDRMEncryptorAppUi;
+    }
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DRMEncryptorImage.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 FILES
+#include <fbs.h>
+#include "DRMEncryptorImage.h"
+
+// ================= MEMBER FUNCTIONS ==========================================
+
+CDRMEncryptorImage::CDRMEncryptorImage()
+    {
+    }
+
+CDRMEncryptorImage::~CDRMEncryptorImage()
+    {
+    delete iBitmap;
+    }
+
+CDRMEncryptorImage* CDRMEncryptorImage::NewLC( const TDesC& aFileName,
+                                 TInt aBitmapId,
+                                 TInt aStartLine,
+                                 TInt aBaseLineDelta )
+    {
+    CDRMEncryptorImage* self = new( ELeave ) CDRMEncryptorImage();
+    CleanupStack::PushL( self );
+
+    self->iBitmap = new( ELeave ) CFbsBitmap;
+    self->iBitmap->Load( aFileName, aBitmapId );
+
+    self->iStartLine = aStartLine;
+
+    // enough lines so that image and margins fit in them.
+
+    TInt lines( ( self->HeightInPixels() + 
+                  KImageTopMargin + 
+                  KImageBottomMargin +
+                  aBaseLineDelta - 1 ) / aBaseLineDelta );
+
+    self->iEndLine = aStartLine + lines - 1;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorImage::HeightInPixels()
+// -----------------------------------------------------------------------------
+
+TInt CDRMEncryptorImage::HeightInPixels() const
+    {
+    return iBitmap->SizeInPixels().iHeight;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorImage::WidthInPixels()
+// -----------------------------------------------------------------------------
+
+TInt CDRMEncryptorImage::WidthInPixels() const
+    {
+    return iBitmap->SizeInPixels().iWidth;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorImage::StartLine()
+// -----------------------------------------------------------------------------
+
+TInt CDRMEncryptorImage::StartLine() const
+    {
+    return iStartLine;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorImage::EndLine()
+// -----------------------------------------------------------------------------
+
+TInt CDRMEncryptorImage::EndLine() const
+    {
+    return iEndLine;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorImage::Lines()
+// -----------------------------------------------------------------------------
+
+TInt CDRMEncryptorImage::Lines() const
+    {
+    return iEndLine - iStartLine + 1;
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMEncryptorImage::Bitmap()
+// -----------------------------------------------------------------------------
+
+const CFbsBitmap* CDRMEncryptorImage::Bitmap() const
+    {
+    return iBitmap;
+    }
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DRMPlayServerTest.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or 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 <DrmAudioSamplePlayer.h>
+
+#include "DRMPlayServerTest.h"
+
+#ifdef __WINS__
+_LIT( KTestFile, "c:\\data\\drm\\test.wma" );
+#else
+_LIT( KTestFile, "e:\\drm\\test.wma" );
+#endif
+
+// ================= MEMBER FUNCTIONS ==========================================
+
+CDRMPlayServerTest::CDRMPlayServerTest()
+    {
+    }
+
+
+void CDRMPlayServerTest::ConstructL()
+    {
+    iWait = new (ELeave) CActiveSchedulerWait();
+    iDrmPlayerUtility = CDrmPlayerUtility::NewL( *this, 
+                                                 0, 
+                                                 EMdaPriorityPreferenceNone );
+    }
+
+CDRMPlayServerTest::~CDRMPlayServerTest()
+    {
+    delete iWait;
+    delete iDrmPlayerUtility;
+    }
+
+CDRMPlayServerTest* CDRMPlayServerTest::NewLC()
+    {
+    CDRMPlayServerTest* self = new( ELeave ) CDRMPlayServerTest();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+TInt CDRMPlayServerTest::ExecutePlayServerTest()
+    {
+    iError = KErrNone;
+    TRAP( iError, iDrmPlayerUtility->OpenFileL( KTestFile ) );
+    if ( iError )
+        {
+        return iError;
+        }
+    iWait->Start();
+    return iError;
+    }
+
+void CDRMPlayServerTest::MdapcInitComplete( 
+    TInt aError, 
+    const TTimeIntervalMicroSeconds& /*aDuration*/ )
+    {
+    iWait->AsyncStop();
+    iError = aError;
+    }
+
+void CDRMPlayServerTest::MdapcPlayComplete( TInt aError )
+    {
+    iWait->AsyncStop();
+    iError = aError;
+    }
+
+// End of File  
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DrmBb5KeyStorage.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,239 @@
+/*
+* 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 "Eclipse Public License v1.0"
+* which accompanies 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 FILES
+#include <e32std.h>
+#include <f32file.h>
+#include <flogger.h>
+#include <x509cert.h>
+#include <symmetric.h>
+#include <asymmetric.h>
+
+#ifdef RD_MULTIPLE_DRIVE
+#include <driveinfo.h>
+#endif
+
+#include "DrmKeyStorage.h"
+
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// Test logging macros
+
+#ifdef RD_MULTIPLE_DRIVE
+_LIT(KFullLogDir, "%c:\\logs\\drm\\");
+#else
+_LIT(KFullLogDir, "c:\\logs\\drm\\");
+#endif
+
+_LIT(KLogDir, "drm");
+_LIT(KLogName, "DrmEncryptorBb5KeyStorage.log");
+
+#define TEST_STEP(string) \
+    GBb5Log.WriteFormat(_L("Next Test: %S"), &string);
+
+#define CHECK(condition) \
+    if (!condition) GBb5Log.WriteFormat(_L("FAIL: line %d"), __LINE__);
+
+// MODULE DATA STRUCTURES
+
+RFs GBb5Fs;
+RFileLogger GBb5Log;
+
+// STATIC TEST CONTENT AND RIGHTS OBJECTS
+
+// LOCAL FUNCTION PROTOTYPES
+
+// ==================== LOCAL FUNCTIONS ====================
+
+HBufC8* I2OSPL(
+    RInteger& aInt)
+    {
+    HBufC8* r = aInt.BufferLC();
+    CleanupStack::Pop(r);
+    return r;
+    }
+
+RInteger OS2IPL(
+    const TDesC8& aOctetStream)
+    {
+    RInteger r;
+    TInt i;
+
+    r = RInteger::NewL(0);
+    for (i = 0; i < aOctetStream.Length(); i++)
+        {
+        r *= 256;
+        r += aOctetStream[i];
+        }
+    return r;
+    }
+
+HBufC8* RsaEncryptL(
+    CRSAPublicKey* aKey,
+    const TDesC8& aInput)
+    {
+    RInteger result;
+    RInteger input;
+    HBufC8* output;
+
+    input = OS2IPL(aInput);
+    CleanupClosePushL(input);
+    result = TInteger::ModularExponentiateL(input, aKey->E(), aKey->N());
+    CleanupClosePushL(result);
+    output = I2OSPL(result);
+    CleanupStack::PopAndDestroy(2); // result, input
+    return output;
+    }
+
+LOCAL_C TUint MDrmKeyStorage_GetCertificateChainL()
+    {
+    MDrmKeyStorage* storage = NULL;
+    RPointerArray<HBufC8> chain;
+    TInt i;
+    TUint result = NULL;
+
+    GBb5Log.WriteFormat(_L("MDrmKeyStorage_GetCertificateChainL -> DrmKeyStorageNewL"));
+    TRAPD(err,storage = DrmKeyStorageNewL());
+    if (err != KErrNone)
+        {
+            result = err;
+        }
+
+    GBb5Log.WriteFormat(_L("MDrmKeyStorage_GetCertificateChainL -> SelectDefaultRootL"));
+    storage->SelectDefaultRootL();
+
+    GBb5Log.WriteFormat(_L("MDrmKeyStorage_GetCertificateChainL -> GetCertificateChainL"));
+    storage->GetCertificateChainL(chain);
+
+    for (i = 0; i < chain.Count(); i++)
+        {
+        GBb5Log.WriteFormat(_L("Certificate %d:"), i);
+        GBb5Log.HexDump(_S(""), _S(""), chain[i]->Ptr(), chain[i]->Length());
+        }
+    chain.ResetAndDestroy();
+    chain.Close();
+    delete storage;
+    return result;
+    }
+
+LOCAL_C TUint MDrmKeyStorage_DecryptL()
+    {
+    MDrmKeyStorage* storage = NULL;
+    RPointerArray<HBufC8> chain;
+    CRSAPublicKey* key = NULL;
+    CX509Certificate* cert = NULL;
+    TX509KeyFactory factory;
+    TBuf8<128> data;
+    HBufC8* encData;
+    HBufC8* decData;
+    TUint result = KErrNone;
+
+
+    GBb5Log.WriteFormat(_L("MDrmKeyStorage_Decrypt"));
+    storage = DrmKeyStorageNewL();
+    storage->SelectDefaultRootL();
+    storage->GetCertificateChainL(chain);
+    cert = CX509Certificate::NewL(*chain[0]);
+    chain.ResetAndDestroy();
+    chain.Close();
+    key = factory.RSAPublicKeyL(cert->PublicKey().KeyData());
+    data.SetLength(128);
+    data.Fill(1);
+    GBb5Log.WriteFormat(_L("data:"));
+    GBb5Log.HexDump(_S(""), _S(""), &data[0], sizeof(data));
+
+    encData = RsaEncryptL(key, data);
+    GBb5Log.WriteFormat(_L("encrypted data:"));
+    GBb5Log.HexDump(_S(""), _S(""), encData->Ptr(), encData->Length());
+
+    decData = storage->RsaDecryptL(*encData);
+    GBb5Log.WriteFormat(_L("decrypted data :"));
+    GBb5Log.HexDump(_S(""), _S(""), decData->Ptr(), decData->Length());
+
+    delete cert;
+    delete key;
+    delete storage;
+    return result;
+    }
+
+// ==================== TEST FUNCTIONS =====================
+
+
+
+TUint Bb5KeyStorage()
+    {
+    TUint result = 0;
+    TInt catchy = 0;
+    result = GBb5Fs.Connect();
+    if( result != KErrNone )
+        {
+        return result;
+        }
+
+#ifndef RD_MULTIPLE_DRIVE
+
+    GBb5Fs.MkDirAll(KFullLogDir);
+
+#else //RD_MULTIPLE_DRIVE
+
+    TInt driveNumber( -1 );
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultSystem, driveNumber );
+    GBb5Fs.DriveToChar( driveNumber, driveLetter );
+
+    TFileName fullLogDir;
+    fullLogDir.Format( KFullLogDir, (TUint)driveLetter );
+
+    GBb5Fs.MkDirAll(fullLogDir);
+
+#endif
+
+    result = GBb5Log.Connect();
+    if( result != KErrNone )
+        {
+        GBb5Fs.Close();
+        return result;
+        }
+    GBb5Log.CreateLog(KLogDir, KLogName, EFileLoggingModeOverwrite);
+    GBb5Log.Write(_L("Start %D"));
+
+    TRAPD(err,result = MDrmKeyStorage_GetCertificateChainL());
+    CHECK(err == KErrNone);
+    if (err ==KErrNone)
+        {
+        TRAP(catchy, result = MDrmKeyStorage_DecryptL());
+        if( catchy )
+            {
+            result = catchy;
+            }
+        }
+    CHECK(err == KErrNone);
+    GBb5Log.CloseLog();
+    GBb5Fs.Close();
+    return result;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DrmEncryptor.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,577 @@
+/*
+* 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 "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  DRM Encryption tool for DRM5
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <e32base.h>
+#include <barsc.h>
+#include <barsread.h>
+#include <apmstd.h>
+#include <e32test.h>
+#include <s32strm.h>
+#include <s32file.h>
+#include <bacline.h>
+#include <e32math.h>
+
+
+#ifdef RD_MULTIPLE_DRIVE
+#include <driveinfo.h>
+#endif
+
+#include <DRMRights.h>
+#include <DcfCommon.h>
+#include <DRMMessageParser.h>
+#include <Oma1DcfCreator.h>
+#include <DRMRightsClient.h>
+#include "DRMClockClient.h"
+
+#include <DcfRep.h>
+#include <DcfEntry.h>
+
+#include <DRMEncryptor.rsg>
+
+#include <avkon.hrh>
+#include <aknnotewrappers.h>
+
+#include <wmdrmagent.h>
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+_LIT( KWmdrmBd, "c:\\private\\10281e17\\[10282F1B]hds.db" );
+_LIT( KWmdrmBdBackup, "e:\\[10282F1B]hds.db" );
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// ==================== LOCAL FUNCTIONS ====================
+
+LOCAL_C void ReadFileL(HBufC8*& aContent, const TDesC& aName, RFs& aFs)
+    {
+    TInt size = 0;
+    RFile file;
+    User::LeaveIfError(file.Open(aFs, aName, EFileRead));
+    User::LeaveIfError(file.Size(size));
+    aContent = HBufC8::NewLC(size);
+    TPtr8 ptr(aContent->Des());
+    User::LeaveIfError(file.Read(ptr, size));
+    CleanupStack::Pop(); //aContent
+    }
+
+// ---------------------------------------------------------
+// UpdateDCFRepositoryL()
+// Update saved file to DCFRepository
+// ---------------------------------------------------------
+//
+LOCAL_C void UpdateDCFRepositoryL( const TDesC& aFileName)
+    {
+    CDcfEntry* dcf( NULL );
+    CDcfRep* dcfRep( NULL );
+
+    dcf = CDcfEntry::NewL();
+    CleanupStack::PushL( dcf );
+
+    dcfRep = CDcfRep::NewL();
+    CleanupStack::PushL( dcfRep );
+
+    dcf->SetLocationL( aFileName, 0 );
+    dcfRep->UpdateL( dcf );
+
+    CleanupStack::PopAndDestroy(2); // dcf, dcfRep
+    }
+
+
+
+
+// ==================== TEST FUNCTIONS =====================
+
+const TInt KBufferSize = 20000;
+
+void ProcessMessageL(const TDesC& aFile, const TDesC& aOutput)
+    {
+    CDRMMessageParser* c = NULL;
+    HBufC8* d = NULL;
+    RFs fs;
+    TPtr8 inRead(NULL, 0);
+    TInt error = 1;
+    __UHEAP_MARK;
+
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    c = CDRMMessageParser::NewL();
+    CleanupStack::PushL(c);
+
+    d = HBufC8::NewLC( KBufferSize );
+
+    RFile input;
+    User::LeaveIfError(input.Open( fs, aFile, EFileRead ));
+    CleanupClosePushL( input );
+
+    RFileWriteStream output;
+    output.Replace( fs, aOutput, EFileWrite );
+    CleanupClosePushL( output );
+
+    c->InitializeMessageParserL( output );
+
+    while( error )
+        {
+        inRead.Set( const_cast<TUint8*>(d->Ptr()),0,KBufferSize);
+        error = input.Read( inRead );
+
+        if( error )
+            {
+            c->FinalizeMessageParserL();
+
+            User::Leave( error );
+            }
+        else
+            {
+            error = inRead.Length();
+            }
+
+        if( error )
+            {
+            c->ProcessMessageDataL(inRead);
+            }
+        }
+
+    c->FinalizeMessageParserL();
+
+
+    CleanupStack::PopAndDestroy( 5 ); // fs, c, d, input, output
+    UpdateDCFRepositoryL( aOutput );
+    __UHEAP_MARKEND;
+    }
+
+void ProcessRightsL(const TDesC& aFile)
+    {
+    CDRMMessageParser* c = NULL;
+    HBufC8* d = NULL;
+    RFs fs;
+    RPointerArray<CDRMRights> rights;
+
+    User::LeaveIfError(fs.Connect());
+    c = CDRMMessageParser::NewL();
+    ReadFileL(d, aFile, fs);
+    c->ProcessRightsObject(*d, rights);
+    rights.ResetAndDestroy();
+    delete d;
+    delete c;
+    fs.Close();
+    }
+
+void EncryptFileL(const TDesC& aFile, TDesC& aOutput, TInt aMultiplier)
+    {
+    COma1DcfCreator* c = NULL;
+    CDRMRights* rights = NULL;
+    TBuf8<64> mime;
+    RFs fs;
+    TFileName aDcfFile;
+    TInt aOriginalFileNameLength(aOutput.Length() - 4);
+
+    User::LeaveIfError(fs.Connect());
+    if (aFile.Right(3).CompareF(_L("amr")) == 0) //AMR
+        {
+        mime.Copy(_L8("audio/amr"));
+        }
+    else if (aFile.Right(3).CompareF(_L("awb")) == 0) //AMR-AWB
+        {
+        mime.Copy(_L8("audio/amr-wb"));
+        }
+    else if (aFile.Right(3).CompareF(_L("mp3")) == 0) //MP3
+        {
+        mime.Copy(_L8("audio/mpeg"));
+        }
+    else if (aFile.Right(3).CompareF(_L("mp4")) == 0) //MP4
+        {
+        mime.Copy(_L8("audio/mp4"));
+        }
+    else if (aFile.Right(3).CompareF(_L("m4a")) == 0) //M4A
+        {
+        mime.Copy(_L8("audio/mp4"));
+        }
+    else if (aFile.Right(3).CompareF(_L("3gp")) == 0) //3GPP
+        {
+        mime.Copy(_L8("audio/3gpp"));
+        }
+    else if (aFile.Right(3).CompareF(_L("3g2")) == 0) //3GPP2
+        {
+        mime.Copy(_L8("audio/3gpp2"));
+        }
+    else if (aFile.Right(3).CompareF(_L("aac")) == 0) //AAC
+        {
+        mime.Copy(_L8("audio/aac"));
+        }
+    else if (aFile.Right(3).CompareF(_L("mid")) == 0) //MIDI
+        {
+        mime.Copy(_L8("audio/midi"));
+        }
+    else if (aFile.Right(5).CompareF(_L(".spmid")) == 0) //SP-MIDI
+        {
+        mime.Copy(_L8("audio/sp-midi"));
+        }
+    else if (aFile.Right(3).CompareF(_L("rmf")) == 0) //RMF
+        {
+        mime.Copy(_L8("audio/rmf"));
+        }
+    else if (aFile.Right(4).CompareF(_L("mxmf")) == 0) //Mobile-XMF
+        {
+        mime.Copy(_L8("audio/mobile-xmf"));
+        }
+    else if (aFile.Right(3).CompareF(_L("wav")) == 0) //WAV
+        {
+        mime.Copy(_L8("audio/x-wav"));
+        }
+    else if (aFile.Right(3).CompareF(_L("gif")) == 0) // GIF
+        {
+        mime.Copy(_L8("image/gif"));
+        }
+    else if (aFile.Right(3).CompareF(_L("jpg")) == 0) // JPEG
+        {
+        mime.Copy(_L8("image/jpeg"));
+        }
+    else if (aFile.Right(3).CompareF(_L("txt")) == 0) // text
+        {
+        mime.Copy(_L8("text/plain"));
+        }
+    else if (aFile.Right(3).CompareF(_L("pip")) == 0) // PIP
+        {
+        mime.Copy(_L8("application/x-pip"));
+        }
+
+    aDcfFile.Append(aOutput);
+
+    for(TInt i = 0; i < aMultiplier ; ++i)
+        {
+        aDcfFile.Delete(aOriginalFileNameLength, aDcfFile.Length());
+        aDcfFile.Append(_L("-"));
+        aDcfFile.AppendNum(i);
+        aDcfFile.Append(_L(".dcf"));
+        c = COma1DcfCreator::NewL();
+        CleanupStack::PushL(c);
+        fs.Delete(aOutput);
+        c->EncryptFileL(aFile, aDcfFile, mime, rights);
+        UpdateDCFRepositoryL( aDcfFile );
+        delete rights;
+        CleanupStack::PopAndDestroy(); // c
+        }
+    fs.Close();
+
+    }
+
+TUint EncryptL(TUint& aEncryptedCount, TUint& aRightsCount, TUint& aMessagesProcessed)
+    {
+    TInt i;
+    CDir* files;
+    TFileName input;
+    TFileName output;
+    TUint inputNameSize = 0;
+    TUint outputNameSize = 0;
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    TInt aMultiplier(1);
+
+
+#ifdef __WINS__
+    input.Append(_L("c:\\data\\DRM\\"));
+    output.Append(_L("c:\\data\\Others\\"));
+#else
+#ifndef RD_MULTIPLE_DRIVE
+
+    input.Append(_L("e:\\DRM\\"));
+    output.Append(_L("e:\\Others\\"));
+
+#else //RD_MULTIPLE_DRIVE
+
+    TInt driveNumber( -1 );
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, driveNumber );
+    fs.DriveToChar( driveNumber, driveLetter );
+
+    _LIT( KdrmDir, "%c:\\DRM\\" );
+    input.Format( KdrmDir, (TUint)driveLetter );
+
+    _LIT( KothersDir, "%c:\\Others\\" );
+    output.Format( KothersDir, (TUint)driveLetter );
+
+#endif
+#endif
+
+    inputNameSize = input.Length();
+    outputNameSize = output.Length();
+
+
+    fs.MkDir(input);
+    fs.MkDir(output);
+
+    fs.GetDir(input, KEntryAttNormal, ESortNone, files);
+    for (i = 0; i < files->Count(); i++)
+        {
+        input.Append((*files)[i].iName);
+
+        output.Append((*files)[i].iName);
+
+        if (input.Right(2).CompareF(_L("dm")) == 0)
+            {
+
+            for(TInt ii = 0; ii < aMultiplier ; ++ii)
+                {
+                output.Delete(outputNameSize +(*files)[i].iName.Length() , output.Length()-1);
+                output.Append(_L("-"));
+                output.AppendNum(ii);
+                output.Append(_L(".dcf"));
+                ProcessMessageL(input, output);
+                ++aMessagesProcessed;
+                }
+            }
+        else if (input.Right(3).CompareF(_L("oro")) == 0 ||
+                input.Right(3).CompareF(_L("drc")) == 0 ||
+                input.Right(2).CompareF(_L("ro")) == 0 ||
+                input.Right(2).CompareF(_L("dr")) == 0 )
+            {
+            for (TInt iii = 0; iii < aMultiplier; ++iii)
+                {
+                ProcessRightsL(input);
+                ++aRightsCount;
+                }
+            }
+        else if (input.Right(3).CompareF(_L("dcf")) != 0)
+            {
+            output.Append(_L(".dcf"));
+            EncryptFileL(input, output, aMultiplier);
+            ++aEncryptedCount;
+            }
+
+        //restore paths
+        input.Delete(inputNameSize, input.Length()-1);
+        output.Delete(outputNameSize, output.Length()-1);
+        }
+
+    fs.Close();
+
+    TRequestStatus status;
+    CDcfRep* rep = CDcfRep::NewL();
+    CleanupStack::PushL(rep);
+    rep->RefreshDcf(status);
+    User::WaitForRequest( status );
+    CleanupStack::PopAndDestroy( rep );
+
+    delete files;
+
+    return (aEncryptedCount*aMultiplier + aRightsCount + aMessagesProcessed);
+    }
+
+void DeleteRdbL()
+    {
+    RDRMRightsClient client;
+
+    User::LeaveIfError(client.Connect());
+    client.DeleteAll();
+    client.Close();
+    }
+
+
+
+
+// -----------------------------------------------------------------------------
+// GetCafDataL
+// -----------------------------------------------------------------------------
+//
+ContentAccess::CManager* GetCafDataL( TAgent& aAgent )
+    {
+    TPtr8 ptr(NULL, 0, 0);
+    RArray<TAgent> agents;
+    TRequestStatus status;
+    TInt i;
+
+    CleanupClosePushL( agents );
+    CManager* manager = CManager::NewLC();
+
+    manager->ListAgentsL( agents );
+
+    for (i = 0; i < agents.Count(); i++)
+        {
+        if (agents[i].Name().Compare(KWmDrmAgentName) == 0)
+            {
+            aAgent = agents[i];
+            break;
+            }
+        }
+    CleanupStack::Pop( manager );
+    CleanupStack::PopAndDestroy(); // agents
+    return manager;
+    }
+
+
+// -----------------------------------------------------------------------------
+// DeleteWmDrmRdbL
+//-----------------------------------------------------------------------------
+//
+
+void DeleteWmDrmRdbL()
+    {
+    // get the data part
+    ContentAccess::CManager* manager = NULL;
+    ContentAccess::TAgent agent;
+    TPtr8 ptr(NULL, 0, 0);
+    TPtrC8 ptr2;
+
+    // Find the caf agent and create manager
+    manager = GetCafDataL( agent );
+    CleanupStack::PushL( manager );
+
+    User::LeaveIfError(
+        manager->AgentSpecificCommand( agent,
+                                       (TInt)DRM::EWmDrmDeleteRights,
+                                       ptr2,
+                                       ptr) );
+    CleanupStack::PopAndDestroy( manager );
+    }
+
+
+
+void GetDrmClockL()
+    {
+    RDRMClockClient client;
+
+    TTime drmTime;
+    TDateTime date;
+    TInt aTimeZone;
+    DRMClock::ESecurityLevel secLevel = DRMClock::KInsecure;
+    TBuf< 80 > buf;
+
+
+
+    User::LeaveIfError( client.Connect() );
+
+    client.GetSecureTime(drmTime, aTimeZone, secLevel);
+
+    client.Close();
+
+    date = drmTime.DateTime();
+
+    if(secLevel == DRMClock::KSecure)
+        {
+        _LIT(KFormatTxt,"DRMClock Time:\n%d/%d/%d\n%d:%d:%d\nNitz available");
+        buf.Format( KFormatTxt,
+                date.Day()+1,
+                TInt(date.Month()+1),
+                date.Year(),
+                date.Hour(),
+                date.Minute(),
+                date.Second());
+        }
+    else
+        {
+        _LIT(KFormatTxt,"DRMClock Time:\n%d/%d/%d\n%d:%d:%d\nNitz unavailable");
+        buf.Format( KFormatTxt,
+                date.Day()+1,
+                TInt(date.Month()+1),
+                date.Year(),
+                date.Hour(),
+                date.Minute(),
+                date.Second());
+        }
+
+    CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+    informationNote->ExecuteLD(buf);
+
+
+    }
+
+void SetDrmClockL()
+    {
+    RDRMClockClient client;
+
+    TTime drmTime (_L("20000111:200600.000000"));
+    TTime aDate (_L("20040000:"));
+    TDateTime date;
+    TInt aTimeZone;
+    DRMClock::ESecurityLevel secLevel = DRMClock::KInsecure;
+
+    User::LeaveIfError(client.Connect());
+    CleanupClosePushL(client);
+
+    client.GetSecureTime(drmTime, aTimeZone, secLevel);
+
+    aDate = drmTime;
+
+    CAknMultiLineDataQueryDialog* dlg = CAknMultiLineDataQueryDialog::NewL(aDate, drmTime);
+    if ( dlg->ExecuteLD( R_DRM_TIME_QUERY ) )
+        {
+        TTime aTime = aDate.Int64() + drmTime.Int64();
+        client.UpdateSecureTime(aTime, aTimeZone);
+        CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+        informationNote->ExecuteLD(_L("DRM time changed"));
+        }
+    else
+        {
+        //User pressed cancel on confirmation screen
+        CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+        informationNote->ExecuteLD(_L("DRM time not changed"));
+        }
+    CleanupStack::PopAndDestroy();
+    }
+
+void BackupWmDrmDbL()
+    {
+    RProcess process;
+    TFullName name;
+    TFindProcess wmDrmServerFinder( _L( "*wmdrmserver*" ) );
+    if ( wmDrmServerFinder.Next( name ) == KErrNone && process.Open( name ) == KErrNone )
+        {
+        process.Kill( -1 );
+        process.Close();
+        }
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL( fs );
+    CFileMan* fileMan = CFileMan::NewL( fs );
+    CleanupStack::PushL( fileMan );
+    User::LeaveIfError( fileMan->Copy( KWmdrmBd, KWmdrmBdBackup, CFileMan::EOverWrite ) );
+    CleanupStack::PopAndDestroy( 2, &fs ); //fs, fileMan
+    }
+
+void RestoreWmDrmDbL()
+    {
+    RProcess process;
+    TFullName name;
+    TFindProcess wmDrmServerFinder( _L( "*wmdrmserver*" ) );
+    if ( wmDrmServerFinder.Next( name ) == KErrNone && process.Open( name ) == KErrNone )
+        {
+        process.Kill( -1 );
+        process.Close();
+        }
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL( fs );
+    CFileMan* fileMan = CFileMan::NewL( fs );
+    CleanupStack::PushL( fileMan );
+    User::LeaveIfError( fileMan->Copy( KWmdrmBdBackup, KWmdrmBd, CFileMan::EOverWrite ) );
+    CleanupStack::PopAndDestroy( 2, &fs ); //fs, fileMan
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/DrmKeyStorage.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,334 @@
+/*
+* 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 "Eclipse Public License v1.0"
+* which accompanies 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 FILES
+#include <e32std.h>
+#include <f32file.h>
+#include <flogger.h>
+#include <x509cert.h>
+#include <symmetric.h>
+#include <asymmetric.h>
+
+#ifdef RD_MULTIPLE_DRIVE
+#include <driveinfo.h>
+#endif
+
+#include <zipfile.h>
+#include <aknnotewrappers.h>
+
+#include "DrmKeyStorage.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// Test logging macros
+
+#ifdef RD_MULTIPLE_DRIVE
+_LIT(KPrivateRightsDir, "%c:\\private\\101F51F2\\PKI");
+_LIT(KFullLogDir, "%c:\\logs\\drm\\");
+#else
+_LIT(KPrivateRightsDir, "c:\\private\\101F51F2\\PKI");
+_LIT(KFullLogDir, "c:\\logs\\drm\\");
+#endif
+
+
+#ifdef __WINS__
+_LIT(KInputDir, "c:\\data\\drm\\keys\\");
+_LIT(KInputFilePattern, "c:\\data\\drm\\keys\\SigningCert*");
+#else
+#ifdef RD_MULTIPLE_DRIVE
+_LIT(KInputDir, "%c:\\drm\\keys\\");
+_LIT(KInputFilePattern, "%c:\\drm\\keys\\SigningCert*");
+#else
+_LIT(KInputDir, "e:\\drm\\keys\\");
+_LIT(KInputFilePattern, "e:\\drm\\keys\\SigningCert*");
+#endif
+#endif
+
+_LIT(KLogDir, "drm");
+_LIT(KLogName, "MtDrmKeyStorage.log");
+_LIT(KDeviceKeyFileName, "DevicePrivateKey.der");
+_LIT(KDeviceCertFileName, "DeviceCert.der");
+
+#define TEST_STEP(string) \
+    GLog.WriteFormat(_L("Next Test: %S"), &string);
+
+#define CHECK(condition) \
+    if (!condition) GLog.WriteFormat(_L("FAIL: line %d"), __LINE__);
+
+// MODULE DATA STRUCTURES
+
+RFs GFs;
+RFileLogger GLog;
+
+// STATIC TEST CONTENT AND RIGHTS OBJECTS
+
+// LOCAL FUNCTION PROTOTYPES
+
+// ==================== LOCAL FUNCTIONS ====================
+
+LOCAL_C void ReadFileL(HBufC8*& aContent, const TDesC& aName)
+    {
+    TInt size = 0;
+    RFile file;
+
+    User::LeaveIfError(file.Open(GFs, aName, EFileRead));
+    User::LeaveIfError(file.Size(size));
+    aContent = HBufC8::NewLC(size);
+    TPtr8 ptr(aContent->Des());
+    User::LeaveIfError(file.Read(ptr, size));
+    CleanupStack::Pop(); //aContent
+    }
+
+
+// ==================== TEST FUNCTIONS =====================
+
+LOCAL_C TUint MDrmKeyStorage_ImportDataL()
+    {
+    MDrmKeyStorage* storage = NULL;
+    HBufC8* privateKey = NULL;
+    HBufC8* cert = NULL;
+    RArray<TPtrC8> certChain;
+    RPointerArray<HBufC8> buffers;
+    TFileName fileName;
+    TInt i;
+    CDir* dir;
+    TEntry entry;
+    TUint fileCount = 0;
+
+    storage = DrmKeyStorageNewL();
+
+#ifndef RD_MULTIPLE_DRIVE
+
+    GFs.SetSessionPath(KInputDir);
+
+#else //RD_MULTIPLE_DRIVE
+
+    TFileName tempPath;
+    TInt driveNumber( -1 );
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, driveNumber );
+    GFs.DriveToChar( driveNumber, driveLetter );
+
+    tempPath.Format( KInputDir, (TUint)driveLetter );
+
+    GFs.SetSessionPath(tempPath);
+
+#endif
+
+    ReadFileL(privateKey, KDeviceKeyFileName);
+    ReadFileL(cert, KDeviceCertFileName);
+    buffers.Append(cert);
+
+#ifndef RD_MULTIPLE_DRIVE
+
+    GFs.GetDir(KInputFilePattern, KEntryAttNormal, ESortByName, dir);
+
+#else //RD_MULTIPLE_DRIVE
+
+    tempPath.Format( KInputFilePattern, (TUint)driveLetter );
+
+    GFs.GetDir(tempPath, KEntryAttNormal, ESortByName, dir);
+
+#endif
+
+    for (i = 0; i < dir->Count(); i++)
+        {
+        ReadFileL(cert, (*dir)[i].iName);
+        buffers.Append(cert);
+        }
+    for (i = 0; i < buffers.Count(); i++)
+        {
+        certChain.Append(*(buffers[i]));
+        }
+    storage->ImportDataL(*privateKey, certChain);
+    delete storage;
+    delete privateKey;
+    fileCount = buffers.Count();
+    certChain.Close();
+    buffers.ResetAndDestroy();
+    buffers.Close();
+    return fileCount;
+    }
+
+
+TUint KeyStorage()
+    {
+    TUint result = 0;
+    result = GFs.Connect();
+    if( result != KErrNone )
+        {
+        return result;
+        }
+
+#ifndef RD_MULTIPLE_DRIVE
+
+    GFs.MkDirAll(KFullLogDir);
+    GFs.MkDirAll(KPrivateRightsDir);
+    GFs.MkDirAll(KInputDir);
+
+#else //RD_MULTIPLE_DRIVE
+
+    TFileName tempPath;
+    TInt driveNumber( -1 );
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultSystem, driveNumber );
+    GFs.DriveToChar( driveNumber, driveLetter );
+
+    tempPath.Format( KFullLogDir, (TUint)driveLetter );
+    GFs.MkDirAll(tempPath);
+
+    tempPath.Format( KPrivateRightsDir, (TUint)driveLetter );
+    GFs.MkDirAll(tempPath);
+
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, driveNumber );
+    GFs.DriveToChar( driveNumber, driveLetter );
+
+    tempPath.Format( KInputDir, (TUint)driveLetter );
+    GFs.MkDirAll(tempPath);
+
+#endif
+
+
+    result = GLog.Connect();
+    if( result != KErrNone )
+        {
+        GFs.Close();
+        return result;
+        }
+    GLog.CreateLog(KLogDir, KLogName, EFileLoggingModeOverwrite);
+    GLog.Write(_L("Start %D"));
+
+    TRAPD(err,result = MDrmKeyStorage_ImportDataL());
+
+    GLog.WriteFormat(_L("Result: %d"), err);
+    CHECK(err == KErrNone);
+    GLog.CloseLog();
+    GFs.Close();
+    return result;
+    }
+
+TUint KeyStorageFromZipL(const TDesC& aFileName, RFs& aFs)
+    {
+    RFile f;
+    CZipFile* file;
+    CZipFileMemberIterator* iter;
+    CZipFileMember* member;
+    MDrmKeyStorage* storage = NULL;
+    TInt err = KErrNone;
+    HBufC8* privateKey = NULL;
+    HBufC8* cert = NULL;
+    RArray<TPtrC8> certChain;
+    TInt numCerts;
+    TInt i;
+    RZipFileMemberReaderStream* data;
+    TPtr8 ptr(NULL, 0);
+    TFileName fileName;
+    RPointerArray<HBufC8> buffers;
+
+    storage = DrmKeyStorageNewL();
+
+    err = f.Open( aFs, aFileName, EFileShareReadersOrWriters | EFileRead );
+    if ( err == KErrInUse )
+        {
+        err = f.Open( aFs, aFileName, EFileShareAny | EFileRead );
+        if ( err == KErrInUse )
+            {
+            err = f.Open( aFs, aFileName, EFileShareReadersOnly| EFileRead );
+            }
+        }
+    User::LeaveIfError( err );
+
+    CleanupClosePushL<RFile>( f );
+    file = CZipFile::NewL( aFs, f );
+    CleanupStack::PushL( file );
+    iter = file->GetMembersL();
+    CleanupStack::PushL( iter );
+    member = iter->NextL();
+    numCerts = 0;
+    while ( member != NULL )
+        {
+        if (member->Name()->Left(11).CompareF(_L("SigningCert")) == 0)
+            {
+            numCerts++;
+            }
+        delete member;
+        member = iter->NextL();
+        }
+
+    member = file->CaseInsensitiveMemberL(_L("DeviceCert.der"));
+    cert = HBufC8::NewL(member->UncompressedSize());
+    buffers.Append(cert);
+    file->GetInputStreamL(member, data);
+    ptr.Set(cert->Des());
+    data->Read(ptr, member->UncompressedSize());
+    certChain.Append(ptr);
+    delete data;
+    delete member;
+    for (i = 0; i < numCerts; i++)
+        {
+        fileName.Copy(_L("SigningCert"));
+        if (i < 10)
+            {
+            fileName.Append(_L("0"));
+            }
+        fileName.AppendNum(i);
+        fileName.Append(_L(".der"));
+        member = file->CaseInsensitiveMemberL(fileName);
+        cert = HBufC8::NewL(member->UncompressedSize());
+        buffers.Append(cert);
+        file->GetInputStreamL(member, data);
+        ptr.Set(cert->Des());
+        data->Read(ptr, member->UncompressedSize());
+        certChain.Append(ptr);
+        delete data;
+        delete member;
+        }
+    member = file->CaseInsensitiveMemberL(_L("DevicePrivateKey.der"));
+    privateKey = HBufC8::NewL(member->UncompressedSize());
+    file->GetInputStreamL(member, data);
+    ptr.Set(privateKey->Des());
+    data->Read(ptr, member->UncompressedSize());
+    delete data;
+    delete member;
+
+    storage->ImportDataL(*privateKey, certChain);
+    delete privateKey;
+    certChain.Close();
+    buffers.ResetAndDestroy();
+
+    CleanupStack::PopAndDestroy(3);
+    delete storage;
+
+    numCerts++;
+    fileName.SetLength(0);
+    fileName.AppendNum(numCerts);
+    fileName.Append(_L(" keys imported"));
+    CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
+    informationNote->ExecuteLD(fileName);
+
+    return KErrNone;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmencryptor/src/Performance.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,861 @@
+/*
+* Copyright (c) 2002-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:  ?Description
+*
+*/
+
+
+// INCLUDE FILES
+#include <caf/caf.h>
+#include <caf/cafplatform.h>
+#include <f32file.h>
+#include <s32strm.h>
+#include <s32file.h>
+#include <Oma1DcfCreator.h>
+#include <DRMMessageParser.h>
+#include <e32math.h>
+
+#ifdef RD_MULTIPLE_DRIVE
+#include <driveinfo.h>
+#endif
+
+#include "Base64.h"
+#include "Performance.h"
+#include "DRMEncryptor.hrh"
+
+_LIT(KLogDir, "DRM");
+_LIT(KLogName, "Performance.log");
+#include "flogger.h"
+#define LOG(string) \
+    RFileLogger::Write(KLogDir, KLogName, \
+        EFileLoggingModeAppend, string);
+#define LOG2(string, a) \
+    RFileLogger::WriteFormat(KLogDir, KLogName, \
+        EFileLoggingModeAppend, string, a);
+#define LOGHEX(buffer) \
+    RFileLogger::HexDump(KLogDir, KLogName, \
+        EFileLoggingModeAppend, _S(""), _S(""), \
+        buffer.Ptr(), buffer.Length());
+
+_LIT8(KMidiContent,
+"TVRoZAAAAAYAAQAGAHhNVHJrAAAAGQD/WAQEAhgIAP9ZAgAAAP9RAwehIAD/LwBN\n\
+VHJrAAAKsgD/IQEAALkHaQCZLmQAM2QAI2QOIwAAMwAALgAuM2QOMwAuKGQAM2QO\n\
+MwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAu\n\
+M2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuI2QAM2QO\n\
+MwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuMWQAM2QO\n\
+MwAAMQAuLmQAM2QAI2QOIwAAMwAALgAuM2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAu\n\
+I2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QO\n\
+MwAAIwAuI2QAM2QOMwAAIwAuMmQAM2QAKGQOKAAAMwAAMgAuMmQAI2QAM2QOMwAA\n\
+IwAAMgAuMGQAI2QAM2QOMwAAIwAAMAAuMGQAI2QAM2QOMwAAIwAAMAAuMmQAM2QA\n\
+KGQOKAAAMwAAMgAQMmQOMgAQMGQAM2QOMwAAMAAQLWQOLQAQMWQALmQAM2QAI2QO\n\
+IwAAMQAALgAAMwAuM2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAu\n\
+I2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QO\n\
+MwAAIwAuM2QAKGQOKAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QO\n\
+MwAAIwAuM2QAKGQOKAAAMwAuMWQAM2QOMwAAMQAuLmQAM2QAI2QOIwAAMwAALgAu\n\
+M2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAu\n\
+KGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQO\n\
+KAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQO\n\
+KAAAMwAuMWQAM2QOMwAAMQAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuMmQAM2QA\n\
+KGQOKAAAMwAAMgAuMmQAI2QAM2QOMwAAIwAAMgAuMGQAI2QAM2QOMwAAIwAAMAAu\n\
+MGQAI2QAM2QOMwAAIwAAMAAuMmQAM2QAKGQOKAAAMwAAMgAQMmQOMgAQMGQAM2QO\n\
+MwAAMAAQLWQOLQAQMWQALmQAM2QAI2QOIwAAMQAALgAAMwAuM2QOMwAuKGQAM2QO\n\
+MwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAu\n\
+M2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuI2QAM2QO\n\
+MwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuMWQAM2QO\n\
+MwAAMQAuLmQAM2QAI2QOIwAAMwAALgAuM2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAu\n\
+I2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAuM2QOMwAuMWQALmQA\n\
+M2QAI2QOIwAAMQAALgAAMwAuM2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QO\n\
+MwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAu\n\
+I2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAu\n\
+I2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuMWQAM2QOMwAAMQAuLmQAM2QAI2QOIwAA\n\
+MwAALgAuM2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QO\n\
+MwAAIwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAu\n\
+M2QAKGQOKAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAu\n\
+M2QAKGQOKAAAMwAuMWQAM2QOMwAAMQAuMWQALmQAM2QAI2QOIwAAMQAALgAAMwAu\n\
+M2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAu\n\
+KGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQO\n\
+KAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQO\n\
+KAAAMwAuMWQAM2QOMwAAMQAuLmQAM2QAI2QOIwAAMwAALgAuM2QOMwAuKGQAM2QO\n\
+MwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAu\n\
+M2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuMmQAM2QAKGQOKAAAMwAAMgAu\n\
+MmQAI2QAM2QOMwAAIwAAMgAuMGQAI2QAM2QOMwAAIwAAMAAuMGQAI2QAM2QOMwAA\n\
+IwAAMAAuMmQAM2QAKGQOKAAAMwAAMgAQMmQOMgAQMGQAM2QOMwAAMAAQLWQOLQAQ\n\
+MWQALmQAM2QAI2QOIwAAMQAALgAAMwAuM2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAu\n\
+I2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QO\n\
+MwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QO\n\
+MwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQOKAAAMwAuMWQAM2QOMwAAMQAuLmQAM2QA\n\
+I2QOIwAAMwAALgAuM2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAu\n\
+I2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QO\n\
+MwAAIwAuM2QAKGQOKAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QO\n\
+MwAAIwAuM2QAKGQOKAAAMwAuMWQAM2QOMwAAMQAuI2QAM2QOMwAAIwAuI2QAM2QO\n\
+MwAAIwAuMmQAM2QAKGQOKAAAMwAAMgAuMmQAI2QAM2QOMwAAIwAAMgAuMGQAI2QA\n\
+M2QOMwAAIwAAMAAuMGQAI2QAM2QOMwAAIwAAMAAuMmQAM2QAKGQOKAAAMwAAMgAQ\n\
+MmQOMgAQMGQAM2QOMwAAMAAQLWQOLQAQMWQALmQAM2QAI2QOIwAAMQAALgAAMwAu\n\
+M2QOMwAuKGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAu\n\
+KGQAM2QOMwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQO\n\
+KAAAMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuM2QAKGQO\n\
+KAAAMwAuMWQAM2QOMwAAMQAuLmQAM2QAI2QOIwAAMwAALgAuM2QOMwAuKGQAM2QO\n\
+MwAAKAAuM2QOMwAuI2QAM2QOMwAAIwAuI2QAM2QOMwAAIwAuKGQAM2QOMwAAKAAu\n\
+M2QOMwAA/y8ATVRyawAABTMA/yEBAADAIwCwB2kAkCRkHSQAHyRkDiQALiRkHSQA\n\
+HyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQA\n\
+HyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQA\n\
+HyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQA\n\
+HyRkDiQALiRkHSQAHyRkDiQALiRkHSQAWyRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAWyRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQA\n\
+HyRkDiQALiRkHSQAWyRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALitkHSsAHytkDisALitkHSsAHytkDisALitkHSsAHytkDisA\n\
+LitkHSsAHytkDisALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALilkHSkAHylkDikALilkHSkAHylkDikALilkHSkAHylkDikA\n\
+LilkHSkAHylkDikALitkHSsAHytkDisALitkHSsAHytkDisALitkHSsAHytkDisA\n\
+LitkHSsAHyRkDiQALilkHSkAHylkDikALilkHSkAHylkDikALilkHSkAHylkDikA\n\
+LilkHSkAHy1kDi0ALitkHSsAHytkDisALitkHSsAHytkDisALitkHSsAHytkDisA\n\
+LitkHSsAHytkDisALilkHSkAHylkDikALilkHSkAHylkDikALilkHSkAHylkDikA\n\
+LilkHSkAHylkDikALitkHSsAHytkDisALitkHSsAHytkDisALitkHSsAHytkDisA\n\
+LitkHSsAHytkDisALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LiRkHSQAWyRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQA\n\
+WyRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+LitkHSsAHytkDisALitkHSsAHytkDisALitkHSsAHytkDisALitkHSsAHytkDisA\n\
+LiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQALiRkHSQAHyRkDiQA\n\
+AP8vAE1UcmsAAAEeAP8hAQAAwQGOCJFTZABUZA5UAABTAAFPZABRZA5RAABPAAFM\n\
+ZABNZA5NAABMAAFIZABKZA5KAABIAAFFZABHZA5HAABFAAFBZABDZA5DAABBAAE+\n\
+ZABAZA5AAAA+AAE8ZA48AJ0JU2QAVGQOVAAAUwABT2QAUWQOUQAATwABTGQATWQO\n\
+TQAATAABSGQASmQOSgAASAABRWQAR2QORwAARQABQWQAQ2QOQwAAQQABPmQAQGQO\n\
+QAAAPgABPGQOPAC7CVNkAFRkDlQAAFMAAU9kAFFkDlEAAE8AAUxkAE1kDk0AAEwA\n\
+AUhkAEpkDkoAAEgAAUVkAEdkDkcAAEUAAUFkAENkDkMAAEEAAT5kAEBkDkAAAD4A\n\
+ATxkDjwAAP8vAE1UcmsAAAQ9AP8hAQAAwh4AsgdkjwCSTGQANGQAMGR3MAAANAAA\n\
+TAABNGQAMGQdMAAANAAfLmQPRmQsRgAALgABSmQANGQAL2Q7LwAANAAASgABSmQA\n\
+NGQAL2Q7LwAANAAASgA9SGQATGQAMGQANGR3NAAASAAATAAAMACCLS5kOy4AAS9k\n\
+Oy8AAUxkADBkADRkdzQAADAAAEwAATRkADBkHTAAADQAH0hkAC5kOy4AAEgAAVFk\n\
+ADlkADVkOzUAADkAAFEAAVBkADlkADVkOzUAADkAAFAAAUxkHUwAAU1kHU0AAVRk\n\
+AExkADdkADRkdzQAADcAAEwAgyRUAAFMZAA0ZAAwZHcwAAA0AABMAAE0ZAAwZB0w\n\
+AAA0AB8uZA9GZCxGAAAuAAFKZAA0ZAAvZDsvAAA0AABKAAFKZAA0ZAAvZDsvAAA0\n\
+AABKAD1IZABMZAAwZAA0ZHc0AABIAABMAAAwAIMlR2QAQ2QAO2QAN2R3NwAARwAA\n\
+QwAAOwABQ2QAR2QAO2QAN2QdNwAAQwAARwAAOwAfSmQAPmQ7PgAASgABSGQAPGR3\n\
+PAAASAABT2QAN2QAO2Q7OwAANwAATwA9VGSDX1QAATlkADVkdzUAADkAPUhkO0gA\n\
+AUdkd0cAPUVkO0UAAUdkd0cAgXEwZHcwAAE5ZAA1ZHc1AAA5AD1IZDtIAAFKZHdK\n\
+AD1IZDtIAAFHZDtHAIMpOWQANWR3NQAAOQA9SGQ7SAABSmR3SgA9SGQ4NGQAN2QA\n\
+T2QATGQDSAA4TwAANAAANwAATAA9NGQAN2QAT2QATGQ7TAAANAAANwAATwA9MmQA\n\
+SmQ7SgAAMgABMGQASGQ7SAAAMAABL2QAR2Q7RwAALwABMGQASGQ7MACHQEgAAUxk\n\
+ADRkADBkdzAAADQAAEwAATRkADBkHTAAADQAHy5kD0ZkLEYAAC4AAUpkADRkAC9k\n\
+Oy8AADQAAEoAAUpkADRkAC9kOy8AADQAAEoAPUhkAExkADBkADRkdzQAAEgAAEwA\n\
+ADAAgi0uZDsuAAEvZDsvAAFMZAAwZAA0ZHc0AAAwAABMAAE0ZAAwZB0wAAA0AB9I\n\
+ZAAuZDsuAABIAAFRZAA5ZAA1ZDs1AAA5AABRAAFQZAA5ZAA1ZDs1AAA5AABQAAFM\n\
+ZB1MAAFNZB1NAAFUZABMZAA3ZAA0ZHc0AAA3AABMAIMkVAABTGQANGQAMGR3MAAA\n\
+NAAATAABNGQAMGQdMAAANAAfLmQPRmQsRgAALgABSmQANGQAL2Q7LwAANAAASgAB\n\
+SmQANGQAL2Q7LwAANAAASgA9SGQATGQAMGQANGR3NAAASAAATAAAMACDJUdkAENk\n\
+ADtkADdkdzcAAEcAAEMAADsAAUNkAEdkADtkADdkHTcAAEMAAEcAADsAH0pkAD5k\n\
+Oz4AAEoAAUhkADxkdzwAAEgAAU9kADdkADtkOzsAADcAAE8APVRkg19UAAD/LwBN\n\
+VHJrAAAAWAD/IQEAAMNQALMHeK0AkzVkg181AAE3ZINfNwABNWSDXzUAATdkg183\n\
+AAE1ZINfNQABN2SDXzcAATBkhz8wAAEwZJY/MAABN2SDXzcAATBkg18wAAD/LwA=\n");
+
+_LIT8(KContentHeader, "--boundary\r\nContent-type: audio/midi\r\nContent-Transfer-Encoding: base64\r\n\r\n");
+_LIT8(KCdStartEndHeader,
+"--boundary\r\n\
+Content-Type: application/vnd.oma.drm.rights+xml\r\n\
+Content-Transfer-Encoding: binary\r\n\
+\r\n\
+<o-ex:rights\
+   xmlns:o-ex=\"http://odrl.net/1.1/ODRL-EX\"\
+   xmlns:o-dd=\"http://odrl.net/1.1/ODRL-DD\"\
+   xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#/\"\
+>\
+<o-ex:context><o-dd:version>1.0</o-dd:version></o-ex:context>\
+<o-ex:agreement><o-ex:asset><o-ex:context>\
+<o-dd:uid>cid:content0000@localhost</o-dd:uid>\
+</o-ex:context></o-ex:asset>\
+<o-ex:permission><o-dd:play><o-ex:constraint>\
+<o-dd:datetime>\
+<o-dd:end>2020-01-01T00:00:00</o-dd:end><o-dd:start>1980-01-01T00:00:00</o-dd:start>\
+</o-dd:datetime>\
+</o-ex:constraint></o-dd:play></o-ex:permission>\
+</o-ex:agreement></o-ex:rights>\r\n\
+\r\n");
+_LIT8(KCdCountHeader,
+"--boundary\r\n\
+Content-Type: application/vnd.oma.drm.rights+xml\r\n\
+Content-Transfer-Encoding: binary\r\n\
+\r\n\
+<o-ex:rights\
+   xmlns:o-ex=\"http://odrl.net/1.1/ODRL-EX\"\
+   xmlns:o-dd=\"http://odrl.net/1.1/ODRL-DD\"\
+   xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#/\"\
+>\
+<o-ex:context><o-dd:version>1.0</o-dd:version></o-ex:context>\
+<o-ex:agreement><o-ex:asset><o-ex:context>\
+<o-dd:uid>cid:content0001@localhost</o-dd:uid>\
+</o-ex:context></o-ex:asset>\
+<o-ex:permission><o-dd:play><o-ex:constraint>\
+<o-dd:count>1000000</o-dd:count>\
+</o-ex:constraint></o-dd:play></o-ex:permission>\
+</o-ex:agreement></o-ex:rights>\r\n\
+\r\n");
+_LIT8(KFooter, "\r\n--boundary--\r\n");
+
+const TInt KFileNumber = 50;
+const TInt KOpenCount = 10;
+
+#ifdef __WINS__
+_LIT(KFilesDir, "c:\\data\\others\\DrmTest\\");
+#else
+#ifdef RD_MULTIPLE_DRIVE
+_LIT(KFilesDir, "%c:\\others\\DrmTest\\");
+#else
+_LIT(KFilesDir, "e:\\others\\DrmTest\\");
+#endif
+#endif
+_LIT(KFlFileNameBase, "-fl");
+_LIT(KPlainFileNameBase, "-plain.mid");
+_LIT(KCdStartEndFileNameBase, "-cd-se");
+_LIT(KCdCountFileNameBase, "-cd-count");
+_LIT(KFileSuffix, ".dcf");
+_LIT(KBigFilePlain, "bigfile.txt");
+_LIT(KBigFileEncrypted, "bigfile.dcf");
+
+enum ETestFileType
+    {
+    EFl,
+    ECdStartEnd,
+    ECdCount,
+    EPlain
+    };
+
+void SetupDirectoryL(const TDesC& aDir)
+    {
+    RFs fs;
+    TFileName fileName;
+    CFileMan* fm = NULL;
+
+    LOG(_L("SetupDirectoryL"));
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    fm = CFileMan::NewL(fs);
+    CleanupStack::PushL(fm);
+    fm->RmDir(aDir);
+    fs.MkDirAll(aDir);
+    CleanupStack::PopAndDestroy(2); // fm, fs
+    }
+
+void CreateFileL(RFs& aFs, CDRMMessageParser* aParser, ETestFileType aType, TInt aNumber)
+    {
+    TFileName fileName;
+    RFileWriteStream out;
+    HBufC8* buffer = NULL;
+
+    fileName.AppendNum(aNumber);
+    switch (aType)
+        {
+        case EPlain:
+            fileName.Append(KPlainFileNameBase);
+            break;
+        case EFl:
+            fileName.Append(KFlFileNameBase);
+            fileName.Append(KFileSuffix);
+            break;
+        case ECdStartEnd:
+            fileName.Append(KCdStartEndFileNameBase);
+            fileName.Append(KFileSuffix);
+            break;
+        case ECdCount:
+            fileName.Append(KCdCountFileNameBase);
+            fileName.Append(KFileSuffix);
+            break;
+        }
+    out.Create(aFs, fileName, EFileWrite);
+    CleanupClosePushL(out);
+    if (aType != EPlain)
+        {
+        aParser->InitializeMessageParserL(out);
+        switch (aType)
+            {
+            case ECdStartEnd:
+                aParser->ProcessMessageDataL(KCdStartEndHeader);
+                break;
+            case ECdCount:
+                aParser->ProcessMessageDataL(KCdCountHeader);
+                break;
+            }
+        aParser->ProcessMessageDataL(KContentHeader);
+        aParser->ProcessMessageDataL(KMidiContent);
+        aParser->ProcessMessageDataL(KFooter);
+        aParser->FinalizeMessageParserL();
+        }
+    else
+        {
+        buffer = Base64DecodeL(KMidiContent);
+        CleanupStack::PushL(buffer);
+        out.WriteL(*buffer);
+        CleanupStack::PopAndDestroy(); // buffer
+        }
+    CleanupStack::PopAndDestroy(); // out
+    }
+
+void GenerateFilesL(const TDesC& aDir, TInt aCount)
+    {
+    CDRMMessageParser* parser = NULL;
+    TInt i;
+    RFs fs;
+
+    LOG(_L("GenerateFilesL"));
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    fs.SetSessionPath(aDir);
+    parser = CDRMMessageParser::NewL();
+    CleanupStack::PushL(parser);
+    for (i = 0; i < aCount; i++)
+        {
+        CreateFileL(fs, parser, EPlain, i);
+        CreateFileL(fs, parser, EFl, i);
+        CreateFileL(fs, parser, ECdStartEnd, i);
+        CreateFileL(fs, parser, ECdCount, i);
+        }
+    CleanupStack::PopAndDestroy(2); // parser, fs
+    }
+
+
+void GenerateBigFilesL(const TDesC& aDir)
+    {
+    RFs fs;
+    RFileWriteStream out;
+    COma1DcfCreator* creator = NULL;
+    HBufC8* buffer = NULL;
+    TPtr8 ptr(NULL, 0);
+    TInt i;
+
+    LOG(_L("GenerateBigFilesL"));
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    fs.SetSessionPath(aDir);
+    creator = COma1DcfCreator::NewL();
+    CleanupStack::PushL(creator);
+
+    buffer = HBufC8::NewMax(50 * 1024);
+    CleanupStack::PushL(buffer);
+    ptr.Set(buffer->Des());
+    ptr.Fill('0');
+
+    LOG(_L("Creating plain file"));
+    fs.Delete(KBigFilePlain);
+    out.Create(fs, KBigFilePlain, EFileWrite);
+    CleanupClosePushL(out);
+    for (i = 0; i < 40; i++)
+        {
+        out.WriteL(ptr);
+        }
+    CleanupStack::PopAndDestroy(); // out
+
+    LOG(_L("Creating encrypted file"));
+    fs.Delete(KBigFileEncrypted);
+    out.Create(fs, KBigFileEncrypted, EFileWrite);
+    CleanupClosePushL(out);
+    creator->EncryptInitializeL(out, _L8("text/plain"), NULL);
+    for (i = 0; i < 40; i++)
+        {
+        creator->EncryptUpdateL(ptr);
+        }
+    creator->EncryptFinalizeL();
+    CleanupStack::PopAndDestroy(4); // out, creator, buffer, fs
+    }
+
+
+void TestDecryptionSpeedL(const TDesC& aDir, TBool aRandom, TInt aType)
+    {
+    TInt i;
+    TInt j;
+    HBufC8* buffer = NULL;
+    RFs fs;
+    TPtr8 ptr(NULL, 0);
+    CData* data = NULL;
+    RFile file;
+    TInt blockSize[5] = {64, 512, 1024, 2048, 4096};
+    TFileName fileName;
+    TInt pos = 0;
+
+    LOG(_L("TestDecryptionSpeedL"));
+    if (aRandom)
+        {
+        LOG(_L("Random Reading"));
+        }
+    else
+        {
+        LOG(_L("Sequential Reading"));
+        }
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    fs.SetSessionPath(aDir);
+
+    buffer = HBufC8::NewL(4096);
+    CleanupStack::PushL(buffer);
+    ptr.Set(buffer->Des());
+    for (j = 0; j < 5; j++)
+        {
+        LOG2(_L("Block size: %d"), blockSize[j]);
+
+        switch (aType)
+            {
+            case 1: //Plain file with RFile
+                {
+                LOG(_L("Reading plain file (RFile)"));
+                User::LeaveIfError(file.Open(fs, KBigFilePlain, EFileRead));
+                CleanupClosePushL(file);
+                for (i = 0; i < 40 * 50 * 1024 / blockSize[j]; i++)
+                    {
+                    if (aRandom)
+                        {
+                        pos = Abs(Math::Random() % (40 * 50 * 1024 - 2 * blockSize[j]));
+                        file.Seek(ESeekStart, pos);
+                        }
+                    file.Read(ptr, blockSize[j]);
+                    }
+                CleanupStack::PopAndDestroy(); // file
+                LOG2(_L("Reading plain file (RFile) done (%d blocks)"), i);
+                }
+                break;
+            case 2: //Plain file with CAF
+                {
+                LOG(_L("Reading plain file (CAF)"));
+                fileName.Copy(aDir);
+                fileName.Append(KBigFilePlain);
+                data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                EPeek, EContentShareReadOnly);
+                CleanupStack::PushL(data);
+                for (i = 0; i < 40 * 50 * 1024 / blockSize[j]; i++)
+                    {
+                    if (aRandom)
+                        {
+                        pos = Abs(Math::Random() % (40 * 50 * 1024 - 2 * blockSize[j]));
+                        data->Seek(ESeekStart, pos);
+                        }
+                    data->Read(ptr, blockSize[j]);
+                    }
+                CleanupStack::PopAndDestroy(); // data
+                LOG2(_L("Reading plain file (CAF) done (%d blocks)"), i);
+                }
+                break;
+            case 3: //DRM Protected on server side
+                {
+                LOG(_L("Reading encrypted file (server decryption)"));
+                fileName.Copy(aDir);
+                fileName.Append(KBigFileEncrypted);
+                __UHEAP_MARK;
+                data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                EPeek, EContentShareReadOnly);
+                CleanupStack::PushL(data);
+                data->ExecuteIntent(EView); //!!!!!!!!!!!!!
+                for (i = 0; i < 40 * 50 * 1024 / blockSize[j]; i++)
+                    {
+                    if (aRandom)
+                        {
+                        pos = Abs(Math::Random() % (40 * 50 * 1024 - 2 * blockSize[j]));
+                        data->Seek(ESeekStart, pos);
+                        }
+                    data->Read(ptr, blockSize[j]);
+                    }
+
+                CleanupStack::PopAndDestroy(); // data
+                __UHEAP_MARKEND;
+                LOG2(_L("Reading encrypted file done (%d blocks)"), i);
+
+                // DRM protected on client side
+                LOG(_L("Reading encrypted file (client decryption)"));
+                fileName.Copy(aDir);
+                fileName.Append(KBigFileEncrypted);
+                __UHEAP_MARK;
+                data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                    EPeek, EContentShareReadOnly);
+                CleanupStack::PushL(data);
+                data->ExecuteIntent(EView);
+                for (i = 0; i < 40 * 50 * 1024 / blockSize[j]; i++)
+                    {
+                    if (aRandom)
+                        {
+                        pos = Math::Random() % (40 * 50 * 1024 - blockSize[j]);
+                        data->Seek(ESeekStart, pos);
+                        }
+                    data->Read(ptr, blockSize[j]);
+                    }
+                CleanupStack::PopAndDestroy(); // data
+                __UHEAP_MARKEND;
+                LOG2(_L("Reading encrypted file done (%d blocks)"), i);
+                }
+                break;
+            }
+        }
+    CleanupStack::PopAndDestroy(); // buffer
+
+    CleanupStack::PopAndDestroy(); // fs
+    }
+
+void TestFileOpeningSpeedL(const TDesC& aDir, TInt aType)
+    {
+    TFileName fileName;
+    TInt j;
+    TInt i;
+    CData* data = NULL;
+    RFs fs;
+    RFile file;
+
+    LOG2(_L("TestFileOpeningSpeedL (%d files)"), KFileNumber * KOpenCount);
+
+    switch( aType)
+        {
+        case 1: // With RFile
+            {
+            LOG(_L("Opening plain files (with RFs::Connect)"));
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KFlFileNameBase);
+                fileName.Append(KFileSuffix);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    User::LeaveIfError(fs.Connect());
+                    CleanupClosePushL(fs);
+                    User::LeaveIfError(file.Open(fs, fileName, EFileRead));
+                    file.Close();
+                    CleanupStack::PopAndDestroy();
+                    }
+                }
+            LOG(_L("Opening plain files done"));
+
+            LOG(_L("Opening plain files (without RFs::Connect)"));
+            User::LeaveIfError(fs.Connect());
+            CleanupClosePushL(fs);
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KFlFileNameBase);
+                fileName.Append(KFileSuffix);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    User::LeaveIfError(file.Open(fs, fileName, EFileRead));
+                    file.Close();
+                    }
+                }
+            CleanupStack::PopAndDestroy();
+            LOG(_L("Opening plain files done"));
+            }
+            break;
+
+        case 2: //With CAF
+            {
+
+            LOG(_L("Opening plain files (CAF)"));
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KPlainFileNameBase);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                    EPlay, EContentShareReadOnly);
+                    delete data;
+                    }
+                }
+
+
+            LOG(_L("Opening plain files done"));
+
+            User::After(3000000);
+
+            LOG(_L("Opening plain files CAF with Filehandle"));
+
+            User::LeaveIfError(fs.Connect());
+            CleanupClosePushL(fs);
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KPlainFileNameBase);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    User::LeaveIfError(file.Open(fs, fileName, EFileRead | EFileShareAny));
+                    CleanupClosePushL(file);
+                    data = CData::NewL(file, KDefaultContentObject, EPlay );
+                    delete data;
+                    CleanupStack::PopAndDestroy(); // file
+                    }
+                }
+            CleanupStack::PopAndDestroy();
+
+
+            LOG(_L("Opening plain files (CAF with filehandle) done"));
+            }
+            break;
+
+        case 3: //With DRM
+            {
+
+            LOG(_L("Opening FL files"));
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KFlFileNameBase);
+                fileName.Append(KFileSuffix);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                    EPlay, EContentShareReadOnly);
+                    delete data;
+                    }
+                }
+            LOG(_L("Opening FL files done"));
+
+            User::After(3000000);
+
+            LOG(_L("Opening DRM FL files (CAF with filehandle)"));
+
+            User::LeaveIfError(fs.Connect());
+            CleanupClosePushL(fs);
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KFlFileNameBase);
+                fileName.Append(KFileSuffix);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    User::LeaveIfError(file.Open(fs, fileName, EFileRead | EFileShareAny));
+                    CleanupClosePushL(file);
+                    data = CData::NewL(file, KDefaultContentObject, EPlay );
+                    delete data;
+                    CleanupStack::PopAndDestroy();
+                    }
+                }
+            CleanupStack::PopAndDestroy();
+
+            LOG(_L("Opening DRM FL files (CAF with filehandle) done"));
+
+            User::After(3000000);
+
+            LOG(_L("Opening CD (Start/End) files"));
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KCdStartEndFileNameBase);
+                fileName.Append(KFileSuffix);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                    EPlay, EContentShareReadOnly);
+                    delete data;
+                    }
+                }
+            LOG(_L("Opening CD (Start/End) files done"));
+
+            User::After(3000000);
+
+            LOG(_L("Opening CD (Count) files"));
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KCdCountFileNameBase);
+                fileName.Append(KFileSuffix);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                    EPlay, EContentShareReadOnly);
+                    delete data;
+                    }
+                }
+            LOG(_L("Opening CD (Count) files done"));
+
+            }
+            break;
+        case 4:
+            {
+            LOG(_L("Opening CD (Count) files with Consumption"));
+            for (i = 0; i < KFileNumber; i++)
+                {
+                fileName.Copy(aDir);
+                fileName.AppendNum(i);
+                fileName.Append(KCdCountFileNameBase);
+                fileName.Append(KFileSuffix);
+                for (j = 0; j < KOpenCount; j++)
+                    {
+                    data = CData::NewL(TVirtualPathPtr(fileName, KDefaultContentObject),
+                    EPlay, EContentShareReadOnly);
+                    data->ExecuteIntent(EPlay);
+                    delete data;
+                    }
+                }
+            LOG(_L("Opening CD (Count) files with Consumption done"));
+            }
+            break;
+        }
+    }
+void TestDatabasePerformanceL()
+    {
+    LOG(_L("TestDatabasePerformanceL"));
+    }
+
+void TestPerformanceL(TInt aCommand)
+    {
+    LOG(_L("TestPerformanceL"));
+
+#ifndef RD_MULTIPLE_DRIVE
+
+    switch(aCommand)
+    {
+    case EDRM_API_SubMenuId_1:        // Generate files
+        {
+        SetupDirectoryL(KFilesDir);
+        GenerateFilesL(KFilesDir, KFileNumber);
+        GenerateBigFilesL(KFilesDir);
+        break;
+        }
+    case EDRM_API_SubMenuId_1_1:        // RFile opening
+        {
+        TestFileOpeningSpeedL(KFilesDir, 1);
+        break;
+        }
+    case EDRM_API_SubMenuId_1_2:        // RFile Sequential
+        {
+        TestDecryptionSpeedL(KFilesDir, EFalse, 1);
+        break;
+        }
+    case EDRM_API_SubMenuId_1_3:        // RFile Random
+        {
+        TestDecryptionSpeedL(KFilesDir, ETrue, 1);
+        break;
+        }
+    case EDRM_API_SubMenuId_2_1:        // CAF File Opening
+        {
+        TestFileOpeningSpeedL(KFilesDir, 2);
+        break;
+        }
+    case EDRM_API_SubMenuId_2_2:        // CAF Sequential
+        {
+        TestDecryptionSpeedL(KFilesDir, EFalse, 2);
+        break;
+        }
+    case EDRM_API_SubMenuId_2_3:        // CAF Random
+        {
+        TestDecryptionSpeedL(KFilesDir, ETrue, 2);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_1:        // DRM file opening
+        {
+        TestFileOpeningSpeedL(KFilesDir, 3);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_2:        // DRM file opening with consume
+        {
+        TestFileOpeningSpeedL(KFilesDir, 4);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_3:    // Sequential DRM
+        {
+        TestDecryptionSpeedL(KFilesDir, EFalse, 3);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_4:    // Random DRM
+        {
+        TestDecryptionSpeedL(KFilesDir, ETrue, 3);
+        break;
+        }
+    }
+
+#else //RD_MULTIPLE_DRIVE
+
+    RFs fs;
+    TInt driveNumber( -1 );
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, driveNumber );
+
+    User::LeaveIfError( fs.Connect() );
+    fs.DriveToChar( driveNumber, driveLetter );
+    fs.Close();
+
+    TFileName filesDir;
+    filesDir.Format( KFilesDir, (TUint)driveLetter );
+
+    switch(aCommand)
+    {
+    case EDRM_API_SubMenuId_1:        // Generate files
+        {
+        SetupDirectoryL(filesDir);
+        GenerateFilesL(filesDir, KFileNumber);
+        GenerateBigFilesL(filesDir);
+        break;
+        }
+    case EDRM_API_SubMenuId_1_1:        // RFile opening
+        {
+        TestFileOpeningSpeedL(filesDir, 1);
+        break;
+        }
+    case EDRM_API_SubMenuId_1_2:        // RFile Sequential
+        {
+        TestDecryptionSpeedL(filesDir, EFalse, 1);
+        break;
+        }
+    case EDRM_API_SubMenuId_1_3:        // RFile Random
+        {
+        TestDecryptionSpeedL(filesDir, ETrue, 1);
+        break;
+        }
+    case EDRM_API_SubMenuId_2_1:        // CAF File Opening
+        {
+        TestFileOpeningSpeedL(filesDir, 2);
+        break;
+        }
+    case EDRM_API_SubMenuId_2_2:        // CAF Sequential
+        {
+        TestDecryptionSpeedL(filesDir, EFalse, 2);
+        break;
+        }
+    case EDRM_API_SubMenuId_2_3:        // CAF Random
+        {
+        TestDecryptionSpeedL(filesDir, ETrue, 2);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_1:        // DRM file opening
+        {
+        TestFileOpeningSpeedL(filesDir, 3);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_2:        // DRM file opening with consume
+        {
+        TestFileOpeningSpeedL(filesDir, 4);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_3:    // Sequential DRM
+        {
+        TestDecryptionSpeedL(filesDir, EFalse, 3);
+        break;
+        }
+    case EDRM_API_SubMenuId_3_1_4:    // Random DRM
+        {
+        TestDecryptionSpeedL(filesDir, ETrue, 3);
+        break;
+        }
+    }
+
+#endif
+
+    //TestDatabasePerformanceL();
+    }
--- a/commondrm/drmqtencryptor/drmencryptor.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
-* 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 "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  DRM Encryption tool.
-*
-*/
-
-#ifndef DRMENCRYPTOR_H
-#define DRMENCRYPTOR_H
-
-#include <QtGui/QDialog>
-#include <QDateTimeEdit>
-#include <QPushButton>
-#include <QDateTimeEdit>
-#include <QMainWindow>
-#include <QMenuBar>
-#include <QAction>
-#include <QHBoxLayout>
-#include <wmdrmagent.h>
-#include <caf/manager.h>
-
-/*namespace Ui
-{
-    class mainWindow;
-    class QPushButton;
-}*/
-
-//forward declarations
-class DateTimeDialog;
-
-class DRMEncryptor : public QMainWindow
-{
-    Q_OBJECT
-
-public:
-    DRMEncryptor();
-    ~DRMEncryptor();
-
-private:
-    void ProcessMessageL(const TDesC& aFile, const TDesC& aOutput);
-    //ContentAccess::CManager* GetCafDataL( ContentAccess::TAgent& aAgent );
-    void DeleteWmDrmRdbL();
-            
-    
-signals:
-    
-private slots:
-    void onTextChanged(const QString &);
-    void setDRMClock();
-    void getDRMClock();
-    void startEncrypt();
-    void deleteWmDrmDB();
-    void deleteOmaDrmDB();
-    void launchBrowser();
-    TUint EncryptL(TUint& aEncryptedCount, TUint& aRightsCount, TUint& aMessagesProcessed);
-    
-    //void onDateTimeChanged(const QDateTime & datetime );
-
-private:
-    QMenu *iOptionsMenu;
-    QPushButton *iSetDRMClockButton;
-    
-    // Menu options
-    QAction *iSetDRMClockAct;
-    QAction *iGetDRMClockAct;
-    QAction *iEncryptAct;
-    QAction *iDeleteWMDRMDBAct;
-    QAction *iDeleteOMADRMDBAct;
-    QAction *iLaunchBrowserAct;
-    
-    DateTimeDialog *iDateTimeDialog;
-    QDateTime iDatetime;
-};
-
-class DateTimeDialog : public QDialog
-{
-    Q_OBJECT
-
-public:
-    DateTimeDialog();
-    ~DateTimeDialog();
-
-private slots:
-    void setDRMClock();
-    
-private:
-    QHBoxLayout *iLayout;
-    QDateTimeEdit *iDateEdit;
-    /*QDateTimeEdit *iDateEdit;
-    QPushButton *iOkButton;
-    QPushButton *iCancelButton;*/
-       
-};
-
-
-#endif // DRMENCRYPTOR_H
--- a/commondrm/drmqtencryptor/drmencryptor.ui	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* 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 "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  DRM Encryption tool.
-*
-*/
-
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>mainWindow</class>
- <widget class="QDialog" name="mainWindow">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>310</width>
-    <height>498</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>DRMEncryptor</string>
-  </property>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <resources/>
- <connections/>
-</ui>
--- a/commondrm/drmqtencryptor/drmencyptor.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,795 +0,0 @@
-/*
-* 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 "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  DRM Encryption tool.
-*
-*/
-
-#include "drmencryptor.h"
-//#include "ui_dialog.h"
-#include <QMessageBox>
-#include <QDoubleValidator>
-#include <QMenu>
-#include <QHBoxLayout>
-#include <QString>
-#include <QLabel>
-#include <QPlainTextEdit>
-#include <QVBoxLayout>
-#include <QWidget>
-#include <QPalette>
-
-#ifdef RD_MULTIPLE_DRIVE
-#include <driveinfo.h>
-#endif
-
-#include <e32std.h>
-#include <e32base.h>
-#include <e32cmn.h>
-
-#include <Oma1DcfCreator.h>
-#include <s32file.h>
-#include <DRMMessageParser.h>
-#include <DcfRep.h>
-#include <DcfEntry.h>
-#include <DRMRights.h>
-//#include <drmbrowserlauncher.h>
-
-#include "drmserviceapi.h"
-#include "DRMTypes.h"
-
-const TInt KBufferSize = 20000;
-
-DRMEncryptor::DRMEncryptor()
-{   
-    QWidget *widget = new QWidget();
-    setCentralWidget(widget);
-    
-    setBackgroundRole( QPalette::Window );
-
-    QVBoxLayout *layout = new QVBoxLayout;
-    layout->setAlignment(Qt::AlignCenter);
-   
-    QLabel *mainWindowLabel = new QLabel("DRM Encryptor");
-    layout->addWidget(mainWindowLabel);
-    
-    //layout->addStretch();
-
-    //ui->setupUi(this);
-    //iOptionsMenu = menuBar()->addMenu(tr("&Options"));
-    
-    // Create menu options
-    iSetDRMClockAct = new QAction(tr("&Set DRM Clock"), this);
-    iSetDRMClockAct->setStatusTip(tr("Set DRM secure clock time."));
-    
-    iGetDRMClockAct = new QAction(tr("&Get DRM Clock Time"), this);
-    iGetDRMClockAct->setStatusTip(tr("Get DRM secure clock time."));
-    
-    iEncryptAct = new QAction(tr("&Encrypt"), this);
-    iEncryptAct->setStatusTip(tr("Encrypt"));
-    
-    iLaunchBrowserAct = new QAction(tr("&Launch Browser"), this);
-    iLaunchBrowserAct->setStatusTip(tr("Launch Browser"));
-        
-    iDeleteWMDRMDBAct = new QAction(tr("&Delete WMDRM DB"), this);
-    iDeleteWMDRMDBAct->setStatusTip(tr("Delete WMDRM Database rights."));
-    
-    iDeleteOMADRMDBAct = new QAction(tr("&Delete OMADRM DB"), this);
-    iDeleteOMADRMDBAct->setStatusTip(tr("Delete OMADRM Database rights."));
-    
-    menuBar()->addAction(iSetDRMClockAct);
-    menuBar()->addAction(iGetDRMClockAct);
-    menuBar()->addAction(iEncryptAct);
-    menuBar()->addAction(iDeleteWMDRMDBAct);
-    menuBar()->addAction(iDeleteOMADRMDBAct);
-    menuBar()->addAction(iLaunchBrowserAct);
-    
-    connect(iSetDRMClockAct, SIGNAL(triggered()), this, SLOT(setDRMClock()));
-    connect(iGetDRMClockAct, SIGNAL(triggered()), this, SLOT(getDRMClock()));
-    connect(iEncryptAct, SIGNAL(triggered()), this, SLOT(startEncrypt()));
-    connect(iDeleteWMDRMDBAct, SIGNAL(triggered()), this, SLOT(deleteWmDrmDB()));
-    connect(iDeleteOMADRMDBAct, SIGNAL(triggered()), this, SLOT(deleteOmaDrmDB()));
-    connect(iLaunchBrowserAct, SIGNAL(triggered()), this, SLOT(launchBrowser()));
-    
-    //setDRMClockButton = new QPushButton("Set DRM Clock", this);
-    //connect(setDRMClockButton, SIGNAL(clicked()), this, SLOT(setDRMClock()));
-    //setDRMClockButton->show();
-    
-/*  ui->pushButton->setEnabled(false);
-
-    ui->lineEdit->setValidator(new QDoubleValidator(this));
-    ui->lineEdit_2->setValidator(new QDoubleValidator(this));
-*/
-    //connect(ui->mainMenu,SIGNAL(onChanged()),this,SLOT(onLaske()));
-    //connect(ui->lineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(onTextChanged(const QString &)));
-    //connect(ui->mainMenu,SIGNAL(textChanged(const QString &)),this,SLOT(onTextChanged(const QString &)));
-
-    widget->setLayout(layout);
-}
-
-DRMEncryptor::~DRMEncryptor()
-{
-    //delete ui;
-}
-
-void DRMEncryptor::setDRMClock()
-{
-    DateTimeDialog *dateTimeDialog = new DateTimeDialog();
-    dateTimeDialog->show();
-}
-
-void DRMEncryptor::getDRMClock()
-{
-	TTime time;
-    TInt timeZone;
-    TDateTime date;
-    DRMClock::ESecurityLevel level;
-    TInt error( KErrNone );
-    TBuf< 80 > buf;
-    
-    DRM::CDrmServiceApi* service = NULL;
-    
-    TRAPD(err, service = DRM::CDrmServiceApi::NewL());
-    if(err!=KErrNone)
-    	{
-    	QMessageBox::information(this, tr("DRM Clock"),tr("Error creating CDrmServiceApi."));
-    	buf.AppendNum(error);
-        QString string((QChar*)buf.Ptr(),buf.Length());
-        QMessageBox::information(this, tr("DRM Clock"),string);
-    	delete service; // service
-    	return;
-    	}
-    
-    error = service->GetSecureTime( time, timeZone, level );
-    if(!error==KErrNone)
-        {
-        QMessageBox::information(this, tr("DRM Clock"),tr("Error getting secure time."));
-        
-        buf.AppendNum(error);
-        QString string((QChar*)buf.Ptr(),buf.Length());
-        QMessageBox::information(this, tr("DRM Clock"),string);
-        delete service;
-        return;
-        }
-    
-    date = time.DateTime();
-    
-    if(level == DRMClock::KSecure)
-    {
-        _LIT(KFormatTxt,"DRMClock Time:\n%d/%d/%d\n%d:%d:%d\nNitz available");
-        buf.Format( KFormatTxt,
-                date.Day()+1,
-                TInt(date.Month()+1),
-                date.Year(),
-                date.Hour(),
-                date.Minute(),
-                date.Second());
-    }
-    else
-    {
-        _LIT(KFormatTxt,"DRMClock Time:\n%d/%d/%d\n%d:%d:%d\nNitz unavailable");
-        buf.Format( KFormatTxt,
-                date.Day()+1,
-                TInt(date.Month()+1),
-                date.Year(),
-                date.Hour(),
-                date.Minute(),
-                date.Second());
-    }
-    
-    QGridLayout *layout = new QGridLayout;
-    layout->setAlignment(Qt::AlignCenter);
-    setLayout(layout);
-        
-    
-    QString datetimeString((QChar*)buf.Ptr(),buf.Length());
-    
-    QMessageBox *drmClockTime = new QMessageBox(this);
-    drmClockTime->setWindowTitle(tr("DRM Clock"));
-    drmClockTime->setText(datetimeString);
-    
-    layout->addWidget(drmClockTime);
-    drmClockTime->show();
-    
-}
-
-LOCAL_C void ReadFileL(HBufC8*& aContent, const TDesC& aName, RFs& aFs)
-    {
-    TInt size = 0;
-    RFile file;
-    User::LeaveIfError(file.Open(aFs, aName, EFileRead));
-    User::LeaveIfError(file.Size(size));
-    aContent = HBufC8::NewLC(size);
-    TPtr8 ptr(aContent->Des());
-    User::LeaveIfError(file.Read(ptr, size));
-    CleanupStack::Pop(); //aContent
-    }
-
-// ---------------------------------------------------------
-// UpdateDCFRepositoryL()
-// Update saved file to DCFRepository
-// ---------------------------------------------------------
-//
-LOCAL_C void UpdateDCFRepositoryL( const TDesC& aFileName)
-    {
-    CDcfEntry* dcf( NULL );
-    CDcfRep* dcfRep( NULL );
-
-    dcf = CDcfEntry::NewL();
-    CleanupStack::PushL( dcf );
-
-    dcfRep = CDcfRep::NewL();
-    CleanupStack::PushL( dcfRep );
-
-    dcf->SetLocationL( aFileName, 0 );
-    dcfRep->UpdateL( dcf );
-
-    CleanupStack::PopAndDestroy(2); // dcf, dcfRep
-    }
-
-void ProcessRightsL(const TDesC& aFile)
-    {
-    CDRMMessageParser* c = NULL;
-    HBufC8* d = NULL;
-    RFs fs;
-    RPointerArray<CDRMRights> rights;
-
-    User::LeaveIfError(fs.Connect());
-    c = CDRMMessageParser::NewL();
-    ReadFileL(d, aFile, fs);
-    c->ProcessRightsObject(*d, rights);
-    rights.ResetAndDestroy();
-    delete d;
-    delete c;
-    fs.Close();
-    }
-
-void DRMEncryptor::ProcessMessageL(const TDesC& aFile, const TDesC& aOutput)
-    {
-    CDRMMessageParser* c = NULL;
-    HBufC8* d = NULL;
-    RFs fs;
-    TPtr8 inRead(NULL, 0);
-    TInt error = 1;
-    __UHEAP_MARK;
-
-    User::LeaveIfError(fs.Connect());
-    CleanupClosePushL(fs);
-    c = CDRMMessageParser::NewL();
-    CleanupStack::PushL(c);
-
-    d = HBufC8::NewLC( KBufferSize );
-
-    RFile input;
-    User::LeaveIfError(input.Open( fs, aFile, EFileRead ));
-    CleanupClosePushL( input );
-
-    RFileWriteStream output;
-    output.Replace( fs, aOutput, EFileWrite );
-    CleanupClosePushL( output );
-
-    c->InitializeMessageParserL( output );
-
-    while( error )
-        {
-        inRead.Set( const_cast<TUint8*>(d->Ptr()),0,KBufferSize);
-        error = input.Read( inRead );
-
-        if( error )
-            {
-            c->FinalizeMessageParserL();
-
-            User::Leave( error );
-            }
-        else
-            {
-            error = inRead.Length();
-            }
-
-        if( error )
-            {
-            c->ProcessMessageDataL(inRead);
-            }
-        }
-
-    c->FinalizeMessageParserL();
-
-
-    CleanupStack::PopAndDestroy( 5 ); // fs, c, d, input, output
-    UpdateDCFRepositoryL( aOutput );
-    __UHEAP_MARKEND;
-    }
-
-void EncryptFileL(const TDesC& aFile, TDesC& aOutput, TInt aMultiplier)
-    {
-    COma1DcfCreator* c = NULL;
-    CDRMRights* rights = NULL;
-    TBuf8<64> mime;
-    RFs fs;
-    TFileName aDcfFile;
-    TInt aOriginalFileNameLength(aOutput.Length() - 4);
-
-    User::LeaveIfError(fs.Connect());
-    if (aFile.Right(3).CompareF(_L("amr")) == 0) //AMR
-        {
-        mime.Copy(_L8("audio/amr"));
-        }
-    else if (aFile.Right(3).CompareF(_L("awb")) == 0) //AMR-AWB
-        {
-        mime.Copy(_L8("audio/amr-wb"));
-        }
-    else if (aFile.Right(3).CompareF(_L("mp3")) == 0) //MP3
-        {
-        mime.Copy(_L8("audio/mpeg"));
-        }
-    else if (aFile.Right(3).CompareF(_L("mp4")) == 0) //MP4
-        {
-        mime.Copy(_L8("audio/mp4"));
-        }
-    else if (aFile.Right(3).CompareF(_L("m4a")) == 0) //M4A
-        {
-        mime.Copy(_L8("audio/mp4"));
-        }
-    else if (aFile.Right(3).CompareF(_L("3gp")) == 0) //3GPP
-        {
-        mime.Copy(_L8("audio/3gpp"));
-        }
-    else if (aFile.Right(3).CompareF(_L("3g2")) == 0) //3GPP2
-        {
-        mime.Copy(_L8("audio/3gpp2"));
-        }
-    else if (aFile.Right(3).CompareF(_L("aac")) == 0) //AAC
-        {
-        mime.Copy(_L8("audio/aac"));
-        }
-    else if (aFile.Right(3).CompareF(_L("mid")) == 0) //MIDI
-        {
-        mime.Copy(_L8("audio/midi"));
-        }
-    else if (aFile.Right(5).CompareF(_L(".spmid")) == 0) //SP-MIDI
-        {
-        mime.Copy(_L8("audio/sp-midi"));
-        }
-    else if (aFile.Right(3).CompareF(_L("rmf")) == 0) //RMF
-        {
-        mime.Copy(_L8("audio/rmf"));
-        }
-    else if (aFile.Right(4).CompareF(_L("mxmf")) == 0) //Mobile-XMF
-        {
-        mime.Copy(_L8("audio/mobile-xmf"));
-        }
-    else if (aFile.Right(3).CompareF(_L("wav")) == 0) //WAV
-        {
-        mime.Copy(_L8("audio/x-wav"));
-        }
-    else if (aFile.Right(3).CompareF(_L("gif")) == 0) // GIF
-        {
-        mime.Copy(_L8("image/gif"));
-        }
-    else if (aFile.Right(3).CompareF(_L("jpg")) == 0) // JPEG
-        {
-        mime.Copy(_L8("image/jpeg"));
-        }
-    else if (aFile.Right(3).CompareF(_L("txt")) == 0) // text
-        {
-        mime.Copy(_L8("text/plain"));
-        }
-    else if (aFile.Right(3).CompareF(_L("pip")) == 0) // PIP
-        {
-        mime.Copy(_L8("application/x-pip"));
-        }
-
-    aDcfFile.Append(aOutput);
-
-    for(TInt i = 0; i < aMultiplier ; ++i)
-        {
-        aDcfFile.Delete(aOriginalFileNameLength, aDcfFile.Length());
-        aDcfFile.Append(_L("-"));
-        aDcfFile.AppendNum(i);
-        aDcfFile.Append(_L(".dcf"));
-        c = COma1DcfCreator::NewL();
-        CleanupStack::PushL(c);
-        fs.Delete(aOutput);
-        c->EncryptFileL(aFile, aDcfFile, mime, rights);
-        UpdateDCFRepositoryL( aDcfFile );
-        delete rights;
-        CleanupStack::PopAndDestroy(); // c
-        }
-    fs.Close();
-
-    }
-
-void DRMEncryptor::startEncrypt()
-    {
-        TUint result = 0;
-        TUint aEncryptedCount = 0;
-        TUint aRightsCount = 0;
-        TUint aMessagesProcessed = 0;
-        TBuf<128> buffer;
-        
-        result = EncryptL(aEncryptedCount, aRightsCount, aMessagesProcessed);
-    
-        buffer.Append(_L("Encryption done\n"));
-        if(result < 1) 
-        {
-            buffer.Append(_L("No files found"));
-        }
-        if(aMessagesProcessed != 0) 
-        {
-            buffer.AppendNum(aMessagesProcessed);
-            buffer.Append(_L(" messages processed\n"));
-        }
-        if(aRightsCount != 0) 
-        {
-            buffer.AppendNum(aRightsCount);
-            buffer.Append(_L(" rights objects processed\n"));
-        }
-        if(aMessagesProcessed != 0) 
-        {
-            buffer.AppendNum(aEncryptedCount);
-            buffer.Append(_L(" files encrypted\n"));
-        }
-        
-        QGridLayout *layout = new QGridLayout;
-        layout->setAlignment(Qt::AlignCenter);
-        setLayout(layout);
-               
-        QString encryptString((QChar*)buffer.Ptr(),buffer.Length());
-        QMessageBox *encrpytMessage = new QMessageBox(this);
-        encrpytMessage->setWindowTitle(tr("Encrypt"));
-        encrpytMessage->setText(encryptString);
-          
-        layout->addWidget(encrpytMessage);
-        encrpytMessage->show();
-           
-    }
-
-TUint DRMEncryptor::EncryptL(TUint& aEncryptedCount, TUint& aRightsCount, TUint& aMessagesProcessed)
-    {
-    TInt i;
-    CDir* files;
-    TFileName input;
-    TFileName output;
-    TUint inputNameSize = 0;
-    TUint outputNameSize = 0;
-    RFs fs;
-    User::LeaveIfError(fs.Connect());
-    TInt aMultiplier(1);
-
-
-#ifdef __WINS__
-    input.Append(_L("c:\\data\\DRM\\"));
-    output.Append(_L("c:\\data\\Others\\"));
-#else
-#ifndef RD_MULTIPLE_DRIVE
-
-    input.Append(_L("e:\\DRM\\"));
-    output.Append(_L("e:\\Others\\"));
-
-#else //RD_MULTIPLE_DRIVE
-
-    TInt driveNumber( -1 );
-    TChar driveLetter;
-    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, driveNumber );
-    fs.DriveToChar( driveNumber, driveLetter );
-
-    _LIT( KdrmDir, "%c:\\DRM\\" );
-    input.Format( KdrmDir, (TUint)driveLetter );
-
-    _LIT( KothersDir, "%c:\\Others\\" );
-    output.Format( KothersDir, (TUint)driveLetter );
-
-#endif
-#endif
-
-    inputNameSize = input.Length();
-    outputNameSize = output.Length();
-
-
-    fs.MkDir(input);
-    fs.MkDir(output);
-
-    fs.GetDir(input, KEntryAttNormal, ESortNone, files);
-    for (i = 0; i < files->Count(); i++)
-        {
-        input.Append((*files)[i].iName);
-
-        output.Append((*files)[i].iName);
-
-        if (input.Right(2).CompareF(_L("dm")) == 0)
-            {
-
-            for(TInt ii = 0; ii < aMultiplier ; ++ii)
-                {
-                output.Delete(outputNameSize +(*files)[i].iName.Length() , output.Length()-1);
-                output.Append(_L("-"));
-                output.AppendNum(ii);
-                output.Append(_L(".dcf"));
-                ProcessMessageL(input, output);
-                ++aMessagesProcessed;
-                }
-            }
-        else if (input.Right(3).CompareF(_L("oro")) == 0 ||
-                input.Right(3).CompareF(_L("drc")) == 0 ||
-                input.Right(2).CompareF(_L("ro")) == 0 ||
-                input.Right(2).CompareF(_L("dr")) == 0 )
-            {
-            for (TInt iii = 0; iii < aMultiplier; ++iii)
-                {
-                ProcessRightsL(input);
-                ++aRightsCount;
-                }
-            }
-        else if (input.Right(3).CompareF(_L("dcf")) != 0)
-            {
-            output.Append(_L(".dcf"));
-            EncryptFileL(input, output, aMultiplier);
-            ++aEncryptedCount;
-            }
-
-        //restore paths
-        input.Delete(inputNameSize, input.Length()-1);
-        output.Delete(outputNameSize, output.Length()-1);
-        }
-
-    fs.Close();
-
-    TRequestStatus status;
-    CDcfRep* rep = CDcfRep::NewL();
-    CleanupStack::PushL(rep);
-    rep->RefreshDcf(status);
-    User::WaitForRequest( status );
-    CleanupStack::PopAndDestroy( rep );
-
-    delete files;
-
-    return (aEncryptedCount*aMultiplier + aRightsCount + aMessagesProcessed);
-    
-    }
-
-ContentAccess::CManager* GetCafDataL( TAgent& aAgent )
-    {
-    TPtr8 ptr(NULL, 0, 0);
-    RArray<TAgent> agents;
-    TRequestStatus status;
-    TInt i;
-
-    CleanupClosePushL( agents );
-    CManager* manager = CManager::NewLC();
-
-    manager->ListAgentsL( agents );
-
-    for (i = 0; i < agents.Count(); i++)
-        {
-        if (agents[i].Name().Compare(KWmDrmAgentName) == 0)
-            {
-            aAgent = agents[i];
-            break;
-            }
-        }
-    CleanupStack::Pop( manager );
-    CleanupStack::PopAndDestroy(); // agents
-    return manager;
-    }
-
-void DRMEncryptor::DeleteWmDrmRdbL()
-    {
-    // get the data part
-    ContentAccess::CManager* manager = NULL;
-    ContentAccess::TAgent agent;
-    TPtr8 ptr(NULL, 0, 0);
-    TPtrC8 ptr2;
-
-    // Find the caf agent and create manager
-    manager = GetCafDataL( agent );
-    CleanupStack::PushL( manager );
-
-    User::LeaveIfError(
-        manager->AgentSpecificCommand( agent,
-                                       (TInt)DRM::EWmDrmDeleteRights,
-                                       ptr2,
-                                       ptr) );
-    CleanupStack::PopAndDestroy( manager );
-    }
-
-void DRMEncryptor::deleteWmDrmDB()
-    {
-    TRAPD(err, DeleteWmDrmRdbL());
-    if(!err)
-        {
-        QMessageBox::information(this, tr("WMDRM DB"),tr("DRM rights deleted."));
-        }
-    else
-        {
-        QMessageBox::information(this, tr("WMDRM DB"),tr("Error deleting WMDRM rights."));
-        }
-    }
-
-void DRMEncryptor::deleteOmaDrmDB()
-    {
-    RDRMRightsClient client;
-    User::LeaveIfError(client.Connect());
-    client.DeleteAll();
-    client.Close();
-    }
-
-
-
-void DRMEncryptor::launchBrowser()
-    {
-    /*_LIT( KTestDrmFile, "c:\\data\\others\\sd_water003.dcf" );
-    TInt urlLength = 256;
-    TFileName fileName(KTestDrmFile);
-    RFile file;
-    RFs fs;
-    
-    User::LeaveIfError(fs.Connect());
-    TInt result = 0;
-    
-    result = file.Open(fs, fileName, EFileRead | EFileShareReadersOrWriters);    
-    
-    CData* content = CData::NewLC( file, KDefaultContentObject, EPeek );
-    
-    HBufC* rightsIssuerBuf = HBufC::NewLC( urlLength ); // Content issuer max URL length
-    TPtr rightsIssuer(const_cast<TUint16*>(rightsIssuerBuf->Ptr()), 0, urlLength);
-    
-    // Get value of rights-issuer header field
-    TInt error = content->GetStringAttribute( ERightsIssuerUrl, rightsIssuer );
-    rightsIssuer.TrimAll();
-    
-    rightsIssuer.Insert(0, _L("http://"));
-    
-    HBufC* finalUrl = rightsIssuer.AllocLC();
-    
-    DRM::CDrmBrowserLauncher::LaunchUrlL(*finalUrl);
-
-    CleanupStack::PopAndDestroy(3); // finalUrl, rightsIssuerBuf, content;*/
-    }
-
-/*
-void DRMEncryptorsetDRMClock()
-{
-   
-  double value1 = ui->lineEdit->text().toDouble(&bOK1);
-   double value2 = ui->lineEdit_2->text().toDouble(&bOK2);
-
-   ui->lineEdit_3->setText("");
-
-   if(bOK1 && bOK2)
-   {
-       if(value2 != 0)
-       {
-           double result = value1 / value2;
-           ui->lineEdit_3->setText(QString::number(result));
-       }
-       else
-       {
-           box.setText("Et voi jakaa nollalla");
-           box.exec();
-       }
-   }
-   else
-   {
-       box.setText("Virheellinen syöte");
-       box.exec();
-   }
-}
-
- void DRMEncryptoronDateTimeChanged(const QDateTime & datetime )
-    {
-    
-    }
-*/
-
-void DRMEncryptor::onTextChanged(const QString &)
-{
-    //ui->pushButton->setEnabled(ui->lineEdit->text() != "" && ui->lineEdit_2->text() != "");
-}
-
-DateTimeDialog::DateTimeDialog()
-    {
-    //iLayout = new QHBoxLayout;
-    QGridLayout *layout = new QGridLayout;
-    layout->setAlignment(Qt::AlignCenter);
-    setLayout(layout);
-    
-    iDateEdit = new QDateTimeEdit(QDate::currentDate());
-    iDateEdit->setAlignment(Qt::AlignHCenter);
-    iDateEdit->setDisplayFormat("yyyy.mm.dd hh.mm.ss");
-    iDateEdit->setWindowTitle("Set DRM Clock yyyy.MM.dd hh.mm.ss");
-    QPushButton *okButton = new QPushButton("OK", this);
-    QPushButton *cancelButton = new QPushButton("Cancel", this);
-    
-    layout->addWidget(iDateEdit);
-    layout->addWidget(okButton);
-    layout->addWidget(cancelButton);
-    
-    connect(okButton, SIGNAL(clicked()), this, SLOT(setDRMClock()));
-    connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
-    
-    //this->setLayout(iLayout);
-    okButton->show();
-    cancelButton->show();
-    this->show();
-    }
-
-DateTimeDialog::~DateTimeDialog()
-    {
-    
-    }
-
-void DateTimeDialog::setDRMClock()
-    {
-    DRM::CDrmServiceApi* service = NULL;
-    TBuf<5> buf;
-    TRAPD(err, service = DRM::CDrmServiceApi::NewL());
-    if(err!=KErrNone)
-        {
-        QMessageBox::information(this, tr("DRM Clock"),tr("Error creating CDrmServiceApi."));
-        buf.AppendNum(err);
-        QString string((QChar*)buf.Ptr(),buf.Length());
-        QMessageBox::information(this, tr("DRM Clock"),string);
-        delete service; // service
-        return;
-        }
-       
-    QString datetimeString = iDateEdit->dateTime().toString("yyyy.mm.dd hh.mm.ss");
-    
-    // datetime in format YYYYMMDD:HHMMSS for TTime
-    datetimeString.remove(QChar('.'));
-    datetimeString.replace(" ", ":");
-    datetimeString.append(".000000");
-    
-    TPtrC datetimePtr(reinterpret_cast<const TText*>(datetimeString.constData()));
-    HBufC *datetimeBuf = NULL;
-    TBuf<5> errorBuf;
-    TRAPD(errorCode, datetimeBuf = datetimePtr.AllocL());
-    if(errorCode!=KErrNone)
-        {
-        QMessageBox::information(this, tr("DRM Clock"),tr("Error in datetimePtr.AllocL."));
-        errorBuf.AppendNum(errorCode);
-        QString string((QChar*)buf.Ptr(),buf.Length());
-        QMessageBox::information(this, tr("DRM Clock"),string);
-        delete service;
-        delete datetimeBuf;
-        return;
-        }
-        
-    
-    TTime inputTime(*datetimeBuf);
-    TInt timezone = 0;
-    delete datetimeBuf;
-    
-    // Get secure time from service api to get timezone
-    DRMClock::ESecurityLevel level;
-    TInt error( KErrNone );
-
-    TTime currentTime;
-    error = service->GetSecureTime(currentTime, timezone, level);
-    
-    if(error != KErrNone)
-        {
-        return;
-        }
-    
-    error = service->UpdateSecureTime(inputTime, timezone);
-    
-    if(error != KErrNone)
-        {
-        return;
-        }
-    
-    delete service;
-    
-    QMessageBox::information(this, tr("DRM Clock"),tr("DRM Clock Set"));
-    }
-
--- a/commondrm/drmqtencryptor/main.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* 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 "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  DRM Encryption tool.
-*
-*/
-
-#include <QtGui/QApplication>
-#include "drmencryptor.h"
-
-int main(int argc, char *argv[])
-{
-    QApplication a(argc, argv);
-    DRMEncryptor w;
-    w.showMaximized();
-    return a.exec();
-}
--- a/commondrm/drmqtencryptor/qt_drmencryptor.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# 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 "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:  DRM Encryption tool project file.
-#
-#
-
-TEMPLATE = app
-TARGET = drmencryptor
-DEPENDPATH += .
-INCLUDEPATH += . 
-INCLUDEPATH += ../../inc
-
-symbian:
-{
-TARGET.CAPABILITY += DRM
-}
-
-# Input
-HEADERS += drmencryptor.h
-FORMS += drmencryptor.ui
-SOURCES += drmencyptor.cpp main.cpp
-LIBS += -lplatformenv -ldrmserviceapi -ldcfrep -ldrmparsers -lfbscli -lcone -lestor -lcaf -lefsrv -ldrmserverinterfaces
--- a/commondrm/drmrightsmanagerui/group/DRMRightsManager.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmrightsmanagerui/group/DRMRightsManager.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -59,6 +59,7 @@
 LIBRARY aknskins.lib commonui.lib servicehandler.lib
 LIBRARY dcfrep.lib caf.lib cafutils.lib
 LIBRARY ecom.lib
+LIBRARY commondialogs.lib
 LIBRARY directorylocalizer.lib
 
 LIBRARY drmparsers.lib
--- a/commondrm/drmrightsmanagerui/inc/DRMRightsMgrDetailsContainer.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmrightsmanagerui/inc/DRMRightsMgrDetailsContainer.h	Wed Sep 01 12:21:16 2010 +0100
@@ -33,8 +33,6 @@
 #include <caf/caftypes.h>
 #include <caf/rightsinfo.h>
 
-#include "DRMRightsMgrDetailsContainer.h"
-
 // FORWARD DECLARATIONS
 class CDRMRightsConstraints;
 
--- a/commondrm/drmrightsmanagerui/loc/DRMRightsManager.loc	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmrightsmanagerui/loc/DRMRightsManager.loc	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003 - 2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003 - 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"
@@ -22,7 +22,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_view_det        "Licence details"
+#define qtn_drm_mgr_view_det        "License details"
 
 //d:Command in options menu.
 //l:list_single_pane_t1_cp2
@@ -44,42 +44,42 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_restore         "Restore licences"
+#define qtn_drm_mgr_restore         "Restore licenses"
 
 //d:Caption and short caption. "Activ." stands for "Activation"
 //l:cell_app_pane_t1
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr                 "Licences"
+#define qtn_drm_mgr                 "Licenses"
 
 //d:Title pane text in main view
 //l:title_pane_t2/opt9
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_title_pane      "Licences"
+#define qtn_drm_mgr_title_pane      "Licenses"
 
 //d:Error message
 //l:popup_note_window
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_query_restart   "Unable to access licences. Phone will restart. Continue?"
+#define qtn_drm_mgr_query_restart   "Unable to access licenses. Phone will restart. Continue?"
 
 //d:Error message
 //l:popup_note_window
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_note_backup     "Unable to access licences. Licence list should be restored."
+#define qtn_drm_mgr_note_backup     "Unable to access licenses. License list should be restored."
 
 //d:Empty text in listbox
 //l:main_list_empty_pane
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_no_files        "no licences"
+#define qtn_drm_mgr_no_files        "no licenses"
 
 //d:Text to be used when related Media Object is not found in device
 //d:%N is a progressive number
@@ -103,14 +103,14 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_det_valid       "Licence is valid"
+#define qtn_drm_mgr_det_valid       "License is valid"
 
 //d:Possible second line for first entry of Details View listbox
 //l:list_double_pane_t2_cp2
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_det_exp         "Licence expired"
+#define qtn_drm_mgr_det_exp         "License expired"
 
 //d:First line of 'Content in phone' entry in Details View listbox.
 //d:It says if related Media Object is in device or not. If Media object is in device and not in a private
@@ -575,7 +575,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_auto_del_romo   "If you delete licence, %U will also be deleted. Continue?"
+#define qtn_drm_mgr_auto_del_romo   "If you delete license, %U will also be deleted. Continue?"
 
 //d:Confirmation query text used when deleting a Right Object
 //d:%U name of the file
@@ -583,7 +583,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_del_single_ro   "If you delete licence, file %U cannot be used. Continue?"
+#define qtn_drm_mgr_del_single_ro   "If you delete license, file %U cannot be used. Continue?"
 
 //d:Confirmation query text proposed to ask if also related file should be deleted
 //d:%U name of the file
@@ -599,7 +599,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_wait_del_one_ro "Deleting licence for %U"
+#define qtn_drm_mgr_wait_del_one_ro "Deleting license for %U"
 
 //d:Text during deletion
 //d:%U name of the file
@@ -607,7 +607,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_wait_del_roco   "Deleting %U and licence"
+#define qtn_drm_mgr_wait_del_roco   "Deleting %U and license"
 
 //d:Notification after deletion
 //d:%U name of the file
@@ -615,7 +615,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_deleted_one_ro  "Licence for %U deleted"
+#define qtn_drm_mgr_deleted_one_ro  "License for %U deleted"
 
 //d:Notification after deletion
 //d:%U name of the file
@@ -623,7 +623,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_deleted_roco    "Licence and %U deleted"
+#define qtn_drm_mgr_deleted_roco    "License and %U deleted"
 
 //d:Confirmation query text
 //d:%U name of the file
@@ -639,7 +639,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_note_ro_removed "Unable to access licence"
+#define qtn_drm_mgr_note_ro_removed "Unable to access license"
 
 
 // NEW STRINGS
@@ -649,14 +649,14 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_list_valid_keys     "Valid licences"
+#define qtn_drm_mgr_list_valid_keys     "Valid licenses"
 
 //d:Second item data text of Main View
 //l:list_single_large_graphic_pane_t1_cp2
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_list_invalid_keys   "Invalid licences"
+#define qtn_drm_mgr_list_invalid_keys   "Invalid licenses"
 
 //d:Third item data text of Main View
 //l:list_single_large_graphic_pane_t1_cp2
@@ -670,7 +670,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_del_group_ro_descr  "After deleting the licence, several files may not be used"
+#define qtn_drm_mgr_del_group_ro_descr  "After deleting the license, several files may not be used"
 
 //d:Title of the list query
 //l:heading_pane_t1
@@ -691,14 +691,14 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_delete_group_ro     "Delete licence to the files"
+#define qtn_drm_mgr_delete_group_ro     "Delete license to the files"
 
 //d:Notification after deletion
 //l:popup_note_window
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_deleted_ro          "Licence deleted"
+#define qtn_drm_mgr_deleted_ro          "License deleted"
 
 //d:Data query prompt text When renaming an item
 //l:popup_query_data_window
@@ -713,21 +713,21 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_title_valid_keys    "Valid licences"
+#define qtn_drm_mgr_title_valid_keys    "Valid licenses"
 
 //d:Title pane text for Invalid keys View
 //l:title_pane_t2/opt9
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_title_invalid_keys  "Invalid licences"
+#define qtn_drm_mgr_title_invalid_keys  "Invalid licenses"
 
 //d:Title pane text for Keys not in use View
 //l:title_pane_t2/opt9
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_title_keys_not_used "Licences not in use"
+#define qtn_drm_mgr_title_keys_not_used "Licenses not in use"
 
 //d:Empty text in listbox
 //l:main_list_empty_pane
@@ -744,7 +744,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_name_group_key      "Group licence %N"
+#define qtn_drm_mgr_name_group_key      "Group license %N"
 
 //d:Menu item used in Group view to see the details of a Media Object.
 //l:list_single_pane_t1_cp2
@@ -786,7 +786,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_det_ro_number           "Licence %0N/%1N"
+#define qtn_drm_det_ro_number           "License %0N/%1N"
 
 //d:Possible second line for first entry (qtn_drm_mgr_det_stat) of Details View
 //d:listbox, when the activation key is missing.
@@ -794,7 +794,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_det_invalid         "Licence is invalid"
+#define qtn_drm_mgr_det_invalid         "License is invalid"
 
 //d:Possible second line for first entry (qtn_drm_det_ro_number) of Details
 //d:View listbox, when the activation key is not yet valid.
@@ -802,7 +802,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_det_not_valid_yet   "Licence not valid yet"
+#define qtn_drm_mgr_det_not_valid_yet   "License not valid yet"
 
 //d:Command in options menu, used to rename a Group key.
 //l:list_single_pane_t1_cp2
@@ -838,7 +838,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_info_unable_delete  "Licence lists are updated. Unable to delete during updating."
+#define qtn_drm_mgr_info_unable_delete  "License lists are updated. Unable to delete during updating."
 
 //d:Info popup for an activation key with future rights. %U is the date when
 //d:the activation key will start to be valid
@@ -846,7 +846,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_info_popup_future   "Licence is valid from %U"
+#define qtn_drm_mgr_info_popup_future   "License is valid from %U"
 
 //d:Possible first line for fourth entry of Details View listbox
 //d:Second line is qtn_drm_mgr_det_inter or qtn_drm_mgr_det_inter_two, meaning
@@ -862,7 +862,7 @@
 //l:popup_note_window
 //r:3.0
 //
-#define qtn_drm_mgr_query_enable_keys "Restore licences and enable on this phone?"
+#define qtn_drm_mgr_query_enable_keys "Restore licenses and enable on this phone?"
 
 //d:Progress dialog text
 //d:Label for UDT progress note until HTTP connection has been estabilished
@@ -883,7 +883,7 @@
 //l:popup_note_wait_window
 //r:3.0
 //
-#define qtn_drm_mgr_prgr_restoring_keys "Restoring licences"
+#define qtn_drm_mgr_prgr_restoring_keys "Restoring licenses"
 
 
 //d:Text for password editor in multiline query
@@ -919,7 +919,7 @@
 //l:popup_note_window
 //r:3.0
 //
-#define qtn_drm_mgr_info_no_backup_ros "No licences to restore"
+#define qtn_drm_mgr_info_no_backup_ros "No licenses to restore"
 
 //d:Information note layout
 //d:Server unavailable
@@ -933,7 +933,7 @@
 //w:
 //r:3.1
 //
-#define qtn_drm_mgr_options_get_new_key "Get new licence"
+#define qtn_drm_mgr_options_get_new_key "Get new license"
 
 //d:Confirmation query text
 //d:Shown when user has selected option Get new key, but valid, unlimited rights exist
@@ -941,7 +941,7 @@
 //w:
 //r:3.1
 //
-#define qtn_drm_mgr_query_unlimited_ro "Licence is valid for unlimited time. Get still new licence?"
+#define qtn_drm_mgr_query_unlimited_ro "License is valid for unlimited time. Get still new license?"
 
 //d:First line of an entry of Details View listbox, for an individual constraint.
 //d:Second line is qtn_drm_det_sim_allowed or qtn_drm_det_sim_not_allowed.
@@ -1023,7 +1023,7 @@
 //w:
 //r:9.1
 //
-#define qtn_drm_details_valid       "Licence is valid"
+#define qtn_drm_details_valid       "License is valid"
 
 //d:Possible second line for first entry of Details View listbox
 //l:list_double_pane_t2_cp2
@@ -1037,7 +1037,7 @@
 //w:
 //r:9.1
 //
-#define qtn_drm_details_no_licence_available       "No licence available"
+#define qtn_drm_details_no_licence_available       "No license available"
 
 //d:First line of third entry of Details View listbox
 //d:It reports if it is possible to send Media Object or not.
@@ -1260,4 +1260,4 @@
 //w:
 //r:9.1
 //
-#define qtn_drm_mgr_det_ex_unlimited   "Unlimited"
+#define qtn_drm_mgr_det_ex_unlimited   "Unlimited"
\ No newline at end of file
--- a/commondrm/drmrightsmanagerui/src/DRMRightsMgrAppUi.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmrightsmanagerui/src/DRMRightsMgrAppUi.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1096,7 +1096,7 @@
                 if ( i == 0 )
                     {
                     // No need to check if the parent UID is a duplicate
-                    parentUidList.AppendL ( permissionList[i]->iParentUID );
+                    parentUidList.Append( permissionList[i]->iParentUID );
                     }
                 else 
                     {
@@ -1132,7 +1132,7 @@
             for ( k = 0; k < permissionTempList.Count(); k++ ) 
                 {
                 // Store the pointer to the main list of permissions
-                permissionList.AppendL ( permissionTempList[k] );
+                permissionList.Append( permissionTempList[k] );
                 }    
                     
             // Close the temporary pointer array so that the referenced 
--- a/commondrm/drmrightsmanagerui/src/DRMRightsMgrDetailsContainer.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmrightsmanagerui/src/DRMRightsMgrDetailsContainer.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-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"
@@ -841,10 +841,8 @@
                                     TInt aIntYrs, TInt aIntMon, TInt aIntDay,
                                     TInt aIntHrs, TInt aIntMin, TInt aIntSec )
     {
-    // Only the two most meaningful data will be showed
-    TInt numOfData = 0;
-
-    CDesCArrayFlat* strings = new ( ELeave ) CDesCArrayFlat( 2 );
+    
+    CDesCArrayFlat* strings = new ( ELeave ) CDesCArrayFlat( 1 );
     CleanupStack::PushL( strings );
 
     if ( aIntYrs > 0 )
@@ -855,10 +853,8 @@
                               R_QTN_DRM_NBR_OF_YEARS_TWO_FOUR,
                               R_QTN_DRM_NBR_OF_YEARS_FIVE_ZERO,
                               strings );
-        numOfData++;
         }
-
-    if ( aIntMon > 0 )
+    else if ( aIntMon > 0 )
         {
         //  Second type not provided because 11 is the maximum
         AddSinglePartOfTimeL( aIntMon,
@@ -867,11 +863,8 @@
                               R_QTN_DRM_NBR_OF_MONTHS_TWO_FOUR,
                               R_QTN_DRM_NBR_OF_MONTHS_FIVE_ZERO,
                               strings );
-        numOfData++;
         }
-
-    // Only if years or months were missing
-    if ( aIntDay > 0 && numOfData < 2 )
+    else if ( aIntDay > 0 )
         {
         AddSinglePartOfTimeL( aIntDay,
                               R_QTN_DRM_NBR_OF_DAYS_ONE,
@@ -879,10 +872,8 @@
                               R_QTN_DRM_NBR_OF_DAYS_TWO_FOUR,
                               R_QTN_DRM_NBR_OF_DAYS_FIVE_ZERO,
                               strings );
-        numOfData++;
         }
-
-    if ( aIntHrs > 0 && numOfData < 2 )
+    else if ( aIntHrs > 0 )
         {
         AddSinglePartOfTimeL( aIntHrs,
                               R_QTN_DRM_NBR_OF_HOURS_ONE,
@@ -890,10 +881,8 @@
                               R_QTN_DRM_NBR_OF_HOURS_TWO_FOUR,
                               R_QTN_DRM_NBR_OF_HOURS_FIVE_ZERO,
                               strings );
-        numOfData++;
         }
-
-    if ( aIntMin > 0 && numOfData < 2 )
+    else if ( aIntMin > 0 )
         {
         AddSinglePartOfTimeL( aIntMin,
                               R_QTN_DRM_NBR_OF_MINS_ONE,
@@ -901,11 +890,9 @@
                               R_QTN_DRM_NBR_OF_MINS_TWO_FOUR,
                               R_QTN_DRM_NBR_OF_MINS_FIVE_ZERO,
                               strings );
-        numOfData++;
         }
-
     // If interval is 0, then it shows "0 seconds" anyway
-    if ( ( aIntSec > 0 && numOfData < 2 ) || numOfData == 0 )
+    else
         {
         AddSinglePartOfTimeL( aIntSec,
                               R_QTN_DRM_NBR_OF_SECS_ONE,
@@ -913,21 +900,10 @@
                               R_QTN_DRM_NBR_OF_SECS_TWO_FOUR,
                               R_QTN_DRM_NBR_OF_SECS_FIVE_ZERO,
                               strings );
-        numOfData++;
         }
 
-    HBufC* stringHolder;
-    if ( numOfData == 1 )
-        {
-        stringHolder = StringLoader::LoadL( R_QTN_DRM_MGR_DET_INTER,
+    HBufC* stringHolder = StringLoader::LoadL( R_QTN_DRM_MGR_DET_INTER,
                                             strings->MdcaPoint(0), iEikonEnv );
-        }
-    else
-        {
-        stringHolder = StringLoader::LoadL( R_QTN_DRM_MGR_DET_INTER_TWO,
-                                            *strings, iEikonEnv );
-        }
-
     CleanupStack::PopAndDestroy( strings );
 
     return stringHolder;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/data/102750CC.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,46 @@
+/*
+* 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 "Eclipse Public License v1.0"
+* which accompanies 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 plugin resource file for DRMSettingsPlugin.
+*
+*/
+
+#include <ecom/registryinfo.rh>
+
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid     = 0x102750CC;
+	interfaces  = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid   = 0x10207236; // UID for CGSPluginInterface
+			implementations = 
+				{ 
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid  = 0x102750CD;
+					version_no          = 1;
+					display_name        = "DRM Settings Plugin";
+					default_data        = "0x1020743A";
+					opaque_data         = "2";//Order number
+					}
+				};
+			}
+		};
+	}
+
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/data/drmsettingspluginrsc.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,533 @@
+/*
+* Copyright (c) 2006 - 2007 Nokia Corporation and/or 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 file for DRMSettinsPlugin
+*
+*/
+
+
+
+//  RESOURCE IDENTIFIER
+NAME    DRMS // 4 letter ID
+
+//  INCLUDES
+#include    <eikon.rh>
+#include    <uikon.rh>
+#include    <avkon.rsg>
+#include    <avkon.rh>
+#include    <avkon.mbg>
+#include    <EIKCORE.rsg>
+#include    <eikon.rsg>
+#include    <appinfo.rh>
+#include    <avkon.loc>
+#include    <AvkonIcons.hrh>
+#include    <data_caging_paths_strings.hrh>
+#include    <gs.loc>
+#include    <drmsettingsplugin.loc>
+
+#include    "drmsettingsplugin.hrh"
+#include    "drmsettingsplugin.rh"
+
+
+// CONSTANTS
+
+//  RESOURCE DEFINITIONS
+
+RESOURCE RSS_SIGNATURE
+    {
+    }
+
+
+RESOURCE TBUF
+    {
+    buf="DRMS";
+    }
+
+//----------------------------------------------------
+//
+//    EIK_APP_INFO
+//    It contains application information.
+//
+//----------------------------------------------------
+//
+RESOURCE EIK_APP_INFO
+    {
+    }
+
+
+
+//----------------------------------------------------
+//  r_drm_settings_view_caption
+//
+// Caption for DRM Settings plugin
+//----------------------------------------------------
+//
+RESOURCE TBUF r_drm_settings_view_caption
+    {
+    buf = qtn_set_protected_content;
+    }
+
+
+//----------------------------------------------------
+//
+//    r_drm_settings_view_title
+//    Title of DRM Settings view
+//
+//----------------------------------------------------
+//
+RESOURCE TITLE_PANE r_drm_settings_view_title
+    {
+    txt = qtn_set_protected_content;
+    }
+
+
+//----------------------------------------------------
+//
+//    r_drm_softkeys_options_back_change
+//    Text association with MSK ( CHANGE )
+//
+//----------------------------------------------------
+//
+RESOURCE CBA r_drm_softkeys_options_back_change
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id=EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id=EAknSoftkeyBack;
+            txt = text_softkey_back;
+            },
+        CBA_BUTTON
+            {
+            id=EDRMSettingsCmdAppChangeMSK;
+            txt = qtn_msk_change;
+            }
+        };
+    }
+
+
+
+
+//----------------------------------------------------
+//
+//    r_drm_settings_view
+//    DRM Settings view.
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_VIEW r_drm_settings_view
+    {
+    menubar = r_drm_settings_menubar_change_exit;
+    cba = r_drm_softkeys_options_back_change;
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// r_drm_settings_menubar_change_exit
+// Menu with 'change' and 'exit' items.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_BAR r_drm_settings_menubar_change_exit
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_drm_settings_menu_item_exit;
+            },
+        MENU_TITLE
+            {
+            menu_pane = r_drm_settings_menu_item_change;
+            }
+        };
+    }
+
+
+    // -----------------------------------------------------------------------------
+    //
+    // r_drm_settings_menu_item_exit
+    // Options menu items 'Help' and 'Exit'. Used instead of plain 'Exit' when help
+    // is wanted to be shown in UI.
+    //
+    // -----------------------------------------------------------------------------
+    //
+    RESOURCE MENU_PANE r_drm_settings_menu_item_exit
+        {
+        items =
+            {
+            MENU_ITEM
+                {
+                command = EAknCmdHelp;
+                txt = qtn_options_help;
+                },
+            MENU_ITEM
+                {
+                command = EAknCmdExit;
+                txt = qtn_options_exit;
+                }
+            };
+        }
+
+
+// -----------------------------------------------------------------------------
+//
+// r_drm_settings_menu_item_change
+// Change item.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_drm_settings_menu_item_change
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EDRMSettingsCmdAppChange;
+            txt = qtn_set_options_change;
+            flags = EEikMenuItemAction;
+            }
+        };
+    }
+
+
+//----------------------------------------------------
+//
+//    r_drm_settings_lbx
+//    DRM Settings view's listbox.
+//
+//----------------------------------------------------
+//
+RESOURCE DRM_SETTINGS_FEATURE_ARRAY r_drm_settings_lbx
+    {
+    items =
+        {
+#ifdef __DRM_OMA2
+#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION
+        DRM_SETTINGS_FEATURE
+            {
+            txt = " \t"qtn_set_automatic_activation"\t\t";
+            item = EDRMSettingsIdAutomaticActivation;
+            },
+#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION
+
+#ifdef RD_DRM_METERING
+        DRM_SETTINGS_FEATURE
+            {
+            txt = " \t"qtn_drm_set_usage_reporting"\t\t";
+            item = EDRMSettingsIdUsageReporting;
+            },
+#endif // RD_DRM_METERING
+
+        DRM_SETTINGS_FEATURE
+            {
+            txt = " \t"qtn_set_transaction_tracking"\t\t";
+            item = EDRMSettingsIdTransactionTracking;
+            },
+#endif // __DRM_OMA2
+
+        DRM_SETTINGS_FEATURE
+            {
+            txt = " \t"qtn_drm_set_license_deletion"\t\t";
+            item = EDRMSettingsIdWMDRMLicenseDeletion;
+            }
+        };
+    }
+
+//----------------------------------------------------
+//
+//    r_drm_settings_lbx_no_oma2
+//    DRM Settings view's listbox when OMA DRM version
+//    2 is configured not to be supported.
+//
+//----------------------------------------------------
+//
+RESOURCE DRM_SETTINGS_FEATURE_ARRAY r_drm_settings_lbx_no_oma2
+    {
+    items =
+        {        
+        DRM_SETTINGS_FEATURE
+            {
+            txt = " \t"qtn_drm_set_license_deletion"\t\t";
+            item = EDRMSettingsIdWMDRMLicenseDeletion;
+            }
+        };    
+    }
+
+
+
+//----------------------------------------------------
+//
+//    r_drm_settings_setting_listbox
+//    Common listbox editor resource for setting pages.
+//
+//----------------------------------------------------
+//
+RESOURCE LISTBOX r_drm_settings_setting_listbox
+    {
+    flags = EEikListBoxMultipleSelection;
+    }
+
+
+//----------------------------------------------------
+//
+//    r_ttracking_setting_page
+//    Transaction tracking setting page.
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_ttracking_setting_page
+    {
+    number = EAknSettingPageNoOrdinalDisplayed;
+    label = qtn_drm_set_popup_trans_track;
+    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
+    type = EAknSetListBox;
+    editor_resource_id = r_drm_settings_setting_listbox;
+    }
+
+
+//----------------------------------------------------
+//
+//    r_ttracking_setting_page_lbx
+//    Transaction tracking setting page's listbox.
+//
+//----------------------------------------------------
+//
+RESOURCE ARRAY r_ttracking_setting_page_lbx
+    {
+    items =
+        {
+        LBUF
+            {
+            txt = qtn_set_transact_tracking_on;
+            },
+        LBUF
+            {
+            txt = qtn_set_transact_tracking_off;
+            }
+        };
+    }
+
+
+//----------------------------------------------------
+//  r_drm_settings_ttracking_on
+//
+// DRM Settings text for Transaction tracking "On"
+//----------------------------------------------------
+//
+RESOURCE TBUF r_drm_settings_ttracking_on
+    {
+    buf = qtn_set_transact_tracking_on;
+    }
+
+
+//----------------------------------------------------
+//  r_drm_settings_ttracking_off
+//
+// DRM Settings text for Transaction tracking "Off"
+//----------------------------------------------------
+//
+RESOURCE TBUF r_drm_settings_ttracking_off
+    {
+    buf = qtn_set_transact_tracking_off;
+    }
+
+
+//----------------------------------------------------
+//
+//    r_autom_activ_setting_page
+//    Automatic activation setting page.
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_autom_activ_setting_page
+    {
+    number = EAknSettingPageNoOrdinalDisplayed;
+    label = qtn_drm_set_popup_autom_activat;
+    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
+    type = EAknSetListBox;
+    editor_resource_id = r_drm_settings_setting_listbox;
+    }
+
+
+//----------------------------------------------------
+//
+//    r_autom_activ_setting_page_lbx
+//    Automatic activation setting page's listbox.
+//
+//----------------------------------------------------
+//
+RESOURCE ARRAY r_autom_activ_setting_page_lbx
+    {
+    items =
+        {
+        LBUF
+            {
+            txt = qtn_set_automat_act_allowed;
+            },
+        LBUF
+            {
+            txt = qtn_set_automat_act_not_allowed;
+            }
+        };
+    }
+
+
+//----------------------------------------------------
+//  r_drm_settings_autom_activ_on
+//
+// DRM Settings text for Automatic activation "Allowed"
+//----------------------------------------------------
+//
+RESOURCE TBUF r_drm_settings_autom_activ_on
+    {
+    buf = qtn_set_automat_act_allowed;
+    }
+
+
+//----------------------------------------------------
+//  r_drm_settings_autom_activ_off
+//
+// DRM Settings text for Automatic activation "Not allowed"
+//----------------------------------------------------
+//
+RESOURCE TBUF r_drm_settings_autom_activ_off
+    {
+    buf = qtn_set_automat_act_not_allowed;
+    }
+
+// ---------------------------------------------------------
+//
+//      r_drm_settings_metering_checkbox_page
+//      Used in checkbox list.
+//
+// ---------------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_drm_settings_metering_checkbox_page
+    {
+    number = EAknSettingPageNoOrdinalDisplayed;
+    label = qtn_drm_set_popup_usage_report;
+    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__MARK;
+    type =  EAknSetListBox;
+    editor_resource_id = r_drm_settings_metering_checkbox_list;
+    invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL;
+    }
+
+// ---------------------------------------------------------
+//
+//      r_drm_settings_metering_checkbox_list
+//      Used in checkbox list.
+//
+// ---------------------------------------------------------
+//
+RESOURCE AVKON_MULTISELECTION_LIST r_drm_settings_metering_checkbox_list
+    {
+    }
+
+//------------------------------------------------------------------------------
+//
+//    r_usage_reporting_list_title
+//    Title text for usage reporting listbox
+//
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_usage_reporting_list_title
+    {
+    buf=qtn_drm_set_popup_usage_report;
+    }
+
+
+//------------------------------------------------------------------------------
+//
+//    r_usage_reporting_list_empty
+//    Empty text for usage reporting listbox
+//
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_usage_reporting_list_empty
+    {
+    buf=qtn_drm_set_pane_no_providers;
+    }
+
+
+//------------------------------------------------------------------------------
+//
+//    r_drm_set_several_services
+//    'Several' value for 'Allow usage reporting for' field
+//
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_drm_set_several_services
+    {
+    buf=qtn_drm_set_several_services;
+    }
+
+
+//------------------------------------------------------------------------------
+//
+//    r_drm_set_usage_report_none
+//    'None' value for 'Allow usage reporting for' field
+//
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_drm_set_usage_report_none
+    {
+    buf=qtn_drm_set_usage_report_none;
+    }
+
+
+//------------------------------------------------------------------------------
+//
+//    r_drm_confirmation_query_metering
+//    Confirmation query dialog.
+//
+//------------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_drm_confirmation_query_metering
+    {
+    flags=EGeneralQueryFlags;
+    buttons=R_AVKON_SOFTKEYS_YES_NO__YES;
+    items=
+        {
+        DLG_LINE
+            {
+            type=EAknCtQuery;
+            id=EGeneralQuery;
+            control= AVKON_CONFIRMATION_QUERY
+                {
+                layout = EConfirmationQueryLayout;
+                label = " ";
+                };
+            }
+        };
+    }
+
+//------------------------------------------------------------------------------
+//
+//    r_drm_conf_query_metering
+//    Confirmation query text.
+//
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_drm_conf_query_metering
+    {
+    buf=qtn_drm_conf_query_metering;
+    }
+
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/group/drmsettingsplugin.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,84 @@
+/*
+* 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 "Eclipse Public License v1.0"
+* which accompanies 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 file.
+*
+*/
+
+
+#include <data_caging_paths.hrh>    // For RESOURCE_FILES_DIR
+#include <platform_paths.hrh>
+
+CAPABILITY          CAP_ECOM_PLUGIN
+TARGET              drmsettingsplugin.dll
+TARGETTYPE          PLUGIN
+UID                 0x10009D8D 0x102750CC
+VENDORID            VID_DEFAULT
+
+
+SOURCEPATH      ../src
+SOURCE          drmsettingspluginimplementationtable.cpp
+SOURCE          drmsettingsplugin.cpp
+SOURCE          drmsettingsplugincontainer.cpp
+SOURCE          drmsettingsmodel.cpp
+SOURCE          drmsettingsusagecheckbox.cpp
+SOURCE          drmsettingsusagelist.cpp
+
+//User include paths
+USERINCLUDE     ../inc
+USERINCLUDE     ../data // For *.rh
+USERINCLUDE     ../../../inc   // ADo level inc dir
+USERINCLUDE     ../../../omadrm/drmengine/roapstorage/inc
+
+//System include paths
+// Default system include paths for middleware layer modules.
+// App layer include path needed for help launcher
+APP_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../data
+
+START RESOURCE  102750CC.rss
+TARGET          drmsettingsplugin.rsc
+END
+
+START RESOURCE  drmsettingspluginrsc.rss
+HEADER
+TARGETPATH      RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END
+
+
+LIBRARY   aknskins.lib          // for enhanced skinning
+LIBRARY   aknskinsrv.lib        // for enhanced skinning
+LIBRARY   avkon.lib
+LIBRARY   bafl.lib
+LIBRARY   centralrepository.lib
+LIBRARY   commonengine.lib      // For RConeResourceLoader
+LIBRARY   cone.lib
+LIBRARY   ecom.lib
+LIBRARY   efsrv.lib
+LIBRARY   egul.lib
+LIBRARY   eikcoctl.lib
+LIBRARY   eikcore.lib
+LIBRARY   euser.lib
+LIBRARY   featmgr.lib           // Feature manager
+LIBRARY   flogger.lib           // For GSLogger
+LIBRARY   gsecomplugin.lib
+LIBRARY   gsframework.lib       // For base classes
+LIBRARY   gslistbox.lib         // For CGSListBoxItemTextArray
+LIBRARY   hlplch.lib            // for "Help" options menu
+LIBRARY   drmserverinterfaces.lib  // Roap storage
+LIBRARY   charconv.lib
+
+SMPSAFE
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/inc/drmsettingsmodel.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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:  DRMSettinsPlugin model.
+*
+*/
+
+#ifndef  DRMSETTINGSMODEL_H
+#define  DRMSETTINGSMODEL_H
+
+// INCLUDES
+#include    <centralrepository.h>
+#include    <e32property.h>
+#include    "RoapStorageClient.h"
+
+// FORWARD DECLARATIONS
+class CDRMRIContext;
+
+// CONSTANTS
+const TInt KDRMTransactionTrackingDisabled = 0;
+const TInt KDRMTransactionTrackingEnabled = 1;
+
+const TInt KDRMAutomaticActivationNotAllowed = 0;
+const TInt KDRMAutomaticActivationAllowed = 1;
+
+
+// CLASS DEFINITIONS
+
+/**
+*  CDRMSettingsModel is the model class of DRMSettingsPlugin.
+*  It provides functions to get and set setting values.
+*/
+class   CDRMSettingsModel : public CBase
+    {
+
+    public:  // Constructor and destructor
+        /**
+        * Two-phased constructor
+        */
+        static CDRMSettingsModel* NewL();
+
+        /**
+        * Destructor
+        */
+        ~CDRMSettingsModel();
+
+    public: // New
+
+        /**
+        * Get transaction tracking state
+        * @return KDRMTransactionTrackingDisabled
+        *         KDRMTransactionTrackingEnabled
+        */
+        TInt TransactionTrackingStateL();
+
+        /**
+        * Set transaction tracking state
+        * @param aValue updated value
+        */
+        void SetTransactionTrackingStateL( TInt aValue );
+
+        /**
+        * Get automatic activation state
+        * @return KDRMAutomaticActivationNotAllowed
+        *         KDRMAutomaticActivationAllowed
+        */
+        TInt AutomaticActivationStateL();
+
+        /**
+        * Set automatic activation state
+        * @param aValue updated value
+        */
+        void SetAutomaticActivationStateL( TInt aValue );
+
+        /**
+        * Get usage reporting state
+        * @return count of services for which reporting is allowed
+        */
+        TInt UsageReportingCount();
+
+        /**
+        * Get RI alias
+        *
+        * @param aIndex : Index of the RI context
+        *
+        * @return RI alias name or RI url if no alias available
+        */
+        HBufC* GetSingleRIAliasL( TInt aIndex );
+
+        /**
+        * Get the first RI alias, where metering is allowed
+        * @return RI alias name or RI url if no alias available
+        */
+        HBufC* GetFirstAllowedMeteringRIAliasL();
+
+        /**
+        * Get number of RI contexts
+        * @return number of RIContexts
+        */
+        TInt GetRiContextCount();
+
+        /**
+        * Get metering status of RI Context
+        *
+        * @param aIndex : Index of the RI context
+        *
+        * @return Status of metering
+        */
+        TBool IsMeteringAllowed( TInt aIndex );
+
+        /**
+        * Find out if metering is allowed for all RI Contexts
+        *
+        * @return Status of metering
+        */
+        TBool IsMeteringAllowedForAll();
+
+        /**
+        * Sets the value for metering to be enabled or disabled
+        *
+        * @param aIndex : Index of the RI context
+        * @param aIsAllowed : ETrue if set to allowed, EFalse if not allowed
+        */
+        void SetMeteringStatus( TInt aIndex, TBool aIsAllowed );
+
+        /**
+        * Save the changes done to RI Contexs
+        */
+        void SaveMeteringChanges();
+
+    private: // Private constructors
+
+        /**
+        * Default C++ contructor
+        */
+        CDRMSettingsModel();
+
+        /**
+        * Symbian OS default constructor
+        * @return void
+        */
+        void ConstructL();
+
+    private: // Data
+
+        // DRM Settings Central Repository.
+        CRepository* iDRMSettingsRepository;
+
+        // Roap storage client
+        Roap::RRoapStorageClient* iRoapStorageClient;
+
+        // List of service providers with which device has been registered
+        RPointerArray<CDRMRIContext> iRIContextList;
+
+    };
+
+#endif // DRMSETTINGSMODEL_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/inc/drmsettingsplugin.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,193 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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:  View for DRMSettingsPlugin.
+*
+*/
+
+
+#ifndef DRMSETTINGSPLUGIN_H
+#define DRMSETTINGSPLUGIN_H
+
+// INCLUDES
+#include <aknsettingpage.h>
+#include <ConeResLoader.h>
+#include <gsplugininterface.h>
+#include <gsfwviewuids.h>
+#include <gsbaseview.h>
+#include <eikmenup.h>
+
+#include "drmsettingsplugincontainer.h"
+
+//CONSTANTS
+const TUid KDRMSettingsPluginUid = { 0x1020750CC };
+
+// Listbox item indexes of the transcaction tracking setting items
+const TInt KDRMTTItemIndexDisabled  = 1;
+const TInt KDRMTTItemIndexEnabled   = 0;
+
+// Listbox item indexes of the automatic activation setting items
+const TInt KDRMAAItemIndexDisabled  = 1;
+const TInt KDRMAAItemIndexEnabled   = 0;
+
+// FORWARD DECLARATIONS
+class CAknViewAppUi;
+class CDRMSettingsPluginContainer;
+class CDRMSettingsModel;
+
+// CLASS DECLARATION
+
+/**
+*  CDRMSettingsPlugin view class
+*
+*  View class for DRM Settings plugin
+*/
+class CDRMSettingsPlugin : public CGSBaseView
+    {
+
+    public: // Constructors and destructor
+
+        /**
+        * Symbian OS two-phased constructor
+        * @return connection view.
+        */
+        static CDRMSettingsPlugin* NewL( TAny* aInitParams );
+
+        /**
+        * Destructor.
+        */
+        ~CDRMSettingsPlugin();
+
+    private:
+        /**
+        * Symbian OS default constructor.
+        *
+        */
+        void ConstructL();
+
+        /**
+        * C++ default constructor.
+        */
+        CDRMSettingsPlugin();
+
+    public: // from CAknView
+
+        /**
+        * Returns view id.
+        * @return An unsigned integer (view id).
+        */
+        TUid Id() const;
+
+    public: // from MEikCommandObserver
+
+        /**
+        * Handles commands.
+        * @param aCommand Command to be handled.
+        *
+        */
+        void HandleCommandL( TInt aCommand );
+
+    public: //new
+
+        /**
+        * Updates listbox's item's value.
+        * @param aItemId An item which is updated.
+        *
+        */
+        void UpdateListBoxL( TInt aItemId );
+
+    public: // From CGSPluginInterface
+
+        /**
+        * @see CGSPluginInterface header file.
+        */
+        void GetCaptionL( TDes& aCaption ) const;
+
+        /**
+        * @see CGSPluginInterface header file.
+        */
+        TInt PluginProviderCategory() const;
+
+        /**
+        * @see CGSPluginInterface header file.
+        */
+        TBool Visible() const;
+
+    private: // from CGSBaseView
+        //
+        void NewContainerL();
+        //
+        void HandleListBoxSelectionL();
+
+    private: // new
+
+        /**
+        * Update transaction tracking setting
+        */
+        void UpdateTransactionTrackingSettingL( TBool aShowSettingPage );
+
+        /**
+        * Update automatic activation setting
+        */
+        void UpdateAutomaticActivationSettingL( TBool aShowSettingPage );
+
+        /**
+        * Update usage reporting setting
+        */
+        void UpdateUsageReportingSettingL();
+
+        /**
+        * Delete WMDRM license store
+        */
+        void DoWMDRMLicenseDeletionL();
+
+        /**
+        * Display setting page
+        * @param aTTState Current state. This will be updated.
+        * @return ETrue if value is updated.
+        *         EFalse if value is not updated.
+        */
+        TBool ShowTransactionTrackingSettingPageL( TInt& aTTState );
+
+        /**
+        * Display setting page
+        * @param aAAState Current state. This will be updated.
+        * @return ETrue if value is updated.
+        *         EFalse if value is not updated.
+        */
+        TBool ShowAutomaticActivationSettingPageL( TInt& aAAState );
+
+        /**
+        * Get DRMSettingsPlugin's ccontainer.
+        */
+        CDRMSettingsPluginContainer* Container();
+
+    protected: // From MEikMenuObserver
+
+        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+    private: // data
+        //resource loader
+        RConeResourceLoader iResourceLoader;
+
+        TBool iWmdrmSupported;
+        
+        // Oma drm 2 run-time support
+        TBool iOmadrm2Supported;
+        
+    };
+
+#endif //DRMSETTINGSPLUGIN_H
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/inc/drmsettingsplugin.hrh	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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:  Contains common definitions for menu id:s
+*
+*/
+
+
+#ifndef DRMSETTINGSPLUGIN_HRH
+#define DRMSETTINGSPLUGIN_HRH
+
+   
+enum TSettingId
+    {
+    EDRMSettingsIdAutomaticActivation,
+    EDRMSettingsIdUsageReporting,
+    EDRMSettingsIdTransactionTracking,
+    EDRMSettingsIdWMDRMLicenseDeletion
+    };
+
+enum TMenuCmd
+    {
+    EDRMSettingsCmdAppChange = 1,
+    EDRMSettingsCmdAppChangeMSK 
+    };
+
+enum TListBoxItemVisibility
+    {
+    EDRMSettingsListBoxItemTypeIsAlwaysVisible = 0,
+    EDRMSettingsListBoxItemTypeIsDynamic
+    };
+
+#endif //  DRMSETTINGSPLUGIN_HRH
+
+//End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/inc/drmsettingsplugin.rh	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,51 @@
+/*
+* 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:  Contains common declarations for resources.
+*                 The file can be included only in resource file.
+*
+*/
+
+#ifndef DRMSETTINGSPLUGIN_RH
+#define DRMSETTINGSPLUGIN_RH
+
+
+// Global definitions
+
+
+// ---------------------------------------------------------
+//    drm_settings_feature_array
+//    Defines a structure to contain information about items 
+//    to be able to included in the listbox.
+// ---------------------------------------------------------
+//
+STRUCT DRM_SETTINGS_FEATURE_ARRAY
+    {
+    STRUCT items[];
+    }
+
+// ---------------------------------------------------------
+//    drm_settings_feature
+//    Defines a structure that contains information about 
+//    a single listbox item.
+// ---------------------------------------------------------
+//
+STRUCT DRM_SETTINGS_FEATURE
+    {
+    LTEXT txt = "";    
+    WORD item = -1;
+    BYTE type = EDRMSettingsListBoxItemTypeIsAlwaysVisible;
+    }
+
+#endif // DRMSETTINGSPLUGIN_RH
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/inc/drmsettingsplugincontainer.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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:  Container for DRMSettinsPlugin view.
+*
+*/
+
+
+#ifndef DRMSETTINGSPLUGINCONTAINER_H
+#define DRMSETTINGSPLUGINCONTAINER_H
+
+// INCLUDES
+#include <gsbasecontainer.h>
+
+// FORWARD DECLARATIONS
+class CGSListBoxItemTextArray;
+class CDRMSettingsModel;
+
+// CLASS DECLARATION
+
+/**
+*  CDRMSettingsPluginContainer container class
+*  @since Series 60_3.1
+*
+*  Container class for DRM Settings view
+*/
+class CDRMSettingsPluginContainer : public CGSBaseContainer
+    {
+        
+    public: // Constructors and destructor
+
+        /**
+        * Symbian OS constructor.
+        * @param aRect Listbox's rect.
+        */
+        void ConstructL( const TRect& aRect );
+
+        CDRMSettingsPluginContainer( TBool aWmdrmSupported,
+                                     TBool aOmadrmSupported );
+        
+        /**
+        * Destructor.
+        */
+        ~CDRMSettingsPluginContainer();
+
+    public: // new
+
+        /**
+        * Updates listbox's item's value.
+        * @param aFeatureId An item which is updated.
+        */
+        void UpdateListBoxL( TInt aFeatureId );
+
+        /**
+        * Retrieves the currently selected listbox feature id
+        * @return feature id.
+        */
+        TInt CurrentFeatureId() const;
+        
+        /**
+        * @return Model for the plugin.
+        */
+        CDRMSettingsModel* Model();
+        
+    protected: // from CGSBaseContainer
+    
+        /**
+        * See base class.
+        */
+        void ConstructListBoxL( TInt aResLbxId );
+        
+    private: // new
+
+        void CreateListBoxItemsL();
+        void MakeTransactionTrackingItemL();
+        void MakeAutomaticActivationItemL();
+        void MakeUsageReportingItemL();
+        void MakeWMDRMLicenseDeletionItemL();
+
+    private:
+    
+        /**
+        * Required for help.
+        */
+        void GetHelpContext( TCoeHelpContext& aContext ) const;
+
+    private: // data
+
+        // GS listbox item array
+        CGSListBoxItemTextArray* iListboxItemArray;
+        
+        // Model for DRMSettingsPlugin.
+        CDRMSettingsModel* iModel;
+        
+        TBool iWmdrmSupported;
+        
+        // Oma drm 2 is configured to be supported.
+        TBool iOmadrm2Supported;
+        
+    };
+
+#endif //DRMSETTINGSPLUGINCONTAINER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/inc/drmsettingsusagecheckbox.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or 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:  CheckBox class for Usage Reporting settings
+*
+*/
+
+
+#ifndef C_DRMSETTINGSUSAGECHECKBOX_H
+#define C_DRMSETTINGSUSAGECHECKBOX_H
+
+// INCLUDES
+#include <akncheckboxsettingpage.h>
+#include <aknsettingpage.h>
+
+// FORWARD DECLARATIONS
+class CDRMSettingUsageList;
+class CDRMSettingsModel;
+class CAknInfoPopupNoteController;
+class CDRMSettingsPlugin;
+
+/**
+ * CDrmSettingUsageCheckBox class
+ */
+NONSHARABLE_CLASS( CDrmSettingUsageCheckBox ) : public CAknCheckBoxSettingPage
+    {
+
+    public: // New functions
+
+        /**
+		* C++ default constructor.
+		*/
+		CDrmSettingUsageCheckBox( TInt aResourceId,
+		                          CDRMSettingUsageList* aList,
+		                          CDRMSettingsModel* aModel,
+		                          CDRMSettingsPlugin* aPlugin );
+		                          
+		/**
+		* Destructor.
+        */
+        virtual ~CDrmSettingUsageCheckBox();	
+
+	private: // From CAknSettingPage
+	
+	    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+	                                 TEventCode aType );
+	
+	    void DynamicInitL();
+	
+	    TBool OkToExitL(TBool aAccept);
+	    
+	    void AcceptSettingL();    
+	
+	private: // New functions
+	
+	    void ShowInfoPopupL();
+
+    private: // Data
+		
+		// Not owned
+		CDRMSettingUsageList* iList;
+		
+		// Not owned
+        CDRMSettingsModel* iModel;
+        
+        // Owned
+        CAknInfoPopupNoteController* iPopupController;
+        
+        // Pointer to CDrmSettingsPlugin instance
+        CDRMSettingsPlugin* iDrmSettingsPlugin;
+
+    };
+
+#endif // C_DRMSETTINGSUSAGECHECKBOX_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/inc/drmsettingsusagelist.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or 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:  List class for Usage Reporting checkbox
+*
+*/
+
+
+#ifndef C_DRMSETTINGSUSAGELIST_H
+#define C_DRMSETTINGSUSAGELIST_H
+
+// INCLUDES
+#include <akncheckboxsettingpage.h>
+
+// FORWARD DECLARATIONS
+class CDRMSettingsModel;
+
+/**
+ * CDRMSettingUsageList class
+ */
+NONSHARABLE_CLASS( CDRMSettingUsageList ) : public CSelectionItemList
+	{
+
+    public: // New functions
+	
+	    /**
+		* Two-phased constructor.
+        */
+		static CDRMSettingUsageList* NewL( CDRMSettingsModel* aModel );
+
+        /**
+		* Destructor.
+        */
+        virtual ~CDRMSettingUsageList();
+        
+	    /**
+	    * Updates contexts
+	    */
+	    void UpdateContexts();
+	
+	private:
+	
+	    /**
+	    * Default constructor.
+	    */
+	    CDRMSettingUsageList( CDRMSettingsModel* aModel );
+	    
+	    /**
+        * Symbian OS constructor.
+        */
+	    void ConstructL();
+	    
+	private: // Data
+	
+	    // Not owned
+	    CDRMSettingsModel* iModel;
+	
+	};
+	
+#endif // C_DRMSETTINGSUSAGELIST_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/src/drmsettingsmodel.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,315 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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:  Model for DRMSettinsPlugin.
+*
+*/
+
+
+// INCLUDE FILES
+#include <utf.h>
+#include <commdb.h>
+#include <featmgr.h>
+
+#include "drmsettingsmodel.h"
+#include "drmsettingsplugininternalcrkeys.h"
+#include "DRMRIContext.h"
+
+// CONSTANTS
+#ifdef _DEBUG
+// debug panic
+_LIT( KDRMSettingsDebugPanicMessage, "DrmSettingsDebugPanic" );
+const TInt KDRMSettingsDebugPanicCode( 1 );
+#endif
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsModel::NewL
+//
+// EPOC two-phased constructor
+// ----------------------------------------------------------------------------
+//
+CDRMSettingsModel* CDRMSettingsModel::NewL()
+    {
+    CDRMSettingsModel* self = new( ELeave ) CDRMSettingsModel;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsModel::CDRMSettingsModel
+//
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ----------------------------------------------------------------------------
+//
+CDRMSettingsModel::CDRMSettingsModel()
+    {
+    }
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsModel::ConstructL
+//
+// EPOC default constructor can leave.
+// ----------------------------------------------------------------------------
+//
+void CDRMSettingsModel::ConstructL()
+    {
+    // create an instance of Central Repository
+    iDRMSettingsRepository = CRepository::NewL( KCRUidDRMSettings );
+
+#ifdef RD_DRM_METERING
+
+    // Create an instance of roap storage client
+    iRoapStorageClient = new (ELeave) Roap::RRoapStorageClient;
+
+    // Connect to server
+    User::LeaveIfError( iRoapStorageClient->Connect() );
+
+    // Fill the list
+    iRoapStorageClient->GetAllRIContextsL( iRIContextList );
+
+#endif // RD_DRM_METERING
+
+    }
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsModel::~CDRMSettingsModel
+//
+// Destructor
+// ----------------------------------------------------------------------------
+//
+CDRMSettingsModel::~CDRMSettingsModel()
+    {
+    if ( iDRMSettingsRepository )
+        {
+        delete iDRMSettingsRepository;
+        }
+    if ( iRoapStorageClient )
+        {
+        iRoapStorageClient->Close();
+        delete iRoapStorageClient;
+        }
+
+    iRIContextList.ResetAndDestroy();
+    iRIContextList.Close();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::SetTransactionTrackingStateL()
+//
+// Set transaction tracking state
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsModel::SetTransactionTrackingStateL( TInt aValue )
+    {
+    User::LeaveIfError( iDRMSettingsRepository->
+                                Set( KDRMSettingsTransactionTracking,
+                                     aValue ) );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::TransactionTrackingStateL()
+//
+// Get transaction tracking state
+// ---------------------------------------------------------------------------
+//
+TInt CDRMSettingsModel::TransactionTrackingStateL()
+    {
+    TInt value( KErrNone );
+
+    User::LeaveIfError( iDRMSettingsRepository->Get(
+                                    KDRMSettingsTransactionTracking,
+                                    value ) );
+
+    return value;
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::SetAutomaticActivationStateL()
+//
+// Set automatic activation state
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsModel::SetAutomaticActivationStateL( TInt aValue )
+    {
+    User::LeaveIfError( iDRMSettingsRepository->
+                                Set( KDRMSettingsSilentRightsAcquisition,
+                                     aValue ) );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::AutomaticActivationStateL()
+//
+// Get automatic activation state
+// ---------------------------------------------------------------------------
+//
+TInt CDRMSettingsModel::AutomaticActivationStateL()
+    {
+    TInt value( KErrNone );
+
+    User::LeaveIfError( iDRMSettingsRepository->Get(
+                                KDRMSettingsSilentRightsAcquisition,
+                                value ) );
+
+    return value;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::UsageReportingCount()
+//
+// Get usage reporting state. Return count of allowed services.
+// ---------------------------------------------------------------------------
+//
+TInt CDRMSettingsModel::UsageReportingCount()
+    {
+    TInt count( 0 );
+
+    for ( TInt i( 0 ); i < iRIContextList.Count(); i++ )
+        {
+        if ( iRIContextList[i]->IsMeteringAllowed() )
+            {
+            count++;
+            }
+        }
+
+    return count;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::GetSingleRIAliasL()
+// ---------------------------------------------------------------------------
+//
+HBufC* CDRMSettingsModel::GetSingleRIAliasL( TInt aIndex )
+    {
+    __ASSERT_DEBUG( aIndex >= 0 ||
+                    aIndex < iRIContextList.Count(),
+                        User::Panic( KDRMSettingsDebugPanicMessage,
+                                     KDRMSettingsDebugPanicCode ) );
+
+    HBufC* alias( NULL );
+
+    if ( &iRIContextList[aIndex]->RIAlias() )
+        {
+        alias =
+            CnvUtfConverter::ConvertToUnicodeFromUtf8L(
+                iRIContextList[aIndex]->RIAlias() );
+        }
+    else
+        {
+        alias =
+            CnvUtfConverter::ConvertToUnicodeFromUtf8L(
+                iRIContextList[aIndex]->RightsIssuerURL() );
+        }
+
+    return alias;
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::GetFirstAllowedMeteringRIAliasL()
+// ---------------------------------------------------------------------------
+//
+HBufC* CDRMSettingsModel::GetFirstAllowedMeteringRIAliasL()
+    {
+    for ( TInt i( 0 ); i < iRIContextList.Count(); i++ )
+        {
+        if( IsMeteringAllowed( i ) )
+            {
+            return GetSingleRIAliasL( i );
+            }
+        }
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::GetRiContextCount()
+// ---------------------------------------------------------------------------
+//
+TInt CDRMSettingsModel::GetRiContextCount()
+    {
+    return iRIContextList.Count();
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::IsMeteringAllowed()
+// ---------------------------------------------------------------------------
+//
+TBool CDRMSettingsModel::IsMeteringAllowed( TInt aIndex )
+    {
+    __ASSERT_DEBUG( aIndex >= 0 ||
+                    aIndex < iRIContextList.Count(),
+                        User::Panic( KDRMSettingsDebugPanicMessage,
+                                     KDRMSettingsDebugPanicCode ) );
+
+    return iRIContextList[aIndex]->IsMeteringAllowed();
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::IsMeteringAllowedForAll()
+// ---------------------------------------------------------------------------
+//
+TBool CDRMSettingsModel::IsMeteringAllowedForAll()
+    {
+    TBool isAllowed( ETrue );
+
+    for ( TInt i( 0 ); i < iRIContextList.Count() && isAllowed; i++ )
+        {
+        if( !IsMeteringAllowed( i ) )
+            {
+            isAllowed = EFalse;
+            }
+        }
+
+    return isAllowed;
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::SetMeteringStatus()
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsModel::SetMeteringStatus( TInt aIndex, TBool aIsAllowed )
+    {
+    __ASSERT_DEBUG( aIndex >= 0 ||
+                    aIndex < iRIContextList.Count(),
+                        User::Panic( KDRMSettingsDebugPanicMessage,
+                                     KDRMSettingsDebugPanicCode ) );
+
+    iRIContextList[aIndex]->SetMeteringStatus( aIsAllowed );
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsModel::SaveMeteringChanges()
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsModel::SaveMeteringChanges()
+    {
+    for ( TInt i( 0 ); i < iRIContextList.Count(); i++ )
+        {
+        TRAP_IGNORE(
+            iRoapStorageClient->UpdateRIContextL( *iRIContextList[i] ) );
+        }
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/src/drmsettingsplugin.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,750 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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:  View for DRMSettinsPlugin
+*
+*/
+
+
+// INCLUDE FILES
+#include <coeaui.h>
+#include <hlplch.h>             // For HlpLauncher
+#include <bautils.h>
+#include <eikfrlbd.h>
+#include <featmgr.h>
+#include <StringLoader.h>
+#include <aknViewAppUi.h>
+#include <aknradiobuttonsettingpage.h>
+#include <gsfwviewuids.h>
+#include <gsprivatepluginproviderids.h>
+#include <gscommon.hrh>
+#include <drmsettingspluginrsc.rsg>
+
+#include "drmsettingsplugin.h"
+#include "drmsettingsplugincontainer.h"
+#include "drmsettingsplugin.hrh"
+#include "drmsettingsmodel.h"
+#include "drmsettingsusagecheckbox.h"
+#include "drmsettingsusagelist.h"
+#include "wmdrmpkclientwrapper.h"
+
+// CONSTANTS
+_LIT( KDRMSettingsPluginResourceFileName, "z:drmsettingspluginrsc.rsc" );
+
+
+// ============================= LOCAL FUNCTIONS ==============================
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsPlugin::CDRMSettingsPlugin()
+//
+// Constructor
+// ----------------------------------------------------------------------------
+//
+CDRMSettingsPlugin::CDRMSettingsPlugin()
+  : iResourceLoader( *iCoeEnv )
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::NewL()
+//
+// Symbian OS default constructor
+// ---------------------------------------------------------------------------
+CDRMSettingsPlugin* CDRMSettingsPlugin::NewL( TAny* /*aInitParams*/ )
+    {
+    CDRMSettingsPlugin* self = new( ELeave ) CDRMSettingsPlugin;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::ConstructL()
+//
+// Symbian OS two-phased constructor
+// ---------------------------------------------------------------------------
+void CDRMSettingsPlugin::ConstructL()
+    {
+    FeatureManager::InitializeLibL();
+    
+    if ( FeatureManager::FeatureSupported( KFeatureIdWindowsMediaDrm ) )
+        {
+        iWmdrmSupported = ETrue;
+        }
+        
+    if ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) )
+        {
+        iOmadrm2Supported = ETrue;
+        }
+    else 
+        {
+        iOmadrm2Supported = EFalse;
+        }
+    
+    // Find the resource file
+    TParse parse;
+    parse.Set( KDRMSettingsPluginResourceFileName,
+               &KDC_RESOURCE_FILES_DIR,
+               NULL );
+    TFileName fileName( parse.FullName() );
+
+    // Get language of resource file
+    BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
+
+    // Open resource file
+    iResourceLoader.OpenL( fileName );
+
+    BaseConstructL( R_DRM_SETTINGS_VIEW );
+
+    }
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsPlugin::~CDRMSettingsPlugin
+//
+// Destructor
+// ----------------------------------------------------------------------------
+CDRMSettingsPlugin::~CDRMSettingsPlugin()
+    {
+    FeatureManager::UnInitializeLib();
+    iResourceLoader.Close();
+    }
+
+
+// ---------------------------------------------------------------------------
+// TUid CDRMSettingsPlugin::Id()
+//
+// Returns view's ID.
+// ---------------------------------------------------------------------------
+TUid CDRMSettingsPlugin::Id() const
+    {
+    return KDRMSettingsPluginUid;
+    }
+
+
+// ========================= From CGSPluginInterface ==================
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsPlugin::GetCaption
+//
+// Return application/view caption.
+// ----------------------------------------------------------------------------
+//
+void CDRMSettingsPlugin::GetCaptionL( TDes& aCaption ) const
+    {
+    // the resource file is already opened.
+    HBufC* result( StringLoader::LoadL( R_DRM_SETTINGS_VIEW_CAPTION ) );
+    aCaption.Copy( *result );
+    delete result;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsPlugin::PluginProviderCategory
+//
+// A means to identify the location of this plug-in in the framework.
+// ----------------------------------------------------------------------------
+//
+TInt CDRMSettingsPlugin::PluginProviderCategory() const
+    {
+    //To identify internal plug-ins.
+    return KGSPluginProviderInternal;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsPlugin::Visible
+//
+// Provides the visibility status of self to framework.
+// ----------------------------------------------------------------------------
+//
+TBool CDRMSettingsPlugin::Visible() const
+    {
+    TBool visible( EFalse );
+
+    // The plugin is visible if __DRM_OMA2 or __WINDOWS_MEDIA_DRM are enabled.
+    if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) ||
+        FeatureManager::FeatureSupported( KFeatureIdWindowsMediaDrm ) )
+        {
+        visible = ETrue;
+        }
+
+    return visible;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::HandleCommandL(TInt aCommand)
+//
+// Handles commands directed to this class.
+// ---------------------------------------------------------------------------
+void CDRMSettingsPlugin::HandleCommandL( TInt aCommand )
+    {
+    switch ( aCommand )
+        {
+        case EDRMSettingsCmdAppChangeMSK:
+            {
+            const TInt currentFeatureId( Container()->CurrentFeatureId() );
+
+            switch ( currentFeatureId )
+                {
+#ifdef __DRM_OMA2
+                case EDRMSettingsIdTransactionTracking:
+                    if ( iOmadrm2Supported )
+                        {
+                        UpdateTransactionTrackingSettingL( EFalse );
+                        }
+                    break;
+
+#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION
+                case EDRMSettingsIdAutomaticActivation:
+                    if ( iOmadrm2Supported )
+                        {
+                        UpdateAutomaticActivationSettingL( EFalse );
+                        }
+                    break;
+#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION
+
+#ifdef RD_DRM_METERING
+                case EDRMSettingsIdUsageReporting:
+                    if ( iOmadrm2Supported )
+                        {
+                        UpdateUsageReportingSettingL();
+                        }
+                    break;
+#endif // RD_DRM_METERING
+#endif // __DRM_OMA2
+
+                case EDRMSettingsIdWMDRMLicenseDeletion:
+
+                    if ( iWmdrmSupported )
+                        {
+                        DoWMDRMLicenseDeletionL();
+                        }
+
+                    break;
+
+                default:
+
+                    break;
+                }
+
+            break;
+            }
+        case EDRMSettingsCmdAppChange:
+            {
+            const TInt currentFeatureId( Container()->CurrentFeatureId() );
+
+            switch ( currentFeatureId )
+                {
+#ifdef __DRM_OMA2
+                case EDRMSettingsIdTransactionTracking:
+                    if ( iOmadrm2Supported )
+                        {
+                        UpdateTransactionTrackingSettingL( ETrue );
+                        }
+                    break;
+#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION
+                case EDRMSettingsIdAutomaticActivation:
+                    if ( iOmadrm2Supported )
+                        {
+                        UpdateAutomaticActivationSettingL( ETrue );
+                        }
+                    break;
+#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION
+
+#ifdef RD_DRM_METERING
+                case EDRMSettingsIdUsageReporting:
+                    if ( iOmadrm2Supported )
+                        {
+                        UpdateUsageReportingSettingL();
+                        }
+                    break;
+#endif // RD_DRM_METERING
+#endif // __DRM_OMA2
+
+                case EDRMSettingsIdWMDRMLicenseDeletion:
+
+                    if ( iWmdrmSupported )
+                        {
+                        DoWMDRMLicenseDeletionL();
+                        }
+
+                    break;
+
+                default:
+
+                    break;
+                }
+            break;
+            }
+        case EAknSoftkeyBack:
+
+            iAppUi->ActivateLocalViewL( KGSSecurityPluginUid );
+
+            break;
+
+        case EAknCmdHelp:
+            {
+
+            if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+                {
+                HlpLauncher::LaunchHelpApplicationL(
+                                                iEikonEnv->WsSession(),
+                                                iAppUi->AppHelpContextL() );
+                }
+
+            break;
+
+            }
+        default:
+
+            iAppUi->HandleCommandL( aCommand );
+
+            break;
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::UpdateListBoxL
+//
+// Updates listbox items.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPlugin::UpdateListBoxL( TInt aItemId )
+    {
+    Container()->UpdateListBoxL( aItemId );
+    }
+
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsPlugin::Container
+//
+// Return handle to container class.
+// ----------------------------------------------------------------------------
+//
+CDRMSettingsPluginContainer* CDRMSettingsPlugin::Container()
+    {
+    return static_cast<CDRMSettingsPluginContainer*>( iContainer );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::NewContainerL()
+//
+// Creates new iContainer.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPlugin::NewContainerL()
+    {
+    iContainer = new( ELeave ) CDRMSettingsPluginContainer( iWmdrmSupported,
+            iOmadrm2Supported );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::HandleListBoxSelectionL()
+//
+// Handles events raised through a rocker key. Checks the run-time support of
+// Oma Drm 2 when needed.
+// ---------------------------------------------------------------------------
+void CDRMSettingsPlugin::HandleListBoxSelectionL()
+    {
+    const TInt currentFeatureId( Container()->CurrentFeatureId() );
+
+    switch ( currentFeatureId )
+        {
+#ifdef __DRM_OMA2
+        case EDRMSettingsIdTransactionTracking:
+            if ( iOmadrm2Supported )
+                {
+                UpdateTransactionTrackingSettingL( EFalse );
+                }
+            break;
+#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION
+        case EDRMSettingsIdAutomaticActivation:
+            if ( iOmadrm2Supported )
+                {
+                UpdateAutomaticActivationSettingL( EFalse );
+                }
+            break;
+#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION
+
+#ifdef RD_DRM_METERING
+        case EDRMSettingsIdUsageReporting:
+            if ( iOmadrm2Supported )
+                {
+                UpdateUsageReportingSettingL();
+                }
+            break;
+#endif // RD_DRM_METERING
+#endif // __DRM_OMA2
+
+        case EDRMSettingsIdWMDRMLicenseDeletion:
+
+            if ( iWmdrmSupported )
+                {
+                DoWMDRMLicenseDeletionL();
+                }
+
+            break;
+
+       default:
+
+            break;
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::UpdateTransactionTrackingSettingL
+//
+// Display Transaction tracking setting page.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPlugin::UpdateTransactionTrackingSettingL( TBool aShowSettingPage )
+    {
+    if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) )
+        {
+        TInt currentValue( Container()->Model()->TransactionTrackingStateL() );
+        TBool isValueUpdated( EFalse );
+
+        if ( aShowSettingPage )
+            {
+            isValueUpdated = ShowTransactionTrackingSettingPageL( currentValue );
+            }
+        else
+            {
+            switch ( currentValue )
+                {
+                case KDRMTransactionTrackingDisabled:
+
+                    currentValue = KDRMTransactionTrackingEnabled;
+
+                    break;
+
+                case KDRMTransactionTrackingEnabled:
+
+                    currentValue = KDRMTransactionTrackingDisabled;
+
+                    break;
+
+                default:
+
+                    break;
+                }
+            isValueUpdated = ETrue;
+            }
+        // If value is updated, store it to model:
+        if ( isValueUpdated )
+            {
+            Container()->Model()->SetTransactionTrackingStateL( currentValue );
+            UpdateListBoxL( EDRMSettingsIdTransactionTracking );
+            }
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::ShowTransactionTrackingSettingPageL()
+//
+// Display transaction tracking setting page. Selected listbox item index
+// must be mapped to transaction tracking state because index value is
+// different from state value.
+// ---------------------------------------------------------------------------
+//
+TBool CDRMSettingsPlugin::ShowTransactionTrackingSettingPageL(
+    TInt& aTTState )
+    {
+    // in case DRM Phase 2 is not supported, return EFalse.
+    TBool isValueUpdated( EFalse );
+    TInt selectedTTItemIndex( 0 );
+    TInt originalTTState( aTTState );
+
+    // Set selected listbox item to current transaction tracking state:
+    switch ( aTTState )
+        {
+        case KDRMTransactionTrackingDisabled:
+
+            selectedTTItemIndex = KDRMTTItemIndexDisabled;
+
+            break;
+
+        case KDRMTransactionTrackingEnabled:
+
+            selectedTTItemIndex = KDRMTTItemIndexEnabled;
+
+            break;
+        }
+
+    CDesCArrayFlat* items(
+        iCoeEnv->ReadDesC16ArrayResourceL( R_TTRACKING_SETTING_PAGE_LBX ) );
+    CleanupStack::PushL( items );
+    CAknRadioButtonSettingPage* dlg(
+        new (ELeave) CAknRadioButtonSettingPage( R_TTRACKING_SETTING_PAGE,
+                                                 selectedTTItemIndex,
+                                                 items ) );
+
+    dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
+    CleanupStack::PopAndDestroy( items );
+
+    // Map selected listbox item to correct state:
+    switch ( selectedTTItemIndex )
+        {
+        case KDRMTTItemIndexDisabled:
+
+            aTTState = KDRMTransactionTrackingDisabled;
+
+            break;
+
+        case KDRMTTItemIndexEnabled:
+
+            aTTState = KDRMTransactionTrackingEnabled;
+
+            break;
+        }
+
+    // Check is value updated:
+    if( aTTState != originalTTState )
+        {
+        isValueUpdated = ETrue;
+        }
+
+    return isValueUpdated;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::UpdateAutomaticActivationSettingL
+//
+// Display Automatic activation setting page.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPlugin::UpdateAutomaticActivationSettingL( TBool aShowSettingPage )
+    {
+    if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) )
+        {
+        TInt currentValue( Container()->Model()->AutomaticActivationStateL() );
+        TBool isValueUpdated( EFalse );
+
+        if ( aShowSettingPage )
+            {
+            isValueUpdated = ShowAutomaticActivationSettingPageL( currentValue );
+            }
+        else
+            {
+            switch ( currentValue )
+                {
+                case KDRMAutomaticActivationNotAllowed:
+
+                    currentValue = KDRMAutomaticActivationAllowed;
+
+                    break;
+
+                case KDRMAutomaticActivationAllowed:
+
+                    currentValue = KDRMAutomaticActivationNotAllowed;
+
+                    break;
+
+                default:
+
+                    break;
+                }
+            isValueUpdated = ETrue;
+            }
+        // If value is updated, store it to model:
+        if ( isValueUpdated )
+            {
+            Container()->Model()->SetAutomaticActivationStateL( currentValue );
+            UpdateListBoxL( EDRMSettingsIdAutomaticActivation );
+            }
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::ShowAutomaticActivationSettingPageL()
+//
+// Display Automatic activation setting page. Selected listbox item index
+// must be mapped to automatic activation state because index value is
+// different from state value.
+// ---------------------------------------------------------------------------
+//
+TBool CDRMSettingsPlugin::ShowAutomaticActivationSettingPageL(
+    TInt& aAAState )
+    {
+    // in case DRM Phase 2 is not supported, return EFalse.
+    TBool isValueUpdated( EFalse );
+    TInt selectedAAItemIndex( 0 );
+    TInt originalAAState( aAAState );
+
+    // Set selected listbox item to current state:
+    switch ( aAAState )
+        {
+        case KDRMAutomaticActivationNotAllowed:
+
+            selectedAAItemIndex = KDRMAAItemIndexDisabled;
+
+            break;
+
+        case KDRMAutomaticActivationAllowed:
+
+            selectedAAItemIndex = KDRMAAItemIndexEnabled;
+
+            break;
+        }
+
+    CDesCArrayFlat* items(
+        iCoeEnv->ReadDesC16ArrayResourceL( R_AUTOM_ACTIV_SETTING_PAGE_LBX ) );
+    CleanupStack::PushL( items );
+    CAknRadioButtonSettingPage* dlg(
+        new (ELeave) CAknRadioButtonSettingPage( R_AUTOM_ACTIV_SETTING_PAGE,
+                                                 selectedAAItemIndex,
+                                                 items ) );
+
+    dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
+    CleanupStack::PopAndDestroy( items );
+
+    // Map selected listbox item to correct state:
+    switch ( selectedAAItemIndex )
+        {
+        case KDRMAAItemIndexDisabled:
+
+            aAAState = KDRMAutomaticActivationNotAllowed;
+
+            break;
+
+        case KDRMAAItemIndexEnabled:
+
+            aAAState = KDRMAutomaticActivationAllowed;
+
+            break;
+
+        }
+
+    // Check is value updated:
+    if( aAAState != originalAAState )
+        {
+        isValueUpdated = ETrue;
+        }
+
+    return isValueUpdated;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::UpdateUsageReportingSettingL
+//
+// Display Usage Reporting setting page.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPlugin::UpdateUsageReportingSettingL()
+    {
+    TBool isValueUpdated( EFalse );
+
+    if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) )
+        {
+        CDRMSettingsModel* model( this->Container()->Model() );
+
+        CDRMSettingUsageList* usageList( CDRMSettingUsageList::NewL( model ) );
+        CleanupStack::PushL( usageList );
+
+        CDrmSettingUsageCheckBox* usageCheckBox(
+            new (ELeave) CDrmSettingUsageCheckBox(
+                R_DRM_SETTINGS_METERING_CHECKBOX_PAGE,
+                usageList,
+                model,
+                this ) );
+
+        isValueUpdated =
+            usageCheckBox->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted );
+
+        CleanupStack::PopAndDestroy( usageList );
+        }
+
+    if ( isValueUpdated )
+        {
+        UpdateListBoxL( EDRMSettingsIdUsageReporting );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPlugin::DoWMDRMLicenseDeletionL
+//
+// Display WMDRM license deletion setting page.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPlugin::DoWMDRMLicenseDeletionL()
+    {
+    if ( iWmdrmSupported )
+        {
+        TInt r = KErrNone;
+        RLibrary library;
+        r = library.Load( KWmdrmPkClientWrapperName );
+        if( !r )
+            {
+            CleanupClosePushL( library );
+            CWmDrmPkClientWrapper* wrapper =
+                (CWmDrmPkClientWrapper*)library.Lookup( KWmdrmPkClientNewL )();
+            CleanupStack::PushL( wrapper );
+            User::LeaveIfError( wrapper->Connect() );
+            wrapper->DeleteRights();
+            wrapper->Close();
+            CleanupStack::PopAndDestroy( 2, &library );
+            }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CDRMSettingsPlugin::DynInitMenuPaneL()
+//
+// Display the dynamic menu
+// ----------------------------------------------------------------------------
+void CDRMSettingsPlugin::DynInitMenuPaneL(
+    TInt aResourceId,
+    CEikMenuPane* aMenuPane )
+    {
+    // show or hide the 'help' menu item when supported
+    if( aResourceId == R_DRM_SETTINGS_MENU_ITEM_EXIT )
+        {
+        User::LeaveIfNull( aMenuPane );
+
+        if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) )
+            {
+            if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+                {
+                aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
+                }
+            else
+                {
+                aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
+                }
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
+            }
+        }
+    }
+
+
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/src/drmsettingsplugincontainer.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,360 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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:  Container for DRMSettinsPlugin
+*
+*/
+
+
+// INCLUDE FILES
+#include <aknlists.h>
+#include <AknUtils.h>
+#include <csxhelp/drm.hlp.hrh>
+#include <gslistbox.h>
+#include <StringLoader.h>
+#include <drmsettingspluginrsc.rsg>
+
+#include "drmsettingsplugincontainer.h"
+#include "drmsettingsplugin.hrh"
+#include "drmsettingsmodel.h"
+
+const TUid KUidRightsManager = { 0x101F85C7 };
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::ConstructL()
+//
+// Symbian OS two phased constructor
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::ConstructL( const TRect& aRect )
+    {
+    iListBox = new( ELeave ) CAknSettingStyleListBox;
+    iModel = CDRMSettingsModel::NewL();
+    
+    if( iOmadrm2Supported )
+        {
+        BaseConstructL( aRect, R_DRM_SETTINGS_VIEW_TITLE, 
+                R_DRM_SETTINGS_LBX );
+        }
+    else
+        {
+        BaseConstructL( aRect, R_DRM_SETTINGS_VIEW_TITLE, 
+                R_DRM_SETTINGS_LBX_NO_OMA2 );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::CDRMSettingsPluginContainer()
+//
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CDRMSettingsPluginContainer::CDRMSettingsPluginContainer( 
+    TBool aWmdrmSupported, 
+    TBool aOmadrm2Supported ) : iWmdrmSupported( aWmdrmSupported ),
+                                iOmadrm2Supported( aOmadrm2Supported )
+    {                         
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::~CDRMSettingsPluginContainer()
+//
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CDRMSettingsPluginContainer::~CDRMSettingsPluginContainer()
+    {
+    if ( iModel )
+        {
+        delete iModel;
+        }
+    // delete listbox item array
+    if ( iListboxItemArray )
+        {
+        delete iListboxItemArray;
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::ConstructListBoxL()
+//
+// Construct the listbox from resource array.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::ConstructListBoxL( TInt aResLbxId )
+    {
+    iListBox->ConstructL( this, EAknListBoxSelectionList /* |
+        EAknListBoxItemSpecificMenuDisabled */ );
+    iListboxItemArray = CGSListBoxItemTextArray::NewL( aResLbxId,
+                                                       *iListBox,
+                                                       *iCoeEnv );
+    iListBox->Model()->SetItemTextArray( iListboxItemArray );
+    iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    CreateListBoxItemsL();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::CreateListBoxItemsL()
+//
+// Create listbox items.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::CreateListBoxItemsL()
+    {
+#ifdef __DRM_OMA2
+    if( iOmadrm2Supported )
+        {
+        MakeTransactionTrackingItemL();
+        
+#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION
+    MakeAutomaticActivationItemL();
+#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION
+
+#ifdef RD_DRM_METERING
+    MakeUsageReportingItemL();
+#endif // RD_DRM_METERING
+        }
+#endif // __DRM_OMA2
+
+
+    MakeWMDRMLicenseDeletionItemL();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::UpdateListBoxL()
+//
+// Update listbox item.
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::UpdateListBoxL( TInt aFeatureId )
+    {
+    switch( aFeatureId )
+        {
+#ifdef __DRM_OMA2
+        case EDRMSettingsIdTransactionTracking:
+            if( iOmadrm2Supported )
+                {
+                MakeTransactionTrackingItemL();
+                }
+            break;
+
+#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION
+        case EDRMSettingsIdAutomaticActivation:
+            if( iOmadrm2Supported )
+                {
+                MakeAutomaticActivationItemL();
+                }
+            break; 
+#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION
+
+#ifdef RD_DRM_METERING
+        case EDRMSettingsIdUsageReporting:
+            if( iOmadrm2Supported )
+                {
+                MakeUsageReportingItemL();
+                }
+            break;
+#endif // RD_DRM_METERING
+#endif // __DRM_OMA2
+
+        case EDRMSettingsIdWMDRMLicenseDeletion:
+
+            MakeWMDRMLicenseDeletionItemL();
+
+            break;
+
+        default:
+            break;
+        }
+
+    iListBox->HandleItemAdditionL();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::MakeTransactionTrackingItemL()
+//
+// Create Transaction tracking list item
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::MakeTransactionTrackingItemL()
+    {
+    HBufC* dynamicText( NULL );
+    TInt trxTrState( iModel->TransactionTrackingStateL() );
+
+    switch ( trxTrState )
+        {
+        case KDRMTransactionTrackingEnabled:
+            dynamicText = StringLoader::LoadLC( R_DRM_SETTINGS_TTRACKING_ON );
+            break;
+        default:
+            dynamicText = StringLoader::LoadLC( R_DRM_SETTINGS_TTRACKING_OFF );
+            break;
+        }
+
+    TPtr ptrBuffer ( dynamicText->Des() );
+
+
+    // Finally, set the dynamic text
+    iListboxItemArray->SetDynamicTextL( EDRMSettingsIdTransactionTracking, ptrBuffer );
+
+    CleanupStack::PopAndDestroy( dynamicText );
+
+    // And add to listbox
+    iListboxItemArray->SetItemVisibilityL( EDRMSettingsIdTransactionTracking,
+        CGSListBoxItemTextArray::EVisible );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::MakeAutomaticActivationItemL()
+//
+// Create Automatic activation list item
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::MakeAutomaticActivationItemL()
+    {
+    TInt automActivState( iModel->AutomaticActivationStateL() );
+
+    HBufC* dynamicText( NULL );
+
+    switch ( automActivState )
+        {
+        case KDRMTransactionTrackingEnabled:
+            dynamicText = StringLoader::LoadLC( R_DRM_SETTINGS_AUTOM_ACTIV_ON );
+            break;
+        default:
+            dynamicText = StringLoader::LoadLC( R_DRM_SETTINGS_AUTOM_ACTIV_OFF );
+            break;
+        }
+
+    TPtr ptrBuffer ( dynamicText->Des() );
+
+    // Finally, set the dynamic text
+    iListboxItemArray->SetDynamicTextL( EDRMSettingsIdAutomaticActivation,
+                                        ptrBuffer );
+
+    CleanupStack::PopAndDestroy( dynamicText );
+
+    // And add to listbox
+    iListboxItemArray->SetItemVisibilityL( EDRMSettingsIdAutomaticActivation,
+                                           CGSListBoxItemTextArray::EVisible );
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::MakeUsageReportingItemL()
+//
+// Create Usage reporting list item
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::MakeUsageReportingItemL()
+    {
+    TInt count( iModel->UsageReportingCount() );
+
+    HBufC* dynamicText( NULL );
+
+    switch ( count )
+        {
+        case 0:
+            dynamicText = StringLoader::LoadL( R_DRM_SET_USAGE_REPORT_NONE );
+            break;
+        case 1:
+            dynamicText = iModel->GetFirstAllowedMeteringRIAliasL();
+            break;
+        default:
+            dynamicText = StringLoader::LoadL( R_DRM_SET_SEVERAL_SERVICES );
+            break;
+        }
+    CleanupStack::PushL( dynamicText );
+
+    TPtr ptrBuffer ( dynamicText->Des() );
+
+    // Finally, set the dynamic text
+    iListboxItemArray->SetDynamicTextL( EDRMSettingsIdUsageReporting,
+                                        ptrBuffer );
+
+    CleanupStack::PopAndDestroy( dynamicText );
+
+    // And add to listbox
+    iListboxItemArray->SetItemVisibilityL( EDRMSettingsIdUsageReporting,
+                                           CGSListBoxItemTextArray::EVisible );
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::MakeWMDRMLicenseDeletionItemL()
+//
+// Create WMDRM license deletion list item
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::MakeWMDRMLicenseDeletionItemL()
+    {
+    if ( iWmdrmSupported )
+        {
+        // Add to listbox
+        iListboxItemArray->
+            SetItemVisibilityL( EDRMSettingsIdWMDRMLicenseDeletion,
+                                CGSListBoxItemTextArray::EVisible );
+        }
+    else
+        {
+        // Add to listbox
+        iListboxItemArray->
+            SetItemVisibilityL( EDRMSettingsIdWMDRMLicenseDeletion,
+                                CGSListBoxItemTextArray::EInvisible );
+
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::GetHelpContext() const
+//
+// Gets Help
+// ---------------------------------------------------------------------------
+//
+void CDRMSettingsPluginContainer::GetHelpContext(
+    TCoeHelpContext& aContext ) const
+    {
+    aContext.iMajor = KUidRightsManager;
+    aContext.iContext = KSET_HLP_PROTECTED_CONTENT;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::CurrentFeatureId()
+//
+// Return the feature id of selected listitem
+// ---------------------------------------------------------------------------
+//
+TInt CDRMSettingsPluginContainer::CurrentFeatureId( ) const
+    {
+    return iListboxItemArray->CurrentFeature();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CDRMSettingsPluginContainer::Model()
+//
+//
+// -----------------------------------------------------------------------------
+//
+CDRMSettingsModel* CDRMSettingsPluginContainer::Model()
+    {
+    return iModel;
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/src/drmsettingspluginimplementationtable.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,49 @@
+/*
+* 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 "Eclipse Public License v1.0"
+* which accompanies 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 proxy table for DRMSettinsPlugin
+*
+*/
+
+
+// INCLUDES
+#include <e32std.h>
+#include <ecom/implementationproxy.h>
+
+#include "drmsettingsplugin.h"
+
+
+// CONSTANTS
+const TImplementationProxy KDRMSettingsPluginImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( 0x102750CD, CDRMSettingsPlugin::NewL )
+    };
+
+
+// ---------------------------------------------------------------------------
+// ImplementationGroupProxy
+//
+// Gate/factory function
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+                                                  TInt& aTableCount )
+    {
+    aTableCount = sizeof( KDRMSettingsPluginImplementationTable )
+        / sizeof( TImplementationProxy );
+    return KDRMSettingsPluginImplementationTable;
+    }
+
+
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/src/drmsettingsusagecheckbox.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or 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:  CheckBox class for Usage Reporting settings
+*
+*/
+
+
+// INCLUDE FILES
+#include <StringLoader.h>
+#include <AknQueryDialog.h>
+#include <AknInfoPopupNoteController.h>
+#include <drmsettingspluginrsc.rsg>
+
+#include "drmsettingsusagecheckbox.h"
+#include "drmsettingsusagelist.h"
+#include "drmsettingsmodel.h"
+#include "drmsettingsplugin.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// CDrmSettingUsageCheckBox::CDrmSettingUsageCheckBox
+// Default constructor.
+// -----------------------------------------------------------------------------
+//
+CDrmSettingUsageCheckBox::CDrmSettingUsageCheckBox(
+    TInt aResourceId,
+    CDRMSettingUsageList* aList,
+    CDRMSettingsModel* aModel,
+    CDRMSettingsPlugin* aPlugin ) : CAknCheckBoxSettingPage( aResourceId, aList ),
+                                  iList( aList ),
+                                  iModel( aModel ),
+                                  iDrmSettingsPlugin( aPlugin )
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// CDrmSettingUsageCheckBox::~CDrmSettingUsageCheckBox
+//
+// Destructor
+// ----------------------------------------------------------------------------
+//
+CDrmSettingUsageCheckBox::~CDrmSettingUsageCheckBox()
+    {
+    delete iPopupController;
+    }
+
+// -----------------------------------------------------------------------------
+// CDrmSettingUsageCheckBox::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CDrmSettingUsageCheckBox::OfferKeyEventL(
+    const TKeyEvent& aKeyEvent,
+    TEventCode aType )
+    {
+    TKeyResponse response( EKeyWasNotConsumed );
+    if ( aKeyEvent.iCode != EKeyApplicationF )
+        {
+        response = this->ListBoxControl()->OfferKeyEventL( aKeyEvent, aType );
+        }
+
+    if ( aType == EEventKeyUp )
+        {
+        ShowInfoPopupL();
+        }
+
+    if ( ( aType == EEventKey ) && ( aKeyEvent.iCode == EKeyEscape ) )
+        {
+        iDrmSettingsPlugin->HandleCommandL( EEikCmdExit );
+        }
+
+    return response;
+    }
+
+// -----------------------------------------------------------------------------
+// CDrmSettingUsageCheckBox::DynamicInitL
+// -----------------------------------------------------------------------------
+//
+void CDrmSettingUsageCheckBox::DynamicInitL()
+    {
+    HBufC* emptyText( StringLoader::LoadLC( R_USAGE_REPORTING_LIST_EMPTY,
+                                            iEikonEnv ) );
+    this->ListBoxControl()->View()->SetListEmptyTextL( *emptyText );
+    CleanupStack::PopAndDestroy( emptyText );
+    }
+
+// -----------------------------------------------------------------------------
+// CDrmSettingUsageCheckBox::OkToExitL
+// -----------------------------------------------------------------------------
+//
+TBool CDrmSettingUsageCheckBox::OkToExitL( TBool aAccept )
+    {
+    TBool exit( ETrue );
+
+    if ( aAccept )
+        {
+        iList->UpdateContexts();
+
+        if ( !iModel->IsMeteringAllowedForAll() )
+            {
+            HBufC* query( StringLoader::LoadLC( R_DRM_CONF_QUERY_METERING,
+                                                iEikonEnv ) );
+
+            CAknQueryDialog* queryDialog( CAknQueryDialog::NewL() );
+
+            TBool retVal( queryDialog->ExecuteLD( R_DRM_CONFIRMATION_QUERY_METERING,
+                                                  *query ) );
+            CleanupStack::PopAndDestroy( query );
+
+            if ( !retVal )
+                {
+                exit = EFalse;
+                }
+            }
+        }
+
+    return exit;
+    }
+
+// -----------------------------------------------------------------------------
+// CDrmSettingUsageCheckBox::AcceptSettingL
+// -----------------------------------------------------------------------------
+//
+void CDrmSettingUsageCheckBox::AcceptSettingL()
+    {
+    iModel->SaveMeteringChanges();
+    }
+
+// -----------------------------------------------------------------------------
+// CDrmSettingUsageCheckBox::ShowInfoPopupL
+// -----------------------------------------------------------------------------
+//
+void CDrmSettingUsageCheckBox::ShowInfoPopupL()
+    {
+    if ( !iPopupController )
+        {
+        iPopupController = CAknInfoPopupNoteController::NewL();
+        }
+    TInt index( this->ListBoxControl()->View()->CurrentItemIndex() );
+    if ( index != -1 )
+        {
+        iPopupController->SetTextL( iList->At(index)->ItemText() );
+        iPopupController->ShowInfoPopupNote();
+        }
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmsettingsplugin/src/drmsettingsusagelist.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or 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:  List class for Usage Reporting checkbox
+*
+*/
+
+
+// INCLUDE FILES
+#include "drmsettingsusagelist.h"
+#include "drmsettingsmodel.h"
+
+// CONSTANTS
+const TInt KDRMSettingsListGranularity( 5 );
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ----------------------------------------------------------------------------
+// CDRMSettingUsageList::NewL
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CDRMSettingUsageList* CDRMSettingUsageList::NewL( 
+    CDRMSettingsModel* aModel )
+    {
+    CDRMSettingUsageList* self( 
+        new( ELeave ) CDRMSettingUsageList( aModel ) );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+	CleanupStack::Pop( self );
+    return self;
+    }
+    
+// ----------------------------------------------------------------------------
+// CDRMSettingUsageList::CDRMSettingUsageList
+// Default constructor.
+// ----------------------------------------------------------------------------
+//
+CDRMSettingUsageList::CDRMSettingUsageList( CDRMSettingsModel* aModel ) 
+    : CSelectionItemList( KDRMSettingsListGranularity ), iModel( aModel )
+    {
+	}
+
+// ----------------------------------------------------------------------------
+// CDRMSettingUsageList::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CDRMSettingUsageList::ConstructL()
+    {
+    for ( TInt i( 0 ); i < iModel->GetRiContextCount(); i++ )
+        {
+        HBufC* alias( iModel->GetSingleRIAliasL( i ) );
+        CleanupStack::PushL( alias );
+        TBool isAllowed( iModel->IsMeteringAllowed( i ) );
+        CSelectableItem* selItem( new (ELeave) CSelectableItem( *alias, 
+                                                                isAllowed ) );
+        selItem->ConstructL();
+        this->AppendL( selItem );
+        CleanupStack::PopAndDestroy( alias );
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CDRMSettingUsageList::~CDRMSettingUsageList
+//
+// Destructor
+// ----------------------------------------------------------------------------
+//
+CDRMSettingUsageList::~CDRMSettingUsageList()
+    {
+    this->ResetAndDestroy();
+    }
+
+// ----------------------------------------------------------------------------
+// CDRMSettingUsageList::UpdateContexts
+// ----------------------------------------------------------------------------
+//
+void CDRMSettingUsageList::UpdateContexts()
+    {
+    for ( TInt i( 0 ); i < iModel->GetRiContextCount(); i++ )
+        {
+        CSelectableItem* selItem( this->At( i ) );
+        iModel->SetMeteringStatus( i, selItem->SelectionStatus() );
+        }
+    }
+	
+//  End of File
--- a/commondrm/drmui/drmuidialogs/bwinscw/drmuidialogsu.def	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
-	?NewL@CDrmUIDialogs@@SAPAV1@XZ @ 1 NONAME ; class CDrmUIDialogs * CDrmUIDialogs::NewL(void)
-	?ShowNoteL@CDrmUIDialogs@@QAEHHABVTDesC16@@H@Z @ 2 NONAME ; int CDrmUIDialogs::ShowNoteL(int, class TDesC16 const &, int)
-	?NewLC@CDrmUIDialogs@@SAPAV1@XZ @ 3 NONAME ; class CDrmUIDialogs * CDrmUIDialogs::NewLC(void)
-
--- a/commondrm/drmui/drmuidialogs/eabi/drmuidialogsu.def	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
-	_ZN13CDrmUIDialogs4NewLEv @ 1 NONAME
-	_ZN13CDrmUIDialogs5NewLCEv @ 2 NONAME
-	_ZN13CDrmUIDialogs9ShowNoteLEiRK7TDesC16i @ 3 NONAME
-
--- a/commondrm/drmui/drmuidialogs/group/bld.inf	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* 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 for DRM UI dialogs
-*		
-*
-*/
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-default
-
-PRJ_EXPORTS
-//drmuidialogs iby files
-../rom/drmuidialogs.iby             CORE_MW_LAYER_IBY_EXPORT_PATH(drmuidialogs.iby)
-
-PRJ_MMPFILES
-../group/drmuidialogs.mmp
--- a/commondrm/drmui/drmuidialogs/group/drmuidialogs.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* 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 definition file for DRM UI dialogs
-*
-*/
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-
-
-TARGET      drmuidialogs.dll
-TARGETTYPE  dll
-UID         0x1000008D 0x20026836
-
-CAPABILITY  CAP_GENERAL_DLL
-VENDORID    VID_DEFAULT
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../../../inc   // ADo level inc dir
-
-// Default system include paths for middleware layer modules.
-MW_LAYER_SYSTEMINCLUDE
-
-#ifdef __DRM
-SOURCE          ../src/drmuidialogs.cpp
-#endif
-
-LIBRARY     euser.lib
-LIBRARY     sysutil.lib
-LIBRARY     HbCore.lib
-
-#if defined(ARMCC)
-deffile ../eabi/
-#elif defined( WINSCW )
-deffile ../bwinscw/
-#endif
-
-// end of file
\ No newline at end of file
--- a/commondrm/drmui/drmuidialogs/inc/drmuidialogs.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* 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:  CDrmUIDialogs API can be used to show UI dialogs via 
-* notification dialog plugin.
-*/
-
-
-#ifndef C_DRMUIDIALOGS_H
-#define C_DRMUIDIALOGS_H
-
-#include <e32base.h>                            // CActive
-#include <hb/hbcore/hbdevicedialogsymbian.h>    // MHbDeviceDialogObserver
-
-class CHbSymbianVariantMap;
-class CActiveSchedulerWait;
-
-/**
- * CDrmUIDialogs manages and controls DRM UI notes and queries. 
- * An Orbit device dialog plugin implements the UI dialogs.
- *
- * @dll drmuidialogs.dll
- * @since 10.1
- */
-NONSHARABLE_CLASS( CDrmUIDialogs ) : public CActive,
-                                     public MHbDeviceDialogObserver
-    {
-    public:  // constructor and destructor
-        /**
-         * Creates new CDrmUIDialogs object and pushes it into cleanup stack.
-         * @returns CDrmUIDialogs* -- new CDrmUIDialogs object
-         */
-        IMPORT_C static CDrmUIDialogs* NewLC();
-
-        /**
-         * Creates new CDrmUIDialogs object.
-         * @returns CDrmUIDialogs* -- new CDrmUIDialogs object
-         */
-        IMPORT_C static CDrmUIDialogs* NewL();
-
-        /**
-         * Destructor.
-         */
-        CDrmUIDialogs::~CDrmUIDialogs();
-
-    public:
-        /**
-        * Displays a note or query dialog synchronously. Synchronous function.
-        * Returns after the user has accepted or cancelled the query.
-        * @param aDialogId  dialog id of dialog to be displayed
-        * @param aString    string that replaces %U in resource string
-        * @param aValue     integer that replaces %N in resource string
-        * @return EOk if user accepted the query, ECancelled otherwise
-        */
-        IMPORT_C TInt ShowNoteL( TInt aDialogId, 
-                                 const TDesC& aString = KNullDesC, 
-                                 TInt aValue = -1 );
-
-    protected:  // from CActive
-        void DoCancel();
-        void RunL();
-
-    private:    // from MHbDeviceDialogObserver
-        void DataReceived( CHbSymbianVariantMap& aData );
-        void DeviceDialogClosed( TInt aCompletionCode );
-
-    private:
-        CDrmUIDialogs();
-        void ConstructL();
-        void ClearParamsL();
-        void ClearParamsAndSetDialogIdL( TInt aDialogId );
-        void AddParamL( const TDesC& aKey, TInt aValue );
-        void AddParamL( const TDesC& aKey, const TDesC& aValue );
-        void DisplayDeviceDialogL();
-        TInt WaitUntilDeviceDialogClosed();
-
-    private:    // data
-        CHbDeviceDialogSymbian* iDeviceDialog; // own
-        CHbSymbianVariantMap* iVariantMap; // own
-        CActiveSchedulerWait* iWait; // own
-        TBool iIsDisplayingDialog;
-        TInt iCompletionCode;
-        TInt iReturnValue;
-    };
-
-#endif  // C_DRMUIDIALOGS_H
--- a/commondrm/drmui/drmuidialogs/rom/drmuidialogs.iby	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* 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:
-*
-*/
-
-#ifndef __DRMUIDIALOGS_IBY__
-#define __DRMUIDIALOGS_IBY__
-
-#include <data_caging_paths_for_iby.hrh>
-
-file=ABI_DIR\BUILD_DIR\drmuidialogs.dll                        SHARED_LIB_DIR\drmuidialogs.dll
-
-#endif//__DRMUIDIALOGS_IBY__
--- a/commondrm/drmui/drmuidialogs/src/drmuidialogs.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
-/*
-* 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 CDrmUIDialogs class.
-*
-*/
-
-#include "drmuidialogs.h"                       // CDrmUIDialogs
-#include <hb/hbcore/hbsymbianvariant.h>         // CHbSymbianVariantMap
-
-// Identifier of DRM UI device notification dialog plugin
-_LIT( KDrmUIDeviceDialogPlugin, "com.nokia.hb.drmuidialog/1.0" );
-
-// Keys for the parameters passed to notification dialog plugin
-_LIT( KDrmUIDialogId, "dialogId" );
-_LIT( KDrmUIInsertText, "insertText" );
-_LIT( KDrmUIInsertInt, "insertInt" );
-
-// Keys name for result sent from notification dialog plugin
-_LIT( KDrmUIDialogResult, "result");
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::NewLC()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CDrmUIDialogs* CDrmUIDialogs::NewLC()
-    {
-    CDrmUIDialogs* self = new( ELeave ) CDrmUIDialogs();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::NewL()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CDrmUIDialogs* CDrmUIDialogs::NewL()
-    {
-    CDrmUIDialogs* self = CDrmUIDialogs::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::~CDrmUIDialogs()
-// ---------------------------------------------------------------------------
-//
-CDrmUIDialogs::~CDrmUIDialogs()
-    {
-    Cancel();
-    delete iWait;
-    delete iDeviceDialog;
-    delete iVariantMap;
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::ShowNoteL()
-// ---------------------------------------------------------------------------
-EXPORT_C TInt CDrmUIDialogs::ShowNoteL( TInt aDialogId, const TDesC& aString, TInt aValue )
-    {
-    // Add the dialog id to the variant map
-    AddParamL( KDrmUIDialogId, aDialogId );
-    
-    // Add the string to the variant map if it exists
-    if ( aString.Compare( KNullDesC ) )
-        {
-        AddParamL( KDrmUIInsertText, aString );
-        }
-
-    // Add the int to the variant map
-    if ( aValue >= 0 )
-        {
-        AddParamL( KDrmUIInsertInt, aValue );
-        }
-
-    DisplayDeviceDialogL();
-
-    TInt error = WaitUntilDeviceDialogClosed();
-    User::LeaveIfError( error );
-
-    return iReturnValue;
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::DoCancel()
-    {
-    if( iWait && iWait->IsStarted() && iWait->CanStopNow() )
-        {
-        iCompletionCode = KErrCancel;
-        iWait->AsyncStop();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::RunL()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::RunL()
-    {
-    if( iWait )
-        {
-        iWait->AsyncStop();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::DataReceived()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::DataReceived( CHbSymbianVariantMap& aData )
-    {
-    const CHbSymbianVariant* resultVariant = aData.Get( KDrmUIDialogResult );
- 
-    if( resultVariant )
-        {
-        TInt* result = resultVariant->Value<TInt>();
-
-        if( result )
-            {
-            iReturnValue = *result;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::DeviceDialogClosed()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::DeviceDialogClosed( TInt aCompletionCode )
-    {
-    iCompletionCode = aCompletionCode;
-    iIsDisplayingDialog = EFalse;
-
-    TRequestStatus* status( &iStatus );
-    User::RequestComplete( status, KErrNone );
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::CDrmUIDialogs()
-// ---------------------------------------------------------------------------
-//
-CDrmUIDialogs::CDrmUIDialogs() : CActive( CActive::EPriorityStandard )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::ConstructL()
-    {
-    iReturnValue = KErrNone;
-    iWait = new( ELeave ) CActiveSchedulerWait;
-    iDeviceDialog = CHbDeviceDialogSymbian::NewL();
-    iVariantMap = CHbSymbianVariantMap::NewL();
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::ClearParamsL()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::ClearParamsL()
-    {
-    if( iVariantMap )
-        {
-        delete iVariantMap;
-        iVariantMap = NULL;
-        }
-    iVariantMap = CHbSymbianVariantMap::NewL();
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::ClearParamsAndSetDialogIdL()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::ClearParamsAndSetDialogIdL( TInt aDialogId )
-    {
-    ClearParamsL();
-    AddParamL( KDrmUIDialogId, aDialogId );
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::AddParamL()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::AddParamL( const TDesC& aKey, TInt aValue )
-    {
-    CHbSymbianVariant* variant = NULL;
-    variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EInt );
-    iVariantMap->Add( aKey, variant );  // Takes ownership of variant
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::AddParamL()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::AddParamL( const TDesC& aKey, const TDesC& aValue )
-    {
-    CHbSymbianVariant* variant = NULL;
-    variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EDes );
-    iVariantMap->Add( aKey, variant );  // Takes ownership of variant
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::DisplayDeviceDialogL()
-// ---------------------------------------------------------------------------
-//
-void CDrmUIDialogs::DisplayDeviceDialogL()
-    {
-    if( iIsDisplayingDialog )
-        {
-        iDeviceDialog->Update( *iVariantMap );
-        }
-    else
-        {
-        iDeviceDialog->Show( KDrmUIDeviceDialogPlugin, *iVariantMap, this );
-        iIsDisplayingDialog = ETrue;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUIDialogs::WaitUntilDeviceDialogClosed()
-// ---------------------------------------------------------------------------
-//
-TInt CDrmUIDialogs::WaitUntilDeviceDialogClosed()
-    {
-    iCompletionCode = KErrInUse;
-
-    if( !IsActive() && iWait && !iWait->IsStarted() )
-        {
-        iStatus = KRequestPending;
-        SetActive();
-        iWait->Start();
-        }
-    return iCompletionCode;
-    }
--- a/commondrm/drmui/drmuinotifications/DRMUINotifications.rss	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-// ============================================================================
-// * Generated by qmake (2.01a) (Qt 4.6.3) on: 2010-05-24T18:48:20
-// * This file is generated by qmake and should not be modified by the
-// * user.
-// ============================================================================
-
-#include <appinfo.rh>
-#include <DRMUINotifications.loc>
-
-RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info
-	{
-	short_caption = STRING_r_short_caption;
-	caption_and_icon =
-	CAPTION_AND_ICON_INFO
-		{
-		caption = STRING_r_caption;
-		number_of_icons = 0;
-		icon_file = "";
-		};
-	}
-
--- a/commondrm/drmui/drmuinotifications/drmuinotifications.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-TEMPLATE = lib
-TARGET = drmuinotifications
-CONFIG += hb \
-    plugin
-INCLUDEPATH += . \
-  ../../../inc
-DEPENDPATH += .
-DESTDIR = $${HB_BUILD_DIR}/plugins/devicedialogs
-MOC_DIR = moc
-OBJECTS_DIR = obj
-
-# dependencies
-HEADERS += inc/drmuidialogsbuilder.h \
-    inc/drmuidialogpluginkeys.h \
-    inc/drmuidialogplugin.h
-SOURCES += src/drmuidialogsbuilder.cpp \
-    src/drmuidialogplugin.cpp \
-    DRMUINotifications_reg.rss
-FORMS += 
-symbian:TARGET.UID3 = 0x20026835
-RESOURCES += resource/drmuinotifications.qrc
-symbian: { 
-    SYMBIAN_PLATFORMS = WINSCW \
-        ARMV5
-    TARGET.EPOCALLOWDLLDATA = 1
-    TARGET.CAPABILITY = CAP_GENERAL_DLL
-    TARGET.UID3 = 20026835
-    hblib.sources = Hb.dll
-    hblib.path = \sys\bin
-    hblib.depends = "(0xEEF9EA38), 1, 0, 0, {\"Hb\"}"
-    pluginstub.sources = drmuinotifications.dll
-    pluginstub.path = /resource/plugins/devicedialogs
-    DEPLOYMENT += pluginstub
-}
-!local { 
-    target.path = $${HB_PLUGINS_DIR}/devicedialogs
-    INSTALLS += target
-}
-BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>" \
-    "rom/drmuinotifications.iby CORE_MW_LAYER_IBY_EXPORT_PATH(drmuinotifications.iby)" \
-    "qmakepluginstubs/drmuinotifications.qtplugin /epoc32/data/z/pluginstub/drmuinotifications.qtplugin"
--- a/commondrm/drmui/drmuinotifications/inc/drmuidialogplugin.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * 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:  Plugin error constants
- *
- */
-
-#ifndef DRMUIDIALOGPLUGIN_H
-#define DRMUIDIALOGPLUGIN_H
-
-#include <QObject>
-#include <QVariantMap>
-
-#include <hbdevicedialogplugin.h>
-
-
-class DrmUIDialogPlugin : public HbDeviceDialogPlugin
-
-    {
-Q_OBJECT
-
-public:
-
-    DrmUIDialogPlugin();
-    ~DrmUIDialogPlugin();
-
-    // from base HbDeviceDialogPluginInterface
-    virtual HbDeviceDialogInterface *createDeviceDialog(
-            const QString &deviceDialogType, const QVariantMap &parameters);
-
-    // from base HbDeviceDialogPlugin
-    virtual bool
-            accessAllowed(const QString &deviceDialogType,
-                    const QVariantMap &parameters,
-                    const QVariantMap &securityInfo) const;
-    virtual bool deviceDialogInfo(const QString &deviceDialogType,
-            const QVariantMap &parameters, DeviceDialogInfo *info) const;
-    virtual QStringList deviceDialogTypes() const;
-    virtual PluginFlags pluginFlags() const;
-    virtual int error() const;
-
-private:
-    Q_DISABLE_COPY(DrmUIDialogPlugin)
-
-    };
-
-#endif 
--- a/commondrm/drmui/drmuinotifications/inc/drmuidialogpluginkeys.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* 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: DrmUi notification keys.
-*
-*/
-
-#ifndef DRMUIPLUGINKEYS_H
-#define DRMUIPLUGINKEYS_H
-
-#include <QString>
-
-
-// Keys for the parameters passed to notification framework plugin
-const QString KDrmUIDialogId("dialogId");
-const QString KDrmUIInsertText("insertText");
-const QString KDrmUIInsertInt("insertInt");
-// Keys name for result sent from notification dialog plugin
-const QString KDrmUIDialogResult("result");
-
-
-#endif // DRMUIPLUGINKEYS_H
--- a/commondrm/drmui/drmuinotifications/inc/drmuidialogsbuilder.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * 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:  
- *
- */
-
-#ifndef DRUMUIDIALOGSBUILDER_H
-#define DRUMUIDIALOGSBUILDER_H
-
-#include <QObject>
-#include <QVariantMap>
-#include <hbdevicedialoginterface.h>
-
-class HbDocumentLoader;
-class HbDialog;
-
-class DrmUiDialogsBuilder : public QObject, public HbDeviceDialogInterface
-    {
-Q_OBJECT
-public:
-    DrmUiDialogsBuilder(const QVariantMap &parameters);
-    ~DrmUiDialogsBuilder();
-
-public:
-    // from HbDeviceDialogInterface
-    virtual bool setDeviceDialogParameters(const QVariantMap &parameters);
-    virtual int deviceDialogError() const;
-    virtual void closeDeviceDialog(bool byClient);
-    virtual HbPopup *deviceDialogWidget() const;
-    virtual QObject *signalSender() const;
-
-
-public slots:
-    void  cancelDialog();
-    void  confirmDialog();
-    
-private:
-    bool constructDialog(const QVariantMap &parameters);
-
-signals:
-   // signlas needed by HbDeviceDialogInterface
-    void deviceDialogClosed();
-    void deviceDialogData(QVariantMap data);
-
-private:
-    HbDocumentLoader *mLoader;
-    HbDialog * mDialog;
-
-    Q_DISABLE_COPY(DrmUiDialogsBuilder)
-    };
-
-#endif /* DRUMUIDIALOGSBUILDER_H */
--- a/commondrm/drmui/drmuinotifications/resource/Registeringprog.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Registering"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Registering phone"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/accountupdatequery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Update"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Account Update"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Registration will be updated. Continue?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/acquiringlicenceprog.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Acquiring licence"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Processing"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/copyobjectsquery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Copy"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Copy Objects"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to move protected objects. Move unprotected objects only?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/deletedrmfilequery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Delete"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Delete"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Delete DRM protected file?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/deregisteredconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Deregistered"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Phone deregistered"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/deregisteringprog.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Deregistering"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Deregistering phone"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/drmuinotifications.qrc	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<RCC>
-    <qresource prefix="/xml">
-        <file alias="norightsobjectquery.docml" >norightsobjectquery.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="rightsobjectexpiredquery.docml" >rightsobjectexpiredquery.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="simnotallowedquery.docml" >simnotallowedquery.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="waitingforrightsobjconf.docml" >waitingforrightsobjconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="copyobjectsquery.docml" >copyobjectsquery.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="filedeletedconf.docml" >filedeletedconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="deletedrmfilequery.docml" >deletedrmfilequery.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="moveobjectsquery.docml" >moveobjectsquery.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="nocountquery.docml" >nocountquery.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="nousagequery.docml" >nousagequery.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="objectlockedconf.docml" >objectlockedconf.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="unabletocopyconf.docml" >unabletocopyconf.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="unabletomoveconf.docml" >unabletomoveconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="unsupportedconf.docml" >unsupportedconf.docml</file>
-    </qresource>
-   
-     <qresource prefix="/xml">
-        <file alias="noconnectiondefinednote.docml" >noconnectiondefinednote.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="invalidornoapnote.docml" >invalidornoapnote.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="openingfailpermnote.docml" >openingfailpermnote.docml</file>
-    </qresource>
-    
-     <qresource prefix="/xml">
-        <file alias="deregisteredconf.docml" >deregisteredconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="forwardprotectedconf.docml" >forwardprotectedconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="licenceexpiredconf.docml" >licenceexpiredconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="notrecognizedconf.docml" >notrecognizedconf.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="registeredconf.docml" >registeredconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="registerfailureconf.docml" >registerfailureconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="unabletoderegisterconf.docml" >unabletoderegisterconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="unabletosendconf.docml" >unabletosendconf.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="updatedconf.docml" >updatedconf.docml</file>
-    </qresource>
-    
-      <qresource prefix="/xml">
-        <file alias="updatefailureconf.docml" >updatefailureconf.docml</file>
-    </qresource>
-    
-      <qresource prefix="/xml">
-        <file alias="viewrestrictionconf.docml" >viewrestrictionconf.docml</file>
-    </qresource>
-    
-      <qresource prefix="/xml">
-        <file alias="accountupdatequery.docml" >accountupdatequery.docml</file>
-    </qresource>
-
-      <qresource prefix="/xml">
-        <file alias="getnewlicencequery.docml" >getnewlicencequery.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="retryforlicencequery.docml" >retryforlicencequery.docml</file>
-    </qresource>
-    
-       <qresource prefix="/xml">
-        <file alias="unabletosendquery.docml" >unabletosendquery.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="rightsobjectsrecievednote.docml" >rightsobjectsrecievednote.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="waitingforlicenceconf.docml" >waitingforlicenceconf.docml</file>
-    </qresource>
-    
-        <qresource prefix="/xml">
-        <file alias="acquiringlicenceprog.docml" >acquiringlicenceprog.docml</file>
-    </qresource>
-    
-   <qresource prefix="/xml">
-        <file alias="deregisteringprog.docml" >deregisteringprog.docml</file>
-    </qresource>
-    
-      <qresource prefix="/xml">
-        <file alias="Registeringprog.docml" >Registeringprog.docml</file>
-    </qresource>
-    
-    <qresource prefix="/xml">
-        <file alias="updatingprog.docml" >updatingprog.docml</file>
-    </qresource>
-</RCC>
--- a/commondrm/drmui/drmuinotifications/resource/filedeletedconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Deleted"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="File deleted."/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/forwardprotectedconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Forward Protected"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to forward protected objects"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/getnewlicencequery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Get"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Get new licence"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Licence not yet recieved. Expected time of delivery elapsed. Get new license?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/infoexpiredornoronote.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="qtl_dialog_softkey_2_left" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <real name="z" value="2"/>
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to unlock file. Connection failed with used access point."/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <layout spacing="0un" type="grid">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <griditem column="0" itemname="qtl_dialog_pri5" row="0"/>
-            </layout>
-        </widget>
-        <sizehint height="42.38806un" type="PREFERRED" width="50.5un"/>
-        <rect height="19.70149un" name="geometry" width="49.10448un" x="2.68657un" y="44.92537un"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/invalidornoapnote.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="qtl_dialog_softkey_2_left" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <real name="z" value="2"/>
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="License has expired or it is missing"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <layout spacing="0un" type="grid">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <griditem column="0" itemname="qtl_dialog_pri5" row="0"/>
-            </layout>
-        </widget>
-        <rect height="19.70149un" name="geometry" width="49.10448un" x="2.68657un" y="44.92537un"/>
-        <sizehint height="42.38806un" type="PREFERRED" width="50.5un"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/licenceexpiredconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Licence"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Licence expired"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/moveobjectsquery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Move"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Move Objects"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to move protected objects. Move unprotected objects only?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/noconnectiondefinednote.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="qtl_dialog_softkey_2_left" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <real name="z" value="2"/>
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to unlock file. Define at least one access point."/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <layout spacing="0un" type="grid">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <griditem column="0" itemname="qtl_dialog_pri5" row="0"/>
-            </layout>
-        </widget>
-        <sizehint height="42.38806un" type="PREFERRED" width="50.5un"/>
-        <rect height="17.16418un" name="geometry" width="49.10448un" x="2.68657un" y="44.92537un"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/nocountquery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Extend"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="No Count"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to use object. Extend to use?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/norightsobjectquery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Get"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="No Rights Object"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="No Rights Object for the file in this device"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/notrecognizedconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Not Recognized"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Account is not recognized"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/nousagequery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Extend"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="No Usage"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="No usage time to use. Extend to use?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/objectlockedconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Object Locked"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to send copyright protected item"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/openingfailpermnote.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <widget name="dialog" type="HbDialog">
-        <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="labelPrimary" type="HbLabel">
-                <enums name="alignment" value="AlignLeft|AlignLeading"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <string name="plainText" value="Unable to unlock file"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <layout spacing="0un" type="grid">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <griditem column="0" itemname="labelPrimary" row="0"/>
-            </layout>
-        </widget>
-        <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/registeredconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Registered"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Phone registered"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/registerfailureconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Register failure"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to register"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/retryforlicencequery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Try again"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Retry for licence"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Licence not received. Try again?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/rightsobjectexpiredquery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Update"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Rights Object Expired"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="No Rights Object for the file in this device"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/rightsobjectsrecievednote.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <widget name="dialog" type="HbDialog">
-        <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="labelPrimary" type="HbLabel">
-                <enums name="alignment" value="AlignLeft|AlignLeading"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <string name="plainText" value="Rights Objects Recieved"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <layout spacing="0un" type="grid">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <griditem column="0" itemname="labelPrimary" row="0"/>
-            </layout>
-        </widget>
-        <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/simnotallowedquery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Unlock"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="File Locked"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="File locked with current SIM card. Unlock for this SIM card?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/unabletocopyconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Unable to Copy"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to copy protected object to memory card"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/unabletoderegisterconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Unable to deregister"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to deregister phone"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/unabletomoveconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Unable to Move"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to move protected object to memory card."/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/unabletosendconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Unable to send"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to send protected objects"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/unabletosendquery.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Send"/>
-    </object>
-    <object name="secondary" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Send"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to send protected objects. Send unprotected objects only?"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-        <ref object="secondary" role="HbDialog:secondaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/unsupportedconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Unsupported"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to use object"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/updatedconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Updated"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Registration updated"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/updatefailureconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Update failure"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to update registration"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/updatingprog.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Updating"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Updating registration"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/viewrestrictionconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="View restriction"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to use. Object can only be viewed"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/waitingforlicenceconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Not Ready"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Waiting for licence. Try again later"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/resource/waitingforrightsobjconf.docml	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="primary" type="HbAction">
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="role" value="HbDialog:primaryAction"/>
-        <string name="text" value="OK"/>
-    </object>
-    <object name="qtl_dialog_softkey_2_right" type="HbAction">
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="role" value="HbDialog:secondaryAction"/>
-        <string name="text" value="Cancel"/>
-    </object>
-    <widget name="dialog" type="HbDialog">
-        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-            <string name="plainText" value="Object Locked"/>
-            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-        </widget>
-        <widget name="qtl_dialog_pri5_large_graphic" role="HbDialog:contentWidget" type="HbWidget">
-            <widget name="icon" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-graphic-size-primary-large)" type="FIXED" width="var(hb-param-graphic-size-primary-large)"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="?"/>
-            </widget>
-            <widget name="qtl_dialog_pri5" type="HbLabel">
-                <enums name="textWrapping" value="TextWordWrap"/>
-                <bool name="visible" value="TRUE"/>
-                <string name="plainText" value="Unable to send protected object"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
-            <real name="z" value="0"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-popup)" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
-                <linearitem itemname="icon"/>
-                <linearitem itemname="qtl_dialog_pri5"/>
-            </layout>
-        </widget>
-        <sizehint height="42.08955un" type="PREFERRED" width="50.5un"/>
-        <ref object="primary" role="HbDialog:primaryAction"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <resource location="TemplateIcons.qrc"/>
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/commondrm/drmui/drmuinotifications/rom/drmuinotifications.iby	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2003-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:  Image description file for project 
-*
-*/
-
-
-#ifndef DRMUINOTIFICATIONS_IBY
-#define DRMUINOTIFICATIONS_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-file=ABI_DIR/BUILD_DIR/drmuinotifications.dll SHARED_LIB_DIR/drmuinotifications.dll
-data=/epoc32/data/z/pluginstub/drmuinotifications.qtplugin   resource/plugins/devicedialogs/drmuinotifications.qtplugin
-
-
-#endif // drmuinotifications_IBY
\ No newline at end of file
--- a/commondrm/drmui/drmuinotifications/src/drmuidialogplugin.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
- * 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:  DrmUIDialogPlugin class implementation.
- *
- */
-
-#include "DrmUIDialogPlugin.h"
-#include <QtPlugin>
-#include <hbdevicedialog.h>
-#include "drmuidialogsbuilder.h"
-#include "drmuidialogpluginkeys.h"
-
-Q_EXPORT_PLUGIN2(DrmUIDialogPlugin, DrmUIDialogPlugin)
-
-const int NmMaxDialogCount = 10;
-static const QString drmUiDialog = "com.nokia.hb.drmuidialog/1.0";
-
-/*! 
- DrmUIDialogPlugin Constructor
- */
-DrmUIDialogPlugin::DrmUIDialogPlugin()
-    {
-
-    }
-
-/*!
- Destructor
- */
-DrmUIDialogPlugin::~DrmUIDialogPlugin()
-    {
-
-    }
-
-/*! 
- Check if client is allowed to use device dialog widget
- */
-bool DrmUIDialogPlugin::accessAllowed(const QString &deviceDialogType,
-        const QVariantMap &parameters, const QVariantMap &securityInfo) const
-    {
-    Q_UNUSED (deviceDialogType)
-    Q_UNUSED(parameters)
-    Q_UNUSED(securityInfo)
-
-    // This plugin doesn't perform operations that may compromise security.
-    // All clients are allowed to use.
-    return true;
-    }
-
-/*! 
- From interface class.
- Use the dialog type in the parameter to create widget.    
- */
-HbDeviceDialogInterface *DrmUIDialogPlugin::createDeviceDialog(
-        const QString &deviceDialogType, const QVariantMap &parameters)
-    {
-    Q_UNUSED(deviceDialogType)
-    return new DrmUiDialogsBuilder(parameters);
-    }
-
-/*! 
- Return information of device dialog the plugin creates
- Currently only supporting 1 device dialog type, so no need to check the type.
- */
-bool DrmUIDialogPlugin::deviceDialogInfo(const QString &deviceDialogType,
-        const QVariantMap &parameters, DeviceDialogInfo *info) const
-    {
-    Q_UNUSED(parameters)
-    Q_UNUSED(deviceDialogType)
-    // set return values
-    info->group = GenericDeviceDialogGroup;
-    info->flags = NoDeviceDialogFlags;
-    info->priority = DefaultPriority;
-    return true;
-    }
-
-/*! 
- Return device dialog types this plugin implements
- Function will work fine (unchanged) when new dialogs are added.
- */
-QStringList DrmUIDialogPlugin::deviceDialogTypes() const
-    {
-    QStringList types;
-    types.append(drmUiDialog);
-    return types;
-
-    }
-
-/*! 
- Return plugin flags
- */
-HbDeviceDialogPlugin::PluginFlags DrmUIDialogPlugin::pluginFlags() const
-    {
-    return NoPluginFlags;
-    }
-
-/*! 
- Return last error
- */
-int DrmUIDialogPlugin::error() const
-    {
-    return 0;
-    }
-
--- a/commondrm/drmui/drmuinotifications/src/drmuidialogsbuilder.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,439 +0,0 @@
-/*
- * 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:  
- *
- */
-#include "drmuidialogsbuilder.h"
-#include <hbdocumentloader.h>
-#include "drmuidialogpluginkeys.h"
-#include <drmuidialogids.h> 
-#include <hbaction.h>
-#include <hbdialog.h>
-#include <hblabel.h>
-#include <QString>
-#include <HbPopup.h>
-
-static const QString DOCML_NO_RIGHTS_OBJECT_DIALOG_QUERY =
-        ":/xml/norightsobjectquery.docml";
-static const QString DOCML_SIM_NOT_ALLOWED_QUERY =
-        ":/xml/simnotallowedquery.docml";
-static const QString DOCML_RIGHTS_OBJECT_EXPIRED_QUERY =
-        ":/xml/rightsobjectexpiredquery.docml";
-static const QString DOCML_WAITING_FOR_RIGHTS_OBJECT_CONF =
-        ":/xml/waitingforrightsobjconf.docml";
-static const QString DOCML_COPY_OBJECTS_QUERY =
-        ":/xml/copyobjectsquery.docml";
-static const QString DOCML_DELETED_CONF = ":/xml/filedeletedconf.docml";
-static const QString DOCML_DELETED_DRM_FILE_QUERY =
-        ":/xml/deletedrmfilequery.docml";
-static const QString DOCML_MOVE_OBJECTS_QUERY =
-        ":/xml/moveobjectsquery.docml";
-static const QString DOCML_NO_COUNT_QUERY = ":/xml/nocountquery.docml";
-static const QString DOCML_NO_USAGE_QUERY = ":/xml/nousagequery.docml";
-static const QString DOCML_OBJECT_LOCKED_CONF =
-        ":/xml/objectlockedconf.docml";
-static const QString DOCML_UNABLE_TO_COPY_CONF =
-        ":/xml/unabletocopyconf.docml";
-static const QString DOCML_UNABLE_TO_MOVE_CONF =
-        ":/xml/unabletomoveconf.docml";
-static const QString DOCML_UNSUPPORTED_CONF = ":/xml/unsupportedconf.docml";
-static const QString DOCML_DEREGISTERED_CONF = ":/xml/deregisteredconf.docml";
-static const QString DOCML_FILEDELETED_CONF = ":/xml/filedeletedconf.docml";
-static const QString DOCML_FORWARD_PROTECTED_CONF =
-        ":/xml/forwardprotectedconf.docml";
-static const QString DOCML_LICENCE_EXPIRED_CONF =
-        ":/xml/licenceexpiredconf.docml";
-static const QString DOCML_NOT_RECOGNIZED_CONF =
-        ":/xml/notrecognizedconf.docml";
-static const QString DOCML_REGISTERED_CONF = ":/xml/registeredconf.docml";
-static const QString DOCML_REGISTER_FAILURE_CONF =
-        ":/xml/registerfailureconf.docml";
-static const QString DOCML_UNABLE_TO_DEREGISTER_CONF =
-        ":/xml/unabletoderegisterconf.docml";
-static const QString DOCML_UNABLE_TO_SEND_CONF =
-        ":/xml/unabletosendconf.docml";
-static const QString DOCML_UPDATED_CONF = ":/xml/updatedconf.docml";
-static const QString DOCML_UPDATE_FAILURE_CONF =
-        ":/xml/updatefailureconf.docml";
-static const QString DOCML_VIEW_RESTRICTION_CONF =
-        ":/xml/viewrestrictionconf.docml";
-static const QString DOCML_ACCOUNT_UPDATE_QUERY =
-        ":/xml/accountupdatequery.docml";
-static const QString DOCML_GET_LICENCE_QUERY =
-        ":/xml/getnewlicencequery.docml";
-static const QString DOCML_RETRY_FOR_LICENCE_QUERY =
-        ":/xml/retryforlicencequery.docml";
-static const QString DOCML_UNABLE_TO_SEND_QUERY =
-        ":/xml/unabletosendquery.docml";
-static const QString DOCML_RIGHTS_OBJECTS_RECIEVED_NOTE =
-        ":/xml/rightsobjectsrecievednote.docml";
-static const QString DOCML_WAITING_FOR_LICENCE_CONF =
-        ":/xml/waitingforlicenceconf.docml";
-static const QString DOCML_ACQUIRING_LICENCE_PROG =
-        ":/xml/acquiringlicenceprog.docml";
-static const QString DOCML_REGISTERING_PROG =
-        ":/xml/Registeringprog.docml";
-static const QString DOCML_UPDATING_PROG =
-        ":/xml/updatingprog.docml";
-static const QString DOCML_DEREGISTERING_PROG =
-        ":/xml/deregisteringprog.docml";
-
-// Notes have not been defined in the XLS document yet hence commented out
-/*
- static const QString DOCML_NO_CONNECTION_DEFINED =
- ":/xml/noconnectiondefined.docml";
- static const QString DOCML_INVALID_OR_NO_AP = ":/xml/invalidornoap.docml";
- static const QString DOCML_OPENING_FAIL_PERM = ":/xml/openingfailperm.docml";
- */
-
-/*!
- class Constructor
- */
-DrmUiDialogsBuilder::DrmUiDialogsBuilder(const QVariantMap &parameters) :
-    QObject()
-    {
-    constructDialog(parameters);
-    }
-
-DrmUiDialogsBuilder::~DrmUiDialogsBuilder()
-    {
-    delete mLoader;
-    mLoader = NULL;
-    }
-
-/*!
- Get error, implementation of interface
- */
-int DrmUiDialogsBuilder::deviceDialogError() const
-    {
-    return 0;
-    }
-
-/*!
- Set parameters, implementation of interface
- Invoked when HbDeviceDialog::update calls.
- */
-bool DrmUiDialogsBuilder::setDeviceDialogParameters(
-        const QVariantMap &parameters)
-    {
-    constructDialog(parameters);
-    return true;
-    }
-
-/*!
- Close notification, implementation of interface
- */
-void DrmUiDialogsBuilder::closeDeviceDialog(bool byClient)
-    {
-    Q_UNUSED(byClient);
-    emit deviceDialogClosed();
-    }
-/*!
- Return display widget, implementation of interface
- */
-QObject *DrmUiDialogsBuilder::signalSender() const
-    {
-    return const_cast<DrmUiDialogsBuilder*> (this);
-    }
-
-/*!
- Return display widget, implementation of interface
- */
-HbPopup* DrmUiDialogsBuilder::deviceDialogWidget() const
-    {
-    return mDialog;
-    }
-
-/*!
- Construct display widget
- */
-bool DrmUiDialogsBuilder::constructDialog(const QVariantMap &parameters)
-    {
-    if (mLoader == 0)
-        {
-        mLoader = new HbDocumentLoader();
-        }
-    bool ok = false;
-    int mQueryType;
-    if (parameters.contains(KDrmUIDialogId))
-        {
-
-        mQueryType = parameters.value(KDrmUIDialogId).toInt();
-        //switch cases to set load docml files for the parameters
-        switch (mQueryType)
-            {
-            case EQueryNoRightsObj:
-                mLoader->load(DOCML_NO_RIGHTS_OBJECT_DIALOG_QUERY, &ok);
-                break;
-
-            case EQueryFileLockedForSim:
-                mLoader->load(DOCML_SIM_NOT_ALLOWED_QUERY, &ok);
-                break;
-
-            case EQueryRightsObjExpired:
-                mLoader->load(DOCML_RIGHTS_OBJECT_EXPIRED_QUERY, &ok);
-                break;
-
-            case EConfWaitingForLicence:
-                mLoader->load(DOCML_WAITING_FOR_LICENCE_CONF, &ok);
-                break;
-
-            case EConfDeleted:
-                mLoader->load(DOCML_DELETED_CONF, &ok);
-                break;
-
-            case EConfObjLocked:
-                mLoader->load(DOCML_OBJECT_LOCKED_CONF, &ok);
-                break;
-
-            case EConfUnableToCopy:
-                mLoader->load(DOCML_UNABLE_TO_COPY_CONF, &ok);
-                break;
-            case EConfUnableToMove:
-                mLoader->load(DOCML_UNABLE_TO_MOVE_CONF, &ok);
-                break;
-
-            case EConfUnsupportedObj:
-                mLoader->load(DOCML_UNSUPPORTED_CONF, &ok);
-                break;
-
-            case EQueryCopyObjects:
-                mLoader->load(DOCML_COPY_OBJECTS_QUERY, &ok);
-                break;
-
-            case EQueryDeleteDRMFile:
-                mLoader->load(DOCML_DELETED_DRM_FILE_QUERY, &ok);
-                break;
-
-            case EQueryMoveObjects:
-                mLoader->load(DOCML_MOVE_OBJECTS_QUERY, &ok);
-                break;
-
-            case EQueryNoCount:
-                mLoader->load(DOCML_NO_COUNT_QUERY, &ok);
-                break;
-
-            case EQueryNoUsage:
-                mLoader->load(DOCML_NO_USAGE_QUERY, &ok);
-                break;
-
-            case EQuerySendUnprotectedObjs:
-                mLoader->load(DOCML_UNABLE_TO_SEND_QUERY, &ok);
-                break;
-
-            case EQueryAccountUpdate:
-                mLoader->load(DOCML_ACCOUNT_UPDATE_QUERY, &ok);
-                break;
-
-            case EQueryRetryForLicence:
-                mLoader->load(DOCML_RETRY_FOR_LICENCE_QUERY, &ok);
-                break;
-
-            case EQueryGetNewLicence:
-                mLoader->load(DOCML_GET_LICENCE_QUERY, &ok);
-                break;
-
-            case EConfLicenceExpired:
-                mLoader->load(DOCML_LICENCE_EXPIRED_CONF, &ok);
-                break;
-
-            case EConfForwardProtected:
-                mLoader->load(DOCML_FORWARD_PROTECTED_CONF, &ok);
-                break;
-
-            case EConfUnableToSend:
-                mLoader->load(DOCML_UNABLE_TO_SEND_CONF, &ok);
-                break;
-
-            case EConfViewRestriction:
-                mLoader->load(DOCML_VIEW_RESTRICTION_CONF, &ok);
-                break;
-
-            case EConfUnableToDeregister:
-                mLoader->load(DOCML_UNABLE_TO_DEREGISTER_CONF, &ok);
-                break;
-
-            case EConfPhoneDeregistered:
-                mLoader->load(DOCML_DEREGISTERED_CONF, &ok);
-                break;
-
-            case EConfRegUpdateFailure:
-                mLoader->load(DOCML_UPDATE_FAILURE_CONF, &ok);
-                break;
-
-            case EConfAccountNotRecognized:
-                mLoader->load(DOCML_NOT_RECOGNIZED_CONF, &ok);
-                break;
-
-            case EConfPhoneRegistered:
-                mLoader->load(DOCML_REGISTERED_CONF, &ok);
-                break;
-
-            case EConfRegistrationUpdated:
-                mLoader->load(DOCML_UPDATED_CONF, &ok);
-                break;
-                
-            case EConfRegistrationFailure:
-                mLoader->load(DOCML_REGISTER_FAILURE_CONF, &ok);
-                break;
-
-            case ENoteRightsObjReceived:
-                mLoader->load(DOCML_RIGHTS_OBJECTS_RECIEVED_NOTE, &ok);
-                break;
-
-            case EProgDeregisteringPhone:
-                mLoader->load(DOCML_DEREGISTERING_PROG, &ok);
-                break;
-
-            case EProgAcquiringLicence:
-                mLoader->load(DOCML_ACQUIRING_LICENCE_PROG, &ok);
-                break;
-
-            case EProgRegisteringPhone:
-                mLoader->load(DOCML_REGISTERING_PROG, &ok);
-                break;
-            case EProgUpdatingRegistration:
-                mLoader->load(DOCML_UPDATING_PROG, &ok);
-                break;
-                           
-            //Notes are not defined in the locatization xls hence commented out
-            /*case ENoteNoConnectionDefined:
-                mLoader->load(DOCML_NO_CONNECTION_DEFINED, &ok);
-                break;
-
-            case ENoteInvalidOrNoAP:
-                mLoader->load(DOCML_INVALID_OR_NO_AP, &ok);
-                break;
-
-            case ENoteOpeningFailPerm:
-                mLoader->load(DOCML_OPENING_FAIL_PERM, &ok);
-                break;*/
-            default:
-                break;
-
-            }
-        if (ok)
-            {
-            QGraphicsWidget *widget = mLoader->findWidget(QString("dialog"));
-            mDialog = qobject_cast<HbDialog*> (widget);
-            switch (mQueryType)
-                {
-                //Cases for two push button dialogs  
-                case EQueryNoRightsObj:
-                case EQueryFileLockedForSim:
-                case EQueryRightsObjExpired:
-                case EQueryCopyObjects:
-                case EQueryDeleteDRMFile:
-                case EQueryMoveObjects:
-                case EQueryNoCount:
-                case EQueryNoUsage: 
-                case EQuerySendUnprotectedObjs:
-                case EQueryAccountUpdate:
-                case EQueryRetryForLicence:
-                case EQueryGetNewLicence:
-                    connect(qobject_cast<HbAction*> (mLoader->findObject(
-                            "secondary")), SIGNAL(
-                            triggered()), this, SLOT(cancelDialog()));
-                    connect(qobject_cast<HbAction*> (mLoader->findObject(
-                            "primary")), SIGNAL(
-                            triggered()), this, SLOT(confirmDialog()));
-                    mDialog->setTimeout(HbPopup::NoTimeout);
-                    mDialog->setDismissPolicy(HbPopup::NoDismiss);
-                    mDialog->setModal(true);
-                    break;
-                    
-                 //Cases single push button dialogs    
-                case EConfWaitingForLicence:
-                case EConfDeleted:
-                case EConfObjLocked:
-                case EConfUnableToCopy:
-                case EConfUnableToMove:
-                case EConfUnsupportedObj: 
-                case EConfLicenceExpired:
-                case EConfForwardProtected:
-                case EConfUnableToSend:
-                case EConfViewRestriction:
-                case EConfUnableToDeregister:
-                case EConfPhoneDeregistered:
-                case EConfRegUpdateFailure:
-                case EConfAccountNotRecognized:
-                case EConfPhoneRegistered:
-                case EConfRegistrationUpdated:
-                case EConfRegistrationFailure:
-                    connect(qobject_cast<HbAction*> (mLoader->findObject(
-                            "primary")), SIGNAL(
-                            triggered()), this, SLOT(confirmDialog()));
-                    mDialog->setTimeout(HbPopup::NoTimeout);
-                    mDialog->setDismissPolicy(HbPopup::NoDismiss);
-                    mDialog->setModal(true);
-                    break;
-
-                    // Cases for progress bar or wait notes
-                case EProgDeregisteringPhone:
-                case EProgAcquiringLicence:
-                case EProgRegisteringPhone:
-                case EProgUpdatingRegistration:
-                    connect(qobject_cast<HbAction*> (mLoader->findObject(
-                            "primary")), SIGNAL(
-                            triggered()), this, SLOT(cancelDialog()));
-                    mDialog->setTimeout(HbPopup::NoTimeout);
-                    mDialog->setDismissPolicy(HbPopup::NoDismiss);
-                    mDialog->setModal(true);
-                    break;
-                    
-                //DrmUi Notes
-               //Notes are not defined in the locatization xls hence commented out
-              // case ENoteNoConnectionDefined:
-              // case ENoteInvalidOrNoAP:
-              // case ENoteOpeningFailPerm:
-                case ENoteRightsObjReceived:
-                    mDialog->setTimeout(HbPopup::StandardTimeout);
-                    mDialog->setDismissPolicy(HbPopup::NoDismiss);
-                    break;
-                default:
-                    break;
-                  
-                }
-            }
-        else
-            {
-            qFatal("Unable to load %S");
-            return EFalse;
-            }
-        }
-
-    return ETrue;
-    }
-/*!
- Handle secondary push button triggered
- */
-void DrmUiDialogsBuilder::cancelDialog()
-    {
-    QVariantMap val;
-    QVariant index(ECancelled);
-    val.insert("result", index);
-    emit deviceDialogData(val);
-    emit deviceDialogClosed();
-    }
-/*!
- Handle Primary push button triggered
- */
-void DrmUiDialogsBuilder::confirmDialog()
-    {
-    QVariantMap val;
-    QVariant index(EOk);
-    val.insert("result", index);
-    emit deviceDialogData(val);
-    emit deviceDialogClosed();
-    }
--- a/commondrm/drmui/group/bld.inf	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
-* 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
-
-PRJ_MMPFILES
-
-#include "../drmuidialogs/group/bld.inf"
-
-
-PRJ_TESTMMPFILES
-
-//  End of File  
--- a/commondrm/drmutility/bwinscw/drmutilitycommonu.def	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/bwinscw/drmutilitycommonu.def	Wed Sep 01 12:21:16 2010 +0100
@@ -1,23 +1,24 @@
 EXPORTS
-	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXAAVTDesC16@@HABV3@H@Z @ 1 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(class TDesC16 &, int, class TDesC16 const &, int)
-	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXH@Z @ 2 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(int)
-	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXHABVTDesC16@@@Z @ 3 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(int, class TDesC16 const &)
-	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXHH@Z @ 4 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(int, int)
-	?DisplayPopupWindowsForPreviewL@CDrmUtilityUI@DRM@@QAEHAAVCData@ContentAccess@@HH@Z @ 5 NONAME ; int DRM::CDrmUtilityUI::DisplayPopupWindowsForPreviewL(class ContentAccess::CData &, int, int)
-	?DisplayQueryL@CDrmUtilityUI@DRM@@QAEHAAVTDesC16@@H@Z @ 6 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryL(class TDesC16 &, int)
-	?DisplayQueryL@CDrmUtilityUI@DRM@@QAEHHABVTDesC16@@@Z @ 7 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryL(int, class TDesC16 const &)
+	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXHABVTDesC16@@@Z @ 1 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(int, class TDesC16 const &)
+	?DisplayQueryL@CDrmUtilityUI@DRM@@QAEHAAVTDesC16@@H@Z @ 2 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryL(class TDesC16 &, int)
+	?SetAutomatedQueryL@CDrmUtilityUI@DRM@@QAEHPAVCDRMConstraint@@@Z @ 3 NONAME ; int DRM::CDrmUtilityUI::SetAutomatedQueryL(class CDRMConstraint *)
+	?NewL@CDrmUtilityUI@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 4 NONAME ; class DRM::CDrmUtilityUI * DRM::CDrmUtilityUI::NewL(class CCoeEnv *)
+	?DisplayQueryL@CDrmUtilityUI@DRM@@QAEHHH@Z @ 5 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryL(int, int)
+	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXAAVTDesC16@@HABV3@H@Z @ 6 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(class TDesC16 &, int, class TDesC16 const &, int)
+	?NewL@CDrmUtilityWMDrm@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 7 NONAME ; class DRM::CDrmUtilityWMDrm * DRM::CDrmUtilityWMDrm::NewL(class CCoeEnv *)
 	?DisplayQueryL@CDrmUtilityUI@DRM@@QAEHHABVTDesC16@@HHH@Z @ 8 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryL(int, class TDesC16 const &, int, int, int)
-	?DisplayQueryL@CDrmUtilityUI@DRM@@QAEHHH@Z @ 9 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryL(int, int)
-	?DisplayQueryWithIdL@CDrmUtilityUI@DRM@@QAEHHH@Z @ 10 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryWithIdL(int, int)
-	?DisplayQueryWithIdValueL@CDrmUtilityUI@DRM@@QAEHHHABVTDesC16@@@Z @ 11 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryWithIdValueL(int, int, class TDesC16 const &)
-	?GetOmaRightsStatusL@CDrmUtilityCommon@DRM@@QAE?AW4TDrmRightsInfo@2@AAPAVHBufC8@@W4TIntent@ContentAccess@@PAVCDRMConstraint@@@Z @ 12 NONAME ; enum DRM::TDrmRightsInfo DRM::CDrmUtilityCommon::GetOmaRightsStatusL(class HBufC8 * &, enum ContentAccess::TIntent, class CDRMConstraint *)
-	?GetWrapper@CDrmUtilityWMDrm@DRM@@QAEPAVMDrmUtilityWMDrmWrapper@2@XZ @ 13 NONAME ; class DRM::MDrmUtilityWMDrmWrapper * DRM::CDrmUtilityWMDrm::GetWrapper(void)
-	?NewL@CDrmUtilityCommon@DRM@@SAPAV12@XZ @ 14 NONAME ; class DRM::CDrmUtilityCommon * DRM::CDrmUtilityCommon::NewL(void)
-	?NewL@CDrmUtilityUI@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 15 NONAME ; class DRM::CDrmUtilityUI * DRM::CDrmUtilityUI::NewL(class CCoeEnv *)
-	?NewL@CDrmUtilityWMDrm@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 16 NONAME ; class DRM::CDrmUtilityWMDrm * DRM::CDrmUtilityWMDrm::NewL(class CCoeEnv *)
-	?NewLC@CDrmUtilityCommon@DRM@@SAPAV12@XZ @ 17 NONAME ; class DRM::CDrmUtilityCommon * DRM::CDrmUtilityCommon::NewLC(void)
-	?NewLC@CDrmUtilityUI@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 18 NONAME ; class DRM::CDrmUtilityUI * DRM::CDrmUtilityUI::NewLC(class CCoeEnv *)
-	?NewLC@CDrmUtilityWMDrm@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 19 NONAME ; class DRM::CDrmUtilityWMDrm * DRM::CDrmUtilityWMDrm::NewLC(class CCoeEnv *)
-	?SetAutomatedQueryL@CDrmUtilityUI@DRM@@QAEHPAVCDRMConstraint@@@Z @ 20 NONAME ; int DRM::CDrmUtilityUI::SetAutomatedQueryL(class CDRMConstraint *)
-	?ShowFutureRightsNoteL@CDrmUtilityUI@DRM@@QAEXPAVCDRMConstraint@@@Z @ 21 NONAME ; void DRM::CDrmUtilityUI::ShowFutureRightsNoteL(class CDRMConstraint *)
+	?NewLC@CDrmUtilityWMDrm@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 9 NONAME ; class DRM::CDrmUtilityWMDrm * DRM::CDrmUtilityWMDrm::NewLC(class CCoeEnv *)
+	?DisplayQueryWithIdValueL@CDrmUtilityUI@DRM@@QAEHHHABVTDesC16@@@Z @ 10 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryWithIdValueL(int, int, class TDesC16 const &)
+	?ShowFutureRightsNoteL@CDrmUtilityUI@DRM@@QAEXPAVCDRMConstraint@@@Z @ 11 NONAME ; void DRM::CDrmUtilityUI::ShowFutureRightsNoteL(class CDRMConstraint *)
+	?NewL@CDrmUtilityCommon@DRM@@SAPAV12@XZ @ 12 NONAME ; class DRM::CDrmUtilityCommon * DRM::CDrmUtilityCommon::NewL(void)
+	?NewLC@CDrmUtilityCommon@DRM@@SAPAV12@XZ @ 13 NONAME ; class DRM::CDrmUtilityCommon * DRM::CDrmUtilityCommon::NewLC(void)
+	?DisplayPopupWindowsForPreviewL@CDrmUtilityUI@DRM@@QAEHAAVCData@ContentAccess@@HH@Z @ 14 NONAME ; int DRM::CDrmUtilityUI::DisplayPopupWindowsForPreviewL(class ContentAccess::CData &, int, int)
+	?GetOmaRightsStatusL@CDrmUtilityCommon@DRM@@QAE?AW4TDrmRightsInfo@2@AAPAVHBufC8@@W4TIntent@ContentAccess@@PAVCDRMConstraint@@@Z @ 15 NONAME ; enum DRM::TDrmRightsInfo DRM::CDrmUtilityCommon::GetOmaRightsStatusL(class HBufC8 * &, enum ContentAccess::TIntent, class CDRMConstraint *)
+	?DisplayQueryWithIdL@CDrmUtilityUI@DRM@@QAEHHH@Z @ 16 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryWithIdL(int, int)
+	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXH@Z @ 17 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(int)
+	?DisplayMessageQueryL@CDrmUtilityUI@DRM@@QAEHHHABVTDesC16@@@Z @ 18 NONAME ; int DRM::CDrmUtilityUI::DisplayMessageQueryL(int, int, class TDesC16 const &)
+	?DisplayNoteL@CDrmUtilityUI@DRM@@QAEXHH@Z @ 19 NONAME ; void DRM::CDrmUtilityUI::DisplayNoteL(int, int)
+	?NewLC@CDrmUtilityUI@DRM@@SAPAV12@PAVCCoeEnv@@@Z @ 20 NONAME ; class DRM::CDrmUtilityUI * DRM::CDrmUtilityUI::NewLC(class CCoeEnv *)
+	?DisplayQueryL@CDrmUtilityUI@DRM@@QAEHHABVTDesC16@@@Z @ 21 NONAME ; int DRM::CDrmUtilityUI::DisplayQueryL(int, class TDesC16 const &)
+	?GetWrapper@CDrmUtilityWMDrm@DRM@@QAEPAVMDrmUtilityWMDrmWrapper@2@XZ @ 22 NONAME ; class DRM::MDrmUtilityWMDrmWrapper * DRM::CDrmUtilityWMDrm::GetWrapper(void)
 
--- a/commondrm/drmutility/data/drmutility.rss	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/data/drmutility.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -21,11 +21,15 @@
 
 //  INCLUDES
 #include <eikon.rh>
-#include <eikon.rsg>
+#include <avkon.rsg>
 #include <avkon.rh>
-#include <avkon.rsg>
+#include <avkon.hrh>
+#include <avkon.mbg>
+#include <bldvariant.hrh>
 #include <avkon.loc>
-#include <avkon.mbg>
+#include <bldvariant.hrh>
+#include <CommonDialogs.hrh> 
+#include <CommonDialogs.rh> 
 
 #include <drmutility.loc>
 
@@ -597,4 +601,56 @@
 
 #endif // RD_DRM_PREVIEW_RIGHT_FOR_AUDIO
 
+// -----------------------------------------------------------------------------
+// r_drmutility_sync_with_pc
+// Text displayed if WMDRM Direct License Acquisition is supported to
+// notify user that license needs to be aquired with PC sync.
+// -----------------------------------------------------------------------------
+RESOURCE TBUF r_drmutility_sync_with_pc
+    {
+    buf = qtn_drm_sync_with_pc;
+    }
+
+// -----------------------------------------------------------------------------
+// r_drmutility_sync_with_pc_header
+// Header displayed if WMDRM Direct License Acquisition is supported to
+// notify user that license needs to be aquired with PC sync.
+// -----------------------------------------------------------------------------
+RESOURCE TBUF r_drmutility_head_no_license
+    {
+    buf = qtn_drm_msg_qry_head_no_license;
+    }
+
+//------------------------------------------------------------------------------
+//
+//    r_drmutility_sync_dialog
+//    Shows the user a dialog that license needs to be synced with pc
+//
+//------------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_drmutility_sync_dialog
+    {
+    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
+    buttons = R_AVKON_SOFTKEYS_OK_EMPTY__OK;
+    items =
+        {
+        DLG_LINE 
+            {
+            type = EAknCtPopupHeadingPane;
+            id = EAknMessageQueryHeaderId;
+            control = AVKON_HEADING
+                {
+                };
+            },
+        DLG_LINE
+            {
+            type = EAknCtMessageQuery;
+            id = EAknMessageQueryContentId;
+            control = AVKON_MESSAGE_QUERY
+                {                
+                };
+            }
+        };
+
+    }
 // End of File
--- a/commondrm/drmutility/eabi/DrmUtilityDmgrWrapperu.def	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/eabi/DrmUtilityDmgrWrapperu.def	Wed Sep 01 12:21:16 2010 +0100
@@ -1,3 +1,5 @@
-EXPORTS	
+EXPORTS
 	_Z16GateFunctionDMgrv @ 1 NONAME
+	_ZTI22CDrmUtilityDmgrWrapper @ 2 NONAME ; #<TI>#
+	_ZTV22CDrmUtilityDmgrWrapper @ 3 NONAME ; #<VT>#
 
--- a/commondrm/drmutility/eabi/drmutilitycommonu.def	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/eabi/drmutilitycommonu.def	Wed Sep 01 12:21:16 2010 +0100
@@ -9,15 +9,16 @@
 	_ZN3DRM13CDrmUtilityUI13DisplayQueryLEii @ 8 NONAME
 	_ZN3DRM13CDrmUtilityUI18SetAutomatedQueryLEP14CDRMConstraint @ 9 NONAME
 	_ZN3DRM13CDrmUtilityUI19DisplayQueryWithIdLEii @ 10 NONAME
-	_ZN3DRM13CDrmUtilityUI21ShowFutureRightsNoteLEP14CDRMConstraint @ 11 NONAME
-	_ZN3DRM13CDrmUtilityUI24DisplayQueryWithIdValueLEiiRK7TDesC16 @ 12 NONAME
-	_ZN3DRM13CDrmUtilityUI30DisplayPopupWindowsForPreviewLERN13ContentAccess5CDataEii @ 13 NONAME
-	_ZN3DRM13CDrmUtilityUI4NewLEP7CCoeEnv @ 14 NONAME
-	_ZN3DRM13CDrmUtilityUI5NewLCEP7CCoeEnv @ 15 NONAME
-	_ZN3DRM16CDrmUtilityWMDrm10GetWrapperEv @ 16 NONAME
-	_ZN3DRM16CDrmUtilityWMDrm4NewLEP7CCoeEnv @ 17 NONAME
-	_ZN3DRM16CDrmUtilityWMDrm5NewLCEP7CCoeEnv @ 18 NONAME
-	_ZN3DRM17CDrmUtilityCommon19GetOmaRightsStatusLERP6HBufC8N13ContentAccess7TIntentEP14CDRMConstraint @ 19 NONAME
-	_ZN3DRM17CDrmUtilityCommon4NewLEv @ 20 NONAME
-	_ZN3DRM17CDrmUtilityCommon5NewLCEv @ 21 NONAME
+	_ZN3DRM13CDrmUtilityUI20DisplayMessageQueryLEiiRK7TDesC16 @ 11 NONAME
+	_ZN3DRM13CDrmUtilityUI21ShowFutureRightsNoteLEP14CDRMConstraint @ 12 NONAME
+	_ZN3DRM13CDrmUtilityUI24DisplayQueryWithIdValueLEiiRK7TDesC16 @ 13 NONAME
+	_ZN3DRM13CDrmUtilityUI30DisplayPopupWindowsForPreviewLERN13ContentAccess5CDataEii @ 14 NONAME
+	_ZN3DRM13CDrmUtilityUI4NewLEP7CCoeEnv @ 15 NONAME
+	_ZN3DRM13CDrmUtilityUI5NewLCEP7CCoeEnv @ 16 NONAME
+	_ZN3DRM16CDrmUtilityWMDrm10GetWrapperEv @ 17 NONAME
+	_ZN3DRM16CDrmUtilityWMDrm4NewLEP7CCoeEnv @ 18 NONAME
+	_ZN3DRM16CDrmUtilityWMDrm5NewLCEP7CCoeEnv @ 19 NONAME
+	_ZN3DRM17CDrmUtilityCommon19GetOmaRightsStatusLERP6HBufC8N13ContentAccess7TIntentEP14CDRMConstraint @ 20 NONAME
+	_ZN3DRM17CDrmUtilityCommon4NewLEv @ 21 NONAME
+	_ZN3DRM17CDrmUtilityCommon5NewLCEv @ 22 NONAME
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmutility/group/DRMUiHandlingImpl.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or 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 definition file for DRM Utility
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET          DRMUiHandlingImpl.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x10205CBE
+
+CAPABILITY      CAP_GENERAL_DLL DRM
+VENDORID        VID_DEFAULT
+
+#ifdef __DRM
+SOURCE          ../src/DrmUiHandlingImpl.cpp
+SOURCE          ../src/drmuihandlingdata.cpp
+SOURCE          ../src/DrmUtilityDownloadManager.cpp
+#endif
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../../omadrm/drmengine/roap/inc
+USERINCLUDE     ../../../omadrm/drmengine/roapstorage/inc
+USERINCLUDE     ../../../omadrm/drmengine/server/inc
+USERINCLUDE     ../../../inc   // ADo level inc dir
+
+// Default system include paths for middleware layer modules.
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/ecom    // needed because of SchemeHandler
+
+LIBRARY         euser.lib
+LIBRARY         apparc.lib // for launching rights mgr ui embedded
+LIBRARY         avkon.lib
+LIBRARY         efsrv.lib // for launching rights mgr ui embedded
+LIBRARY         apgrfx.lib
+LIBRARY         ws32.lib
+LIBRARY         centralrepository.lib
+LIBRARY         servicehandler.lib
+LIBRARY         caf.lib
+LIBRARY         cafutils.lib
+LIBRARY         charconv.lib
+LIBRARY         ecom.lib // for scheme handling
+LIBRARY         cmmanager.lib
+
+#ifdef __DRM
+LIBRARY         drmutilitycommon.lib
+LIBRARY         drmutility.lib
+LIBRARY         roaphandler.lib
+LIBRARY         drmparsers.lib
+LIBRARY         drmdcf.lib
+LIBRARY         dcfrep.lib
+LIBRARY         drmrights.lib
+LIBRARY         drmserverinterfaces.lib
+LIBRARY         drmcommon.lib
+#endif
+
+DOCUMENT    bld.inf
+
+#if defined(ARMCC)
+deffile ../eabi/
+#elif defined( WINSCW )
+deffile ../bwinscw/
+#elif defined( WINS )
+deffile ../bwins/
+#else
+deffile ../bmarm/
+#endif
+
+SMPSAFE
--- a/commondrm/drmutility/group/DrmUtilityDmgrWrapper.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/group/DrmUtilityDmgrWrapper.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -28,7 +28,6 @@
 
 #ifdef __DRM
 SOURCE         ../src/DrmUtilityDmgrWrapper.cpp
-SOURCE         ../src/drmutilityconnection.cpp
 #endif
 
 START RESOURCE ../data/DrmUtilityDmgrWrapper.rss
@@ -40,14 +39,13 @@
 USERINCLUDE    ../inc
 USERINCLUDE    ../../../omadrm/drmengine/roap/inc
 USERINCLUDE    ../../../inc   // ADo level inc dir
-USERINCLUDE    ../traces      // OST definitions 
+
 // Default system include paths for middleware layer modules.
-MW_LAYER_SYSTEMINCLUDE
+APP_LAYER_SYSTEMINCLUDE
 
 LIBRARY        euser.lib
-LIBRARY        cmmanager.lib // RCmManager CCmApplicationSettingsUi
-LIBRARY        esock.lib // RConnection, RSocketServ
-LIBRARY        extendedconnpref.lib netmeta.lib // TExtendedConnPref
+LIBRARY        centralrepository.lib
+LIBRARY        cmmanager.lib
 LIBRARY        downloadmgr.lib
 LIBRARY        roaphandler.lib
 LIBRARY        efsrv.lib
--- a/commondrm/drmutility/group/bld.inf	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/group/bld.inf	Wed Sep 01 12:21:16 2010 +0100
@@ -33,6 +33,8 @@
 #if (defined __WINDOWS_MEDIA_DRM)
 drmutilitywmdrmwrapper.mmp
 #endif // __WINDOWS_MEDIA_DRM
+DrmUtilityDmgrWrapper.mmp
+DRMUiHandlingImpl.mmp
 DRMAutomatedUsageImpl.mmp
 DrmRightsInfoImpl.mmp
 
--- a/commondrm/drmutility/group/drmutilitycommon.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/group/drmutilitycommon.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -42,7 +42,6 @@
 USERINCLUDE     ../inc
 USERINCLUDE     ../../../omadrm/drmengine/server/inc
 USERINCLUDE     ../../../inc   // ADo level inc dir
-USERINCLUDE     ../../drmui/drmuidialogs/inc
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
@@ -62,7 +61,6 @@
 LIBRARY         aknnotify.lib
 LIBRARY         drmrights.lib // Permission, Constraint
 LIBRARY         drmserverinterfaces.lib // DrmClockClient, DrmRightsClient
-LIBRARY         drmuidialogs.lib
 
 DOCUMENT    bld.inf
 
--- a/commondrm/drmutility/group/drmutilitywmdrmwrapper.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/group/drmutilitywmdrmwrapper.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -37,6 +37,12 @@
 // Default system include paths for application layer modules.
 APP_LAYER_SYSTEMINCLUDE
 
+START RESOURCE ../data/drmutility.rss
+HEADER
+TARGETPATH RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END
+
 LIBRARY         aknnotify.lib
 LIBRARY         apparc.lib // for launching rights mgr ui embedded
 LIBRARY         euser.lib
@@ -52,6 +58,7 @@
 LIBRARY         servicehandler.lib
 LIBRARY         drmserverinterfaces.lib // DrmClockClient
 LIBRARY         drmrights.lib
+LIBRARY		featdiscovery.lib 
 
 DOCUMENT    bld.inf
 
--- a/commondrm/drmutility/group/qt/drmuihandlingimpl.pri	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-
-#
-# 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: 
-#
-
-
-# Input
-HEADERS +=	../../inc/DrmUiHandlingImpl.h \
-			../../inc/drmuihandlingdata.h \
-			../../inc/DrmUtilityDownloadManager.h
-	
--- a/commondrm/drmutility/group/qt/drmuihandlingimpl.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-
-#
-# 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: 
-#
-
-include ( drmuihandlingimpl.pri )
-
-IncludeBlock = \
-	"$${LITERAL_HASH}include <data_caging_paths.hrh>" \
-	"$${LITERAL_HASH}include <platform_paths.hrh>" 
-MMP_RULES += IncludeBlock
-
-TEMPLATE = lib
-TARGET = DRMUiHandlingImpl
-
-SrcIfdefBlock = \
-	"$${LITERAL_HASH}ifdef __DRM" \
-	"SOURCE ../../src/DrmUiHandlingImpl.cpp" \
-	"SOURCE ../../src/drmuihandlingdata.cpp" \
-	"SOURCE ../../src/DrmUtilityDownloadManager.cpp" \
-	"$${LITERAL_HASH}endif"
-
-MMP_RULES += SrcIfdefBlock
-
-symbian: { 
-	TARGET.CAPABILITY = CAP_GENERAL_DLL DRM
-	TARGET.VID = VID_DEFAULT
-	TARGET.UID3 = 0x10205CBE
-	TARGET.EPOCALLOWDLLDATA = 1
-	INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
-	INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-	INCLUDEPATH += ../../inc
-	INCLUDEPATH += ../../../../omadrm/drmengine/roap/inc
-	INCLUDEPATH += ../../../../omadrm/drmengine/roapstorage/inc
-	INCLUDEPATH += ../../../../omadrm/drmengine/server/inc
-	INCLUDEPATH += ../../../../inc   // ADo level inc dir
-	INCLUDEPATH += /epoc32/include/platform/mw/cwrt
-	INCLUDEPATH += /epoc32/include/ecom
-
-	LIBS += -leuser
-	LIBS += -lapparc // for launching rights mgr ui embedded
-	LIBS += -lavkon
-	LIBS += -lefsrv // for launching rights mgr ui embedded
-	LIBS += -lapgrfx
-	LIBS += -lws32
-	LIBS += -lcentralrepository
-	LIBS += -lservicehandler
-	LIBS += -lcaf
-	LIBS += -lcafutils
-	LIBS += -lcharconv
-	LIBS += -lecom // for scheme handling
-	LIBS += -lcmmanager
-	LIBS += -ldrmbrowserlauncher
-
-	IfdefLibBlock = \
-	"$${LITERAL_HASH}ifdef __DRM" \
-	"LIBRARY  drmutilitycommon.lib" \
-	"LIBRARY  drmutility.lib" \
-	"LIBRARY  roaphandler.lib" \
-	"LIBRARY  drmparsers.lib" \
-	"LIBRARY  drmdcf.lib" \
-	"LIBRARY  dcfrep.lib" \
-	"LIBRARY  drmrights.lib" \
-	"LIBRARY  drmserverinterfaces.lib" \
-	"LIBRARY  drmcommon.lib" \
-	"$${LITERAL_HASH}endif"
-	
-	MMP_RULES += IfdefLibBlock
-
-	defBlock = \
-	"$${LITERAL_HASH}if defined(ARMCC)" \
-	"DEFFILE ../../eabi/" \
-	"$${LITERAL_HASH}elif defined( WINSCW )" \
-	"DEFFILE ../../bwinscw/" \
-	"$${LITERAL_HASH}elif defined( WINS )" \
-	"DEFFILE ../../bwins/" \
-	"$${LITERAL_HASH}else" \
-	"DEFFILE ../../bmarm/" \
-	"$${LITERAL_HASH}endif"
-
-	MMP_RULES += defBlock
-	
-	}
-
--- a/commondrm/drmutility/group/qt/drmutilitydmgrwrapper.pri	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-
-#
-# 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: 
-#
-
-
-# Input
-HEADERS +=	../../../../inc/DrmUtilityDmgrWrapper.h \
-			../../inc/drmutilityconnection.h \
-			../../inc/qdrmutilitydmgreventhandler.h
-	
-	
-	
--- a/commondrm/drmutility/group/qt/drmutilitydmgrwrapper.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-
-#
-# 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:
-#
-
-include ( drmutilitydmgrwrapper.pri )
-
-TEMPLATE = lib
-TARGET = DrmUtilityDmgrWrapper
-
-IncludeBlock = \
-	"$${LITERAL_HASH}include <data_caging_paths.hrh>" \
-	"$${LITERAL_HASH}include <platform_paths.hrh>"
-
-MMP_RULES += IncludeBlock
-
-
-SrcIfdefBlock = \
-	"$${LITERAL_HASH}ifdef __DRM" \
-	"SOURCE ../../src/DrmUtilityDmgrWrapper.cpp" \
-	"SOURCE ../../src/drmutilityconnection.cpp" \
-	"SOURCE ../../src/qdrmutilitydmgreventhandler.cpp" \
-	"$${LITERAL_HASH}endif"
-
-MMP_RULES += SrcIfdefBlock
-
-symbian: {
-	TARGET.CAPABILITY = CAP_GENERAL_DLL
-	TARGET.VID = VID_DEFAULT
-	TARGET.UID3 = 0x102830FE
-	TARGET.EPOCALLOWDLLDATA = 1
-	INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
-	INCLUDEPATH += ../../inc
-	INCLUDEPATH += ../../../../omadrm/drmengine/roap/inc
-	INCLUDEPATH += ../../../../inc   // ADo level inc dir
-	INCLUDEPATH += ../../traces      // OST definitions
-	INCLUDEPATH += /epoc32/include/platform/mw/cwrt
-
-	LIBS += -leuser
-	LIBS += -lcmmanager // RCmManager CCmApplicationSettingsUi
-	LIBS += -lesock // RConnection, RSocketServ
-	LIBS += -lextendedconnpref
-	LIBS += -lnetmeta // TExtendedConnPref
-	LIBS += -lWrtDownloadMgr
-	LIBS += -lroaphandler
-	LIBS += -lefsrv
-	LIBS += -lavkon
-	LIBS += -lcommonengine
-	LIBS += -leikctl
-	LIBS += -lplatformenv
-	LIBS += -lflogger
-
-	ResourceBlock = \
-	"START RESOURCE ../../data/DrmUtilityDmgrWrapper.rss" \
-	"HEADER" \
-	"TARGETPATH RESOURCE_FILES_DIR" \
-	"LANGUAGE_IDS" \
-	"END"
-
-	MMP_RULES += ResourceBlock
-
-	defBlock = \
-	"$${LITERAL_HASH}if defined(ARMCC)" \
-	"DEFFILE ../../eabi/" \
-	"$${LITERAL_HASH}elif defined( WINSCW )" \
-	"DEFFILE ../../bwinscw/" \
-	"$${LITERAL_HASH}elif defined( WINS )" \
-	"DEFFILE ../../bwins/" \
-	"$${LITERAL_HASH}else" \
-	"DEFFILE ../../bmarm/" \
-	"$${LITERAL_HASH}endif"
-
-	MMP_RULES += defBlock
-
-	}
-
--- a/commondrm/drmutility/inc/DrmUiHandlingImpl.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/inc/DrmUiHandlingImpl.h	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* 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 "Eclipse Public License v1.0"
@@ -32,6 +32,7 @@
 //*** forward declarations go here:
 class CCoeEnv;
 class CDRMConstraint;
+class CSchemeHandler;
 
 namespace ContentAccess
     {
@@ -777,6 +778,16 @@
     TBool SilentRightsAllowedL();
 
     /**
+    * Check if browser AP has been defined
+    */
+    TBool BrowserAPDefinedL();
+
+    /**
+    * Returns the number of access points on phone
+    */
+    TInt APCountL();
+
+    /**
     * Handles exit from service
     * from MAknServerAppExitObserver
     */
@@ -855,6 +866,9 @@
     // Wait for the notes and queries
     CActiveSchedulerWait iWait;
 
+    // Schemehandler for url handling
+    CSchemeHandler* iSchemeHandler;
+
     // Operation Queue:
     CDrmUiHandlingData* iFirst;
     CDrmUiHandlingData* iLast;
--- a/commondrm/drmutility/inc/DrmUtilityGlobalNoteWrapper.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/inc/DrmUtilityGlobalNoteWrapper.h	Wed Sep 01 12:21:16 2010 +0100
@@ -23,6 +23,7 @@
 //  INCLUDES
 #include <e32base.h>
 #include <stringresourcereader.h>
+#include <AknGlobalMsgQuery.h>
 
 namespace DRM 
 {
@@ -102,6 +103,16 @@
         	            TInt aValuePos = -1 );
         	            
         /**
+        * Asynchronous wrapper for showing global message query.
+        * @param aMessageResourceId resource id of string to be displayed
+        * @param aHeaderResourceId resource id of header to be displayed in the query
+        * @param aString string that replaces %U in resource string        
+        */            
+        void ShowMessageQueryL(TInt aMessageResourceId,
+    													TInt aHeaderResourceId,
+    													const TDesC& aString);
+        	            
+        /**
         * Synchronous wrapper for showing global  preview list query.
         * @param aTextResourceId resource id of preview structure to be
         *        displayed
@@ -147,6 +158,13 @@
         
         // Resource id of buttons in confirmation query
         TInt iButtonsId;
+        
+        // AVKON Global message query, used in method ShowMessageQueryL, activated asynchronously so needs to be owned
+        CAknGlobalMsgQuery* iGlobalMsgQuery;
+        // Message buffer for the global message query, contains dialog text with replaced string
+        TBuf<KDRMNoteBufferMaxSize + KMaxFileName> iFinalMessageBuffer;
+        // Message buffer for the global message query header text
+        TBuf<KDRMNoteBufferMaxSize> iHeaderBuffer;
     };
 
 }
--- a/commondrm/drmutility/inc/drmutilityconnection.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-/*
-* 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:
-*
-*/
-#ifndef   DRMUTILITYCONNECTION_H
-#define   DRMUTILITYCONNECTION_H
-
-#include <e32base.h> // CActive
-#include <es_sock.h> // RConnection, RSocketServ
-
-namespace DRM
-{
-
- /**
-  *  Utility class for DRMutility dmgr wrapper  related common functions
-  *
-  *  @since S60 v9.2
-  */
-
-
-// CLASS DECLARATION
-// Class for handling internal connectivity logic
-NONSHARABLE_CLASS( CDrmUtilityConnection ): public CActive
-    {
-public:     // Constructors and destructor.
-
-    /**
-    *
-    */
-    static CDrmUtilityConnection * NewL( const TBool aAllowQueries );
-
-    /**
-    *
-    */
-    static CDrmUtilityConnection * NewLC( const TBool aAllowQueries );
-
-    /**
-    * Destructor
-    */
-    ~CDrmUtilityConnection();
-
-public:     // new methods
-
-    /**
-    *
-    */
-    void ConnectL( TRequestStatus* aStatus );
-
-    /**
-    *
-    */
-    void Close();
-
-    /**
-    *
-    */
-    TBool HasMoreConnectionAttempts();
-
-    /**
-    *
-    */
-    TBool IsConnected( TUint32& aIap );
-
-    /**
-    * Check if default connection has been defined
-    * @see RCmManager::ReadDefConnL
-    */
-    static TBool HasDefaultConnectionL();
-
-    /**
-    * Check if system has access points defined
-    */
-    static TBool HasAccessPointsL();
-
-
-
-private: //enumerations
-    enum TConnectionType
-        {
-        EAttachExisting, //0
-        EUsingDefault, //1
-        EUsingPurposeOperator, // 2
-        EUsingPurposeInternet, // 3
-        EUsingQuery, // 4
-        EFail // 5
-        };
-
-    enum TState
-        {
-        EInit, // 0
-        EConnecting, // 1
-        EConnected, // 2
-        EConnectFailed // 3
-        };
-
-private:    // Constructors and destructor.
-
-    /**
-    * Default constructor (for preventing inheritance)
-    */
-    CDrmUtilityConnection( TBool aAllowQueries );
-
-    /**
-    * Second phase constructor
-    */
-    void ConstructL();
-
-private:  // from CActive
-
-    virtual void DoCancel();
-
-    virtual void RunL();
-
-    virtual TInt RunError( TInt aError );
-
-private:    // new methods
-
-    /**
-    *
-    */
-    void DoClose();
-
-    /**
-    *
-    */
-    void Done();
-
-    /**
-    *
-    */
-    void InitL();
-
-    /**
-    *
-    */
-    void AttachExistingConnectionL();
-
-    /**
-    *
-    */
-    void ConnectUsingDefaultL();
-
-    /**
-    *
-    */
-    void ConnectUsingSnapPurposeL( const TUint32 aPurpose );
-
-    /**
-    *
-    */
-    void ConnectUsingQueryL();
-
-    /**
-    *
-    */
-    void UpdateIapIdL();
-
-    /**
-    *
-    */
-    void CompleteSelf( TInt aError );
-
-    /**
-    *
-    */
-    void CompleteParent( TInt aError );
-
-private:    // data
-
-    RSocketServ iSocketServ;
-    RConnection iConnection;
-    TState iState;
-    TConnectionType iType;
-    TRequestStatus* iParentStatus;
-    const TBool iAllowQueries;
-    TUint32 iIapId;
-    };
-}
-#endif /* DRMUTILITYCONNECTION_H */
--- a/commondrm/drmutility/inc/drmutilityui.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/inc/drmutilityui.h	Wed Sep 01 12:21:16 2010 +0100
@@ -24,6 +24,8 @@
 #include <f32file.h>
 #include <AknNotifyStd.h>
 
+#include "DrmUtilityGlobalNoteWrapper.h"
+
 //*** forward declarations go here:
 class CDRMConstraint;
 class CCoeEnv;
@@ -123,8 +125,18 @@
                                                 ContentAccess::CData& aContent,
                                                 TInt aPreviewType,
                                                 TInt aMediaType );
+                                                
+    /*
+    * Utility method for showing an AVKON Message Query dialog, with buttons R_AVKON_SOFTKEYS_OK_EMPTY__OK.
+    * 
+    * @param aMessage Resource ID for the dialog message.
+    * @param aHeader  Resource ID for the dialog header.
+    * @param aString  Replacement string for dialog message content. Replaces aMessage resources strings %U mark.
+    * @return Returns button code TInt from the dialog.
+    */                                            
 
-
+    IMPORT_C TInt DisplayMessageQueryL( TInt aMessage, TInt aHeader, const TDesC& aString );
+    
 protected:
 
 private:
@@ -174,6 +186,8 @@
     RPointerArray<CDrmUtilityInfoNoteWrapper> iNoteList;
 
     CMediatorEventProvider* iEventProvider;
+    
+    CDrmUtilityGlobalNoteWrapper* iNoteWrapper;
 
     };
 }
--- a/commondrm/drmutility/inc/drmutilitywmdrmwrapper.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/inc/drmutilitywmdrmwrapper.h	Wed Sep 01 12:21:16 2010 +0100
@@ -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"
@@ -187,9 +187,7 @@
     // Show the appropriate notes
     void ShowNoRightsNoteL(
         ContentAccess::CData& aContent,
-        TUint32 aReason,
-        TInt aOperationId,
-        DRM::MDrmHandleErrorObserver* aObserver );
+        TUint32 aReason );
 
 //*** DLA:
 
@@ -215,6 +213,7 @@
 
     RLibrary iDlaWrapperDll;
     CWmDrmDlaWrapper* iDlaWrapper;
+    TBool iWmDrmDlaSupportOn;
     };
 }
 
--- a/commondrm/drmutility/inc/qdrmutilitydmgreventhandler.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-#ifndef QDRMUTILITYDMGREVENTHANDLER_H
-#define QDRMUTILITYDMGREVENTHANDLER_H
-
-#include <qobject.h>
-
-namespace WRT
-	{
-	class Download;
-	class DownloadEvent;
-	}
-
-class CDrmUtilityDmgrWrapper;
-
-class QDrmUtilityDmgrEventHandler : public QObject
-    	{
-    	Q_OBJECT
-    	
-    public:
-    	QDrmUtilityDmgrEventHandler( CDrmUtilityDmgrWrapper& aDrmUtilityDmgrWrapper , WRT::Download& aDownload );
-	
-    public slots:
-    	
-        /**
-        * Handle download manager events
-        *
-        * @param aEvent the event
-        */
-        void HandleDownloadEventL( WRT::DownloadEvent* aEvent );
-        
-    private:
-        WRT::Download& iDownload;
-        CDrmUtilityDmgrWrapper& iDrmUtilityDmgrWrapper;
-    	
-    	};
-
-#endif // QDRMUTILITYDMGREVENTHANDLER_H
--- a/commondrm/drmutility/loc/DRMUtility.loc	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/loc/DRMUtility.loc	Wed Sep 01 12:21:16 2010 +0100
@@ -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"
@@ -74,7 +74,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_query_waiting_for_ro "Waiting for licence. Try again later."
+#define qtn_drm_query_waiting_for_ro "Waiting for license. Try again later."
 
 //d: Text in confirmation query that is displayed when user tries to render MO that is missing RO.
 //d: The waiting time of RO to arrive has passed, and there is no possibility to get new RO (no rights
@@ -83,7 +83,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_query_ro_late "Licence not yet received. Expected time of delivery elapsed."
+#define qtn_drm_query_ro_late "License not yet received. Expected time of delivery elapsed."
 
 //d: Text in confirmation query that is displayed when user tries to render MO that is missing RO.
 //d: The waiting time of RO to arrive has passed, and there is possibility to get new RO (rights issuer url exists).
@@ -91,7 +91,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_query_ro_late_activate "Licence not yet received. Expected time of delivery elapsed. Get new licence?"
+#define qtn_drm_query_ro_late_activate "License not yet received. Expected time of delivery elapsed. Get new license?"
 
 //d: Text in confirmation query when user is asked about updating account.
 //d: Device is already connected to network, but must upgrade the domain key before rendering,
@@ -138,7 +138,7 @@
 //w:
 //r:
 //
-#define qtn_drm_query_valid_rights_until "Licence for selected item valid until %U. Continue?"
+#define qtn_drm_query_valid_rights_until "License for selected item valid until %U. Continue?"
 
 //d: Text in confirmation query
 //l: popup_note_window
@@ -160,3 +160,10 @@
 //r: 9.1
 //
 #define qtn_drm_msg_qry_head_no_license "No license"
+
+//d: Text in message query to notify user that the DRM license needs to be acquired with PC sync.
+//l: popup_note_window
+//w:
+//r: 9.2
+//
+#define qtn_drm_query_expired_connect_pc "You must have valid license to play %U. Please sync your phone with your PC to update license."
--- a/commondrm/drmutility/src/DrmUiHandlingImpl.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/src/DrmUiHandlingImpl.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -17,6 +17,13 @@
 
 // INCLUDE FILES
 
+// connection
+#include <cmconnectionmethod.h>
+#include <cmdestination.h>
+#include <cmconnectionmethoddef.h>
+#include <cmmanager.h>
+#include <sacls.h>
+#include <utf.h>
 
 // publish & subscribe
 #include <e32property.h>
@@ -29,6 +36,11 @@
 #include <avkon.hrh>
 #include <aknenv.h>
 
+// browser
+#ifdef __SERIES60_NATIVE_BROWSER
+#include <browseruisdkcrkeys.h>
+#endif
+
 // caf
 #include <caf/data.h>
 #include <caf/caftypes.h>
@@ -45,6 +57,9 @@
 // character conversions
 #include <utf.h>
 
+// handling urls
+#include <schemehandler.h>
+
 // resources
 #include <data_caging_path_literals.hrh>
 #include <drmutility.rsg>
@@ -59,14 +74,6 @@
 #include <drmutilitytypes.h>
 #include <drmasyncobserver.h>
 #include <drmhandleerrorobserver.h>
-#include <drmbrowserlauncher.h>
-
-//connectivity logic
-#include <cmconnectionmethod.h> // RCmConnectionMethod
-#include <cmdestination.h> // RCmDestination
-#include <cmmanager.h> // RCmManager
-
-
 
 #ifdef _DEBUG
 #include <e32debug.h>
@@ -89,7 +96,6 @@
 #include "DRMDomainContext.h"
 
 #include "DrmUtilityInternalcrkeys.h"      // Cenrep extension for OmaBased
-#include "drmuidialogids.h"
 
 // CONSTANTS
 const TInt KCommandHandleErrorFile( 1 );
@@ -102,6 +108,14 @@
 const TInt KCommandHandleUrlData( 8 );
 const TInt KCommandAvailableUrlsFile( 9 );
 const TInt KCommandAvailableUrlsData( 10 );
+// browser
+#ifndef __SERIES60_NATIVE_BROWSER
+const TUid KCRUidBrowser =
+    {0x10008D39};
+const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
+const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
+const TUint32 KBrowserNGDefaultSnapId = 0x00000053;
+#endif
 
 _LIT( KEncryptedRightsIssuerMatchString, "flk*" );
 
@@ -122,8 +136,6 @@
 
 const TInt KresOmaBasedBuf( 512 );
 const TInt KNameBuf( 256 );
-const TInt KNoValue = -1;
-
 #ifdef _DEBUG
 // debug panic
 _LIT( KDRMUtilityDebugPanicMessage, "DrmUiHandlingDebugPanic" );
@@ -132,67 +144,6 @@
 
 // ============================= LOCAL FUNCTIONS ===============================
 // -----------------------------------------------------------------------------
-// HasDefaultConnectionL
-// Finds default IAP id
-// @return Etrue: valid AP found
-//         EFalse: valid AP not found
-// @leave system wide error codes
-// -----------------------------------------------------------------------------
-//
-LOCAL_C TBool HasDefaultConnectionL()
-    {
-    TBool hasDefault(EFalse);
-    TCmDefConnValue defConn;
-    RCmManager cmManager;
-    cmManager.OpenLC();
-    cmManager.ReadDefConnL(defConn);
-    if (defConn.iType == ECmDefConnConnectionMethod)
-        {
-        cmManager.GetConnectionMethodInfoIntL(defConn.iId,
-                CMManager::ECmIapId);
-        hasDefault = ETrue;
-        }
-    else if (defConn.iType == ECmDefConnDestination)
-        {
-        RCmDestination dest(cmManager.DestinationL(defConn.iId));
-        CleanupClosePushL(dest);
-
-        if (dest.ConnectionMethodCount() <= 0)
-            {
-            User::Leave(KErrNotFound);
-            }
-
-        RCmConnectionMethod cMeth(dest.ConnectionMethodL(0));
-        CleanupClosePushL(cMeth);
-
-        cMeth.GetIntAttributeL(CMManager::ECmIapId);
-        CleanupStack::PopAndDestroy(&cMeth);
-        CleanupStack::PopAndDestroy(&dest);
-        hasDefault = ETrue;
-        }
-    CleanupStack::PopAndDestroy(&cmManager);
-    return hasDefault;
-    }
-
-// -----------------------------------------------------------------------------
-// HasAccessPointsL
-// -----------------------------------------------------------------------------
-//
-LOCAL_C TBool HasAccessPointsL()
-    {
-    TInt apCount(0);
-    RCmManager cmManager;
-    CleanupClosePushL(cmManager);
-    cmManager.OpenL();
-    RArray<TUint32> aps;
-    CleanupClosePushL(aps);
-    cmManager.ConnectionMethodL(aps, EFalse, EFalse, ETrue);
-    apCount = aps.Count();
-    CleanupStack::PopAndDestroy(2, &cmManager); //aps, cmManager
-    return apCount > 0;
-    }
-
-// -----------------------------------------------------------------------------
 // MapToCallError
 // -----------------------------------------------------------------------------
 //
@@ -207,16 +158,30 @@
     }
 
 // -----------------------------------------------------------------------------
-// HasDefConn
+// IapIdOfDefaultSnapL
+// for trapping purposes only
 // -----------------------------------------------------------------------------
 //
-inline TBool HasDefConn()
+LOCAL_C TUint32 IapIdOfDefaultSnapL(
+    RCmManager& aCmManager,
+    const TUint32 aDefaultSnap )
     {
-    TBool found( EFalse );
-
-    TRAP_IGNORE( found = HasDefaultConnectionL() );
-
-    return found;
+    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
+    CleanupClosePushL( dest );
+    TUint32 iapIdOfDest( 0 );
+
+    if ( dest.ConnectionMethodCount() <= 0 )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
+    CleanupClosePushL( cMeth );
+
+    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
+    CleanupStack::PopAndDestroy( &cMeth );
+    CleanupStack::PopAndDestroy( &dest );
+    return iapIdOfDest;
     }
 
 // ---------------------------------------------------------
@@ -437,6 +402,8 @@
 
     delete iDrmUtilityUi;
 
+    delete iSchemeHandler;
+
     delete iWrapperLoader;
 
     delete iOmaBasedAgentName;
@@ -1836,8 +1803,8 @@
     TBool onlyMeteringRejection( reason == DRM::EURejectionMetering );
     if ( onlyMeteringRejection )
         {
-        // Qt dialog not implemented yet
-        iDrmUtilityUi->DisplayNoteL( EConfUnableToOpen );
+        iDrmUtilityUi->DisplayQueryWithIdL( R_DRM_QUERY_METERING_DISABLED,
+            R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY );
 
         CleanupStack::PopAndDestroy( contentId );
         return;
@@ -2968,8 +2935,9 @@
             if ( RejectReason( aReason ) == DRM::EURejectionMetering )
                 {
                 // Show that only reason for error was rejected metering.
-                // Qt dialog not implemented yet
-                iDrmUtilityUi->DisplayNoteL( EConfUnableToOpen );
+                iDrmUtilityUi->DisplayQueryWithIdL(
+                    R_DRM_QUERY_METERING_DISABLED,
+                    R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY );
                 }
             else
                 {
@@ -3490,7 +3458,7 @@
     HBufC* etaBuf( NULL );
     TBool isRegistered( EFalse );
     TBool isJoined( EFalse );
-    TInt ret( ECancelled );
+    TInt ret( 0 );
     TInt err( KErrNone );
     TInt eta( 0 );
     TFileName fileName;
@@ -3516,13 +3484,16 @@
             // rights should have come already
             if ( aRightsUrl )
                 {
-                ret = iDrmUtilityUi->DisplayQueryL( EQueryGetNewLicence, KNoValue );
+                ret = iDrmUtilityUi->DisplayQueryWithIdL(
+                    R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME,
+                    R_DRMUTILITY_CONFIRMATION_QUERY );
                 }
             else
                 {
                 // no rights issuer
-                // Qt dialog not implemented yet
-                iDrmUtilityUi->DisplayNoteL( EConfLicenceNotReceived );
+                iDrmUtilityUi->DisplayQueryWithIdL(
+                    R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME_NO_RI,
+                    R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY );
                 }
             }
         else if ( !eta || err || eta == -1 )
@@ -3536,13 +3507,17 @@
 
             if ( aRightsUrl && isRegistered && !isJoined ) // Domain ro case
                 {
-                ret = iDrmUtilityUi->DisplayQueryL( EQueryAccountUpdate, KNoValue );
+                ret = iDrmUtilityUi->DisplayQueryWithIdL(
+                    R_DRMUTILITY_ACTIVATE_ACCOUNT,
+                    R_DRMUTILITY_CONFIRMATION_QUERY );
                 }
             else if ( aRightsUrl ) // Device ro case
                 {
                 if ( aReason & EConstraintIndividual )
                     {
-                    ret = iDrmUtilityUi->DisplayQueryL( EQueryFileLockedForSim, KNoValue );
+                    ret = iDrmUtilityUi->DisplayQueryWithIdL(
+                        R_DRMUTILITY_INVALID_SIM,
+                        R_DRMUTILITY_CONFIRMATION_QUERY );
                     }
                 else
                     {
@@ -3550,20 +3525,19 @@
                     User::LeaveIfError( aContent.GetStringAttribute(
                         EFileName, fileName ) );
 
-                    // Qt dialog not implemented yet
-                    ret = iDrmUtilityUi->DisplayQueryL( EQueryFileWithNoRightsObj, fileName );
+                    ret = iDrmUtilityUi->DisplayQueryL(
+                        R_DRM_QUERY_EXPIRED_OR_NO_RO, fileName );
                     }
                 }
             else // no rights issuer
                 {
                 if ( aReason & EConstraintIndividual )
                     {
-                    // Qt dialog not implemented yet
-                    iDrmUtilityUi->DisplayNoteL( EConfFileLockedForSim );
+                    iDrmUtilityUi->DisplayNoteL( R_DRM_INFO_SIM_NOT_ALLOWED );
                     }
                 else
                     {
-                    iDrmUtilityUi->DisplayNoteL( EConfLicenceExpired );
+                    iDrmUtilityUi->DisplayNoteL( R_DRM_INFO_EXPIRED_OR_NO_RO );
                     }
                 }
             }
@@ -3573,25 +3547,31 @@
             if ( eta != KErrCAPendingRights )
                 {
                 // rights expected to arrive in eta seconds
-                iDrmUtilityUi->DisplayNoteL( EConfWaitingForLicence );
+                iDrmUtilityUi->DisplayQueryWithIdL(
+                    R_DRMUTILITY_WAITING_FOR_RIGHTS,
+                    R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY );
                 }
             else
                 {
                 // rights should have come
                 if ( aRightsUrl )
                     {
-                    ret = iDrmUtilityUi->DisplayQueryL( EQueryGetNewLicence, KNoValue );
+                    ret = iDrmUtilityUi->DisplayQueryWithIdL(
+                        R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME,
+                        R_DRMUTILITY_CONFIRMATION_QUERY );
                     }
                 else
                     {
                     // no rights issuer
-                    // Qt dialog not implemented yet
-                    iDrmUtilityUi->DisplayNoteL( EConfLicenceNotReceived );
+                    iDrmUtilityUi->DisplayQueryWithIdL(
+                        R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME_NO_RI,
+                        R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY );
                     }
                 }
             }
         }
-    if ( ret == EOk )
+
+    if ( ret == EAknSoftkeyYes || ret == EAknSoftkeyOk )
         {
         rightsRenewalWanted = ETrue;
         }
@@ -4070,11 +4050,25 @@
         ptrc.Set( *newUrl );
         }
 
-    CDrmBrowserLauncher* browserLauncher = CDrmBrowserLauncher::NewLC();
-    	
-    browserLauncher->LaunchUrlL(ptrc);
-    
-    CleanupStack::PopAndDestroy(); // browserLauncher
+    CSchemeHandler* schemeHandler( CSchemeHandler::NewL( ptrc ) );
+    CleanupStack::PushL( schemeHandler );
+    if ( iCoeEnv )
+        {
+        embeddedLaunch = ETrue;
+        // launch embedded
+        schemeHandler->Observer( this );
+        schemeHandler->HandleUrlEmbeddedL();
+        CleanupStack::Pop( schemeHandler );
+        iSchemeHandler = schemeHandler;
+        iWait.Start();
+        }
+    else
+        {
+        // no CoeEnv, launch standalone with scheme app
+        schemeHandler->HandleUrlStandaloneL();
+        CleanupStack::PopAndDestroy( schemeHandler );
+        }
+    schemeHandler = NULL;
 
     // delete newUrl if needed
     if ( newUrl )
@@ -4093,38 +4087,39 @@
     const TBool aShowNotes )
     {
     TInt r( KErrCancel );
-    TInt buttonCode( EOk );
+    TInt buttonCode( EAknSoftkeyYes );
     HBufC8* url( NULL );
 
     if ( !SilentRightsAllowedL() )
         {
-        buttonCode = ECancelled;
+        buttonCode = EAknSoftkeyNo;
         if ( aShowNotes )
             {
-            // Qt dialog not implemented yet
-            buttonCode = iDrmUtilityUi->DisplayQueryL( EQueryConnectToActivate, KNoValue );
+            buttonCode = iDrmUtilityUi->DisplayQueryWithIdL(
+                R_DRM_QRY_CONNECT_TO_ACTIVATE,
+                R_DRMUTILITY_CONFIRMATION_QUERY );
             }
         }
-    else if ( !(HasDefConn()) )
+    else if ( !BrowserAPDefinedL() )
         {
-        buttonCode = ECancelled;
+        buttonCode = EAknSoftkeyNo;
         if ( aShowNotes )
             {
-            // Qt dialog not implemented yet
-            buttonCode = iDrmUtilityUi->DisplayQueryL( EQueryConnectToActivate, KNoValue );
+            buttonCode = iDrmUtilityUi->DisplayQueryWithIdL(
+                R_DRM_QRY_CONNECT_TO_ACTIVATE,
+                R_DRMUTILITY_CONFIRMATION_QUERY );
             }
         }
 
-    if ( buttonCode == EOk )
+    if ( buttonCode == EAknSoftkeyYes || buttonCode == EAknSoftkeyOk )
         {
-        TBool APs( HasAccessPointsL() );
+        TInt APs( APCountL() );
         if ( !APs )
             {
             // No AP defined
             if ( aShowNotes )
                 {
-                // Qt dialog not implemented yet
-                iDrmUtilityUi->DisplayNoteL( EConfNoAccessPoint );
+                iDrmUtilityUi->DisplayNoteL( R_DRM_WARN_NO_CONN_DEFINED );
                 }
             r = KErrCANoRights;
             }
@@ -4158,8 +4153,8 @@
                         // Connection failed with selected AP
                         if ( aShowNotes )
                             {
-                            // Qt dialog not implemented yet
-                            iDrmUtilityUi->DisplayNoteL( EConfConnectionFailed );
+                            iDrmUtilityUi->DisplayNoteL(
+                                R_DRM_WARN_INVALID_OR_NO_AP );
                             }
                         r = KErrCANoRights;
                         }
@@ -4176,10 +4171,13 @@
                             if ( errorUrl )
                                 {
                                 // ask user whether error url should be opened
-                                // Qt dialog not implemented yet
-                                buttonCode = iDrmUtilityUi->DisplayQueryL( EQueryOpenErrorUrl, KNoValue );
-
-                                if ( buttonCode == EOk )
+                                buttonCode
+                                    = iDrmUtilityUi->DisplayQueryWithIdL(
+                                        R_DRM_QUERY_OPEN_ERROR_URL,
+                                        R_DRMUTILITY_CONFIRMATION_QUERY );
+
+                                if ( buttonCode == EAknSoftkeyYes
+                                    || buttonCode == EAknSoftkeyOk )
                                     {
                                     // Launch browser
                                     LaunchBrowserL( errorUrl );
@@ -4187,8 +4185,8 @@
                                 }
                             else
                                 {
-                                // Qt dialog not implemented yet
-                                iDrmUtilityUi->DisplayNoteL( EConfUnableToUnlock );
+                                iDrmUtilityUi->DisplayNoteL(
+                                    R_DRM_ERR_OPENING_FAIL_PERM );
                                 }
                             CleanupStack::PopAndDestroy( errorUrl );
                             }
@@ -4215,16 +4213,84 @@
     }
 
 // -----------------------------------------------------------------------------
+// CDrmUiHandlingImpl::BrowserAPDefinedL
+// -----------------------------------------------------------------------------
+//
+TBool DRM::CDrmUiHandlingImpl::BrowserAPDefinedL()
+    {
+    const TInt KDestinationSelectionMode( 2 );
+    TInt err( KErrNone );
+    TInt ap( 0 );
+    TInt alwaysAsk( 0 );
+    TInt defaultSnap( 0 );
+
+    CRepository* repository( CRepository::NewL( KCRUidBrowser ) );
+    repository->Get( KBrowserDefaultAccessPoint, ap );
+    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
+    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
+    delete repository;
+    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
+        {
+        alwaysAsk = ETrue;
+        }
+    else
+        {
+        RCmManager cmManager;
+        CleanupClosePushL( cmManager );
+        cmManager.OpenL();
+        if ( !alwaysAsk )
+            {
+                TRAP( err, cmManager.GetConnectionMethodInfoIntL(
+                        ap, CMManager::ECmIapId ) );
+            }
+        else if ( alwaysAsk == KDestinationSelectionMode )
+            {
+                TRAP( err, IapIdOfDefaultSnapL( cmManager, defaultSnap ) );
+            }
+        CleanupStack::PopAndDestroy( &cmManager );
+        if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
+            {
+            return ETrue;
+            }
+        }
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CDrmUiHandlingImpl::APCountL
+// -----------------------------------------------------------------------------
+//
+TInt DRM::CDrmUiHandlingImpl::APCountL()
+    {
+    TInt apCount( 0 );
+    RCmManager cmManager;
+    CleanupClosePushL( cmManager );
+    cmManager.OpenL();
+    RArray<TUint32> aps;
+    CleanupClosePushL( aps );
+    cmManager.ConnectionMethodL( aps, EFalse, EFalse, ETrue );
+    apCount = aps.Count();
+    CleanupStack::PopAndDestroy( 2, &cmManager ); //aps, cmManager
+    return apCount;
+    }
+
+// -----------------------------------------------------------------------------
 // CDrmUiHandlingImpl::HandleServerAppExit
 // -----------------------------------------------------------------------------
 //
 void DRM::CDrmUiHandlingImpl::HandleServerAppExit( TInt aReason )
     {
-    if ( aReason == EAknCmdExit)
+    if ( aReason == EAknCmdExit && !iSchemeHandler )
         {
         CAknEnv::RunAppShutter();
         }
 
+    if ( iSchemeHandler )
+        {
+        delete iSchemeHandler;
+        iSchemeHandler = NULL;
+        }
+
     if ( iWait.IsStarted() )
         {
         iWait.AsyncStop();
--- a/commondrm/drmutility/src/DrmUtilityDmgrWrapper.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/src/DrmUtilityDmgrWrapper.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,65 +1,68 @@
 /*
- * 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"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Dynamically loadable wrapper for Download manager
- *
- */
+* Copyright (c) 2007-2008 Nokia Corporation and/or 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:  Dynamically loadable wrapper for Download manager
+*
+*/
+
 #include <centralrepository.h>
 #include <cdblen.h>
 #include <cmconnectionmethod.h>
 #include <cmdestination.h>
 #include <cmconnectionmethoddef.h>
 #include <cmmanager.h>
+
+#ifdef __SERIES60_NATIVE_BROWSER
+#include <browseruisdkcrkeys.h>
+#endif
+
 #ifdef RD_MULTIPLE_DRIVE
 #include <driveinfo.h>
 #endif
+
 #include <StringLoader.h>
 #include <data_caging_path_literals.hrh>
 
-#include <es_enum.h> // tconnectioninfo
-#include <es_enum_partner.h> // TConnectionInfoV2
-#include <es_sock.h> // rconnection rsocket
-#include <AknProgressDialog.h> // avkon classes
-#include <eikprogi.h>
-
 #include <ConeResLoader.h>
 #include <apparc.h>
 #include <DrmUtilityDmgrWrapper.rsg>
 
-#include <RoapEng.h>
-#include <RoapDef.h>
-#include <RoapObserver.h>
-
-// including files related to qt changes
-#include <qstring.h>
-#include <downloadmanager.h>
-#include <download.h>
-#include <dmcommon.h>
-#include <downloadevent.h>
-
+#include "RoapEng.h"
 #include "RoapSyncWrapper.h"
 #include "RoapDef.h"
+
 #include "DrmUtilityDmgrWrapper.h"
 #include "DrmUtilityDmgrWrapperLogger.h"
-#include "drmutilityconnection.h"
-#include "buffercontainers.h" //CnameContainer etc.
-#include "cleanupresetanddestroy.h"
-#include "buffercontainers.h"
-#include "qdrmutilitydmgreventhandler.h"
 
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "DrmUtilityDmgrWrapperTraces.h"
+// DEBUG macros
+#ifdef _DEBUG
+#define DRMDEBUGLIT( a, b ) \
+_LIT( a , b )
+#define DRMDEBUG( a ) \
+RDebug::Print( a )
+#define DRMDEBUG2( a, b ) \
+RDebug::Print( a, b )
+#else
+#define DRMDEBUGLIT( a, b )
+#define DRMDEBUG( a )
+#define DRMDEBUG2( a, b )
+#endif
+
+// CONSTANTS
+#ifndef __SERIES60_NATIVE_BROWSER
+const TUid KCRUidBrowser = {0x10008D39};
+const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
+const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
 #endif
 
 #ifndef RD_MULTIPLE_DRIVE
@@ -69,129 +72,52 @@
 _LIT( KRomDriveFormatter, "%c:" );
 _LIT( KKDrmUtilityTriggerFilePathFormatter, "%c:\\" );
 #endif
+
 _LIT( KCDrmUtilityDmgrWrapperResFileName,"DrmUtilityDmgrWrapper.rsc" );
-const TInt KProgressInfoFinalValue(200);
-const TInt KProgressInfoIncrementSmall(5);
-const TInt KProgressInfoIncrementMedium(10);
-const TInt KProgressInfoIncrementLarge(30);
-
-using namespace WRT;
+const TInt KProgressInfoFinalValue( 200 );
+const TInt KProgressInfoIncrementSmall( 5 );
+const TInt KProgressInfoIncrementMedium( 10 );
+const TInt KProgressInfoIncrementLarge( 30 );
 
 // ======== LOCAL FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
-// ClearIfNotRoapTemporaryError
+// DeleteHttpDowload
 // ---------------------------------------------------------------------------
 //
-void ClearIfNotRoapTemporaryError(TInt aError, HBufC8*& aBuffer)
+LOCAL_C void DeleteHttpDowload( TAny* aDownload )
     {
-    // ROAP ERROR CODES
-    switch (aError)
-        {
-        case KErrRoapGeneral:
-        case KErrRoapServer:
-        case KErrRoapDomainFull:
-        case KErrRoapNotRegistered:
-            break;
-        default:
-            delete aBuffer;
-            aBuffer = NULL;
-            break;
-        }
+    reinterpret_cast< RHttpDownload* >( aDownload )->Delete();
     }
 
-
 // ---------------------------------------------------------------------------
-// Calls the appropriate member function of the object during object cleanup
+// IapIdOfDefaultSnapL
+// for trapping purposes only
 // ---------------------------------------------------------------------------
 //
-template<class _Ty, class _Tf>	class mem_auto_ptr 
-	{
-	public:
-		explicit mem_auto_ptr(_Ty _P = 0, _Tf _F = 0) 
-			: _Owns(_P != 0), _Ptr(_P), _Fn(_F) 
-				{}
-		
-		mem_auto_ptr(const mem_auto_ptr<_Ty,_Tf>& _Y) 
-			: _Owns(_Y._Owns), _Ptr(_Y.release()), _Fn(_Y.function()) 
-				{}
-		
-		mem_auto_ptr<_Ty,_Tf>& operator=(const mem_auto_ptr<_Ty,_Tf>& _Y) 
-			{
-			if (this != &_Y)
-				{
-				_Fn = _Y.function();
-				if (_Ptr != _Y.get())
-					{
-					if (_Owns)
-						delete _Ptr;
-					_Owns = _Y._Owns; 
-					}
-				else if (_Y._Owns)
-					_Owns = true;
-				_Ptr = _Y.release(); 
-				}
-			return (*this); 
-			}
-		
-		~mem_auto_ptr()
-			{
-			if (_Owns)
-				{
-				(_Ptr->*_Fn)();
-				}
-			}
-		
-		_Ty& operator*() const 
-			{
-			return (*get()); 
-			}
-		
-		_Ty *operator->() const 
-			{
-			return (get()); 
-			}
-		
-		_Ty *get() const 
-			{
-			return (_Ptr); 
-			}
-		
-		_Ty *release() const 
-			{
-			((mem_auto_ptr<_Ty,_Tf> *)this)->_Owns = false;
-			return (_Ptr); 
-			}
-		
-		_Tf *function() const
-			{
-			return (_Fn);
-			}
-	private:
-		bool _Owns;
-		_Ty _Ptr;
-		_Tf _Fn;
-	};
+LOCAL_C TUint32 IapIdOfDefaultSnapL(
+    RCmManager& aCmManager,
+    const TUint32 aDefaultSnap )
+    {
+    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
+    CleanupClosePushL( dest );
+    TUint32 iapIdOfDest( 0 );
 
+    if ( dest.ConnectionMethodCount() <= 0 )
+        {
+        User::Leave( KErrNotFound );
+        }
 
-// ---------------------------------------------------------------------------
-// UpdateBufferL
-// ---------------------------------------------------------------------------
-//
-template<typename bufType, typename descType>
-LOCAL_C void UpdateBufferL(bufType*& aTargetBuf, const descType& aSourceBuf)
-    {
-    if (aTargetBuf)
-        {
-        delete aTargetBuf;
-        aTargetBuf = NULL;
-        }
-    if (aSourceBuf.Length())
-        {
-        aTargetBuf = aSourceBuf.AllocL();
-        }
+    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
+    CleanupClosePushL( cMeth );
+
+    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
+    CleanupStack::PopAndDestroy( &cMeth );
+    CleanupStack::PopAndDestroy( &dest );
+    return iapIdOfDest;
     }
 
+
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
@@ -199,10 +125,8 @@
 // ---------------------------------------------------------------------------
 //
 CDrmUtilityDmgrWrapper::CDrmUtilityDmgrWrapper() :
-            CActive(CActive::EPriorityStandard),
-            iUseCoeEnv(EFalse), iIapId(0), iState(EInit)
+    iUseCoeEnv( EFalse )
     {
-    CActiveScheduler::Add(this);
     }
 
 // ---------------------------------------------------------------------------
@@ -213,24 +137,14 @@
     {
     CLOG_WRITE( "DMgrWrapper::ConstructL" );
     const TInt KDrmUtilityDmgrWrapperUid = 0x102830FE;
-    iConnection = DRM::CDrmUtilityConnection::NewL(ETrue);
-    
-    try
-	    {
-	    QString drmUtilityDmgrWrapperUid(QString::number(KDrmUtilityDmgrWrapperUid));
-	    iDlMgr = q_check_ptr(new DownloadManager(drmUtilityDmgrWrapperUid));
-	    }
-	catch(const std::exception& exception)
-		{
-		qt_symbian_exception2LeaveL(exception);
-		}
+    iDlMgr.ConnectL( TUid::Uid(KDrmUtilityDmgrWrapperUid), *this, EFalse );
     iProgressInfo = NULL;
     iProgressNoteDialog = NULL;
     iDialogDismissed = ETrue;
-    User::LeaveIfError(iFs.Connect());
-    User::LeaveIfError(iFs.ShareProtected());
     }
 
+
+
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::NewL
 // ---------------------------------------------------------------------------
@@ -238,11 +152,12 @@
 CDrmUtilityDmgrWrapper* CDrmUtilityDmgrWrapper::NewL()
     {
     CLOG_WRITE( "DMgrWrapper::NewL" );
-    CDrmUtilityDmgrWrapper* self(CDrmUtilityDmgrWrapper::NewLC());
-    CleanupStack::Pop(self);
+    CDrmUtilityDmgrWrapper* self( CDrmUtilityDmgrWrapper::NewLC() );
+    CleanupStack::Pop( self );
     return self;
     }
 
+
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::NewLC
 // ---------------------------------------------------------------------------
@@ -250,12 +165,13 @@
 CDrmUtilityDmgrWrapper* CDrmUtilityDmgrWrapper::NewLC()
     {
     CLOG_WRITE( "DMgrWrapper::NewLC" );
-    CDrmUtilityDmgrWrapper* self(new (ELeave) CDrmUtilityDmgrWrapper());
-    CleanupStack::PushL(self);
+    CDrmUtilityDmgrWrapper* self( new( ELeave ) CDrmUtilityDmgrWrapper() );
+    CleanupStack::PushL( self );
     self->ConstructL();
     return self;
     }
 
+
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::~CDrmUtilityDmgrWrapper
 // ---------------------------------------------------------------------------
@@ -263,31 +179,44 @@
 CDrmUtilityDmgrWrapper::~CDrmUtilityDmgrWrapper()
     {
     CLOG_WRITE( "DMgrWrapper destructor" );
-    Cancel();
-    if (iProgressNoteDialog)
-        {
-        // deletes the dialog
-        TRAPD( err, iProgressNoteDialog->ProcessFinishedL() );
-        if (err)
-            {
-            delete iProgressNoteDialog;
-            }
-        iProgressNoteDialog = NULL;
-        }
+    if ( iProgressNoteDialog )
+       {
+       // deletes the dialog
+       TRAPD( err, iProgressNoteDialog->ProcessFinishedL() );
+       if ( err )
+           {
+           delete iProgressNoteDialog;
+           }
+       iProgressNoteDialog = NULL;
+       }
     delete iErrorUrl;
+    delete iPostResponseUrl;
+
+#ifdef _DEBUG
 
-    delete iPostResponseUrl;
-    delete iConnection;
+    if ( iDlMgr.Handle() )
+        {
+        iDlMgr.Close();
+        }
+
+#else
+
+    iDlMgr.Close();
+
+#endif
+    }
 
-    delete iTriggerUrl;
-    delete iTriggerBuf;
-    delete iFileName;
-    delete iRoapEng;
-    iDownload->cancel();
-    delete iDlMgr;
-    delete iDrmUtilityDmgrEventHandler;
-    
-    iFs.Close();
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL( const HBufC8* aUrl )
+    {
+    CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
+    iUseCoeEnv = EFalse;
+    DoDownloadAndHandleRoapTriggerL( aUrl );
+    HandlePostResponseUrlL();
     }
 
 
@@ -295,453 +224,447 @@
 // CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL
 // ---------------------------------------------------------------------------
 //
-void CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL(const HBufC8* aUrl)
-    {
-    CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
-    iUseCoeEnv = EFalse;
-    if (iState != EInit || iWait.IsStarted())
-        {
-        User::Leave(KErrNotReady);
-        }
-
-    UpdateBufferL<HBufC8, TDesC8> (iTriggerUrl, *aUrl);
-    CompleteToState(EInit, KErrNone);
-    iWait.Start();
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
 void CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL(
-        const HBufC8* aUrl, CCoeEnv& aCoeEnv)
+    const HBufC8* aUrl, CCoeEnv& aCoeEnv )
     {
     CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
     iCoeEnv = &aCoeEnv;
     iUseCoeEnv = ETrue;
-    if (iState != EInit || iWait.IsStarted())
+    DoDownloadAndHandleRoapTriggerL( aUrl );
+    HandlePostResponseUrlL();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::HandlePostResponseUrlL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::HandlePostResponseUrlL()
+    {
+    if ( iPostResponseUrl )
         {
-        User::Leave(KErrNotReady);
+        DoDownloadAndHandleRoapTriggerL( iPostResponseUrl );
+        // prevent infinite post response fetches.
+        delete iPostResponseUrl;
+        iPostResponseUrl = NULL;
+
+        // Ensure progress note gets deleted.
+        // It remains open if prUrl initialted ROAP operation has PrUrl
+        // (unsupported chained metering report)
+        RemoveProgressNoteL();
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DoDownloadAndHandleRoapTriggerL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::DoDownloadAndHandleRoapTriggerL(
+    const HBufC8* aUrl )
+    {
+    RFs fs;
+    RFile roapTrigger;
+    HBufC8* triggerBuf( NULL );
+    TBool result( EFalse );
+    TFileName triggerFileName;
+
+    CLOG_WRITE( "DMgrWrapper::DoDownloadAndHandleRoapTriggerL" );
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL( fs );
+    User::LeaveIfError( fs.ShareProtected() );
+
+#ifndef RD_MULTIPLE_DRIVE
+
+    User::LeaveIfError( roapTrigger.Temp(
+            fs, KDrmUtilityTriggerFilePath, triggerFileName, EFileWrite ) );
+
+#else //RD_MULTIPLE_DRIVE
+
+    TInt driveNumber( -1 );
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRam, driveNumber );
+    fs.DriveToChar( driveNumber, driveLetter );
+
+    TFileName utilityTriggerFilePath;
+
+    utilityTriggerFilePath.Format( KKDrmUtilityTriggerFilePathFormatter,
+        (TUint)driveLetter );
+
+    User::LeaveIfError( roapTrigger.Temp(
+            fs, utilityTriggerFilePath, triggerFileName, EFileWrite ) );
+
+#endif
+
+
+    TPtrC8 KNullPtr8( NULL, 0 );
+    RHttpDownload* downloadPtr( iDlMgr.FindDownload( *aUrl, KNullPtr8 ) );
+    if ( downloadPtr )
+        {
+        // Stale download found.
+        // Remove it, and re-create a new download.
+        downloadPtr->Delete();
+        downloadPtr = NULL;
+        }
+
+    // create and start download
+    RHttpDownload& download = iDlMgr.CreateDownloadL( *aUrl, result );
+    // Put download for proper cleanup.
+    TCleanupItem item( DeleteHttpDowload, &download );
+    CleanupStack::PushL( item );
+
+    CleanupClosePushL( roapTrigger );
+
+    if ( !iPostResponseUrl )
+        {
+        // No post response retieval. Note must be created.
+        ShowProgressNoteL();
         }
 
-    UpdateBufferL<HBufC8, TDesC8> (iTriggerUrl, *aUrl);
-    CompleteToState(EInit, KErrNone);
-    iWait.Start();
+    if ( result )
+        {
+        const TInt KReadBufSize( 512 );
+        TInt triggerFileSize( 0 );
+
+        CLOG_WRITE(
+            "DMgrWrapper::DoDownloadAndHandleRoapTriggerL: download created" );
+        iDownloadSuccess = EFalse;
+        iConnectionError = EFalse;
+
+        SetDefaultAccessPointL();
+
+        User::LeaveIfError( download.SetFileHandleAttribute( roapTrigger ) );
+        User::LeaveIfError(
+            download.SetBoolAttribute( EDlAttrNoContentTypeCheck, ETrue ) );
+        User::LeaveIfError( download.Start() );
+
+        // wait until download is finished
+        iWait.Start();
+
+        // Check success of download
+        CLOG_WRITE(
+            "DMgrWrapper::DoDownloadAndHandleRoapTriggerL: download finished" );
+
+        CleanupStack::Pop( &roapTrigger );
+        roapTrigger.Close();
+        if ( !iDownloadSuccess )
+            {
+            RemoveProgressNoteL();
+            if ( iConnectionError )
+                {
+                User::Leave( KErrCouldNotConnect );
+                }
+            else
+                {
+                User::Leave( KErrGeneral );
+                }
+            }
+        User::LeaveIfError( roapTrigger.Open( fs,
+                                              triggerFileName,
+                                              EFileShareReadersOrWriters ) );
+        CleanupClosePushL( roapTrigger );
+
+        // Get filehandle of ROAP trigger
+        // Read file to buffer
+        User::LeaveIfError( roapTrigger.Size( triggerFileSize ) );
+        triggerBuf = HBufC8::NewLC( triggerFileSize );
+
+        RBuf8 readBuf;
+        readBuf.CleanupClosePushL();
+        readBuf.CreateL( KReadBufSize );
+
+        User::LeaveIfError( roapTrigger.Read( readBuf, KReadBufSize ) );
+        triggerBuf->Des().Copy( readBuf );
+        while ( readBuf.Length() == KReadBufSize )
+            {
+            User::LeaveIfError( roapTrigger.Read( readBuf, KReadBufSize ) );
+            triggerBuf->Des().Append( readBuf );
+            }
+
+        CleanupStack::PopAndDestroy( &readBuf );
+
+        if ( iUseCoeEnv && iProgressInfo )
+            {
+            iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
+            }
+
+        // And let ROAP handle it...
+        CRoapSyncWrapper* roapWrapper( CRoapSyncWrapper::NewL() );
+        CleanupStack::PushL( roapWrapper );
+        TRAPD( err, roapWrapper->HandleTriggerL( *triggerBuf ) );
+        if ( err )
+            {
+            TInt errorType( 0 );
+            TRAPD( err2,
+                iErrorUrl = roapWrapper->GetErrorUrlL( err, errorType ) );
+            if ( err2 )
+                {
+                RemoveProgressNoteL();
+                delete iErrorUrl;
+                iErrorUrl = NULL;
+                User::Leave( err2 );
+                }
+            else if ( errorType != KErrRoapTemporary )
+                {
+                RemoveProgressNoteL();
+                delete iErrorUrl;
+                iErrorUrl = NULL;
+                User::Leave( err );
+                }
+            else
+                {
+                RemoveProgressNoteL();
+                User::Leave( err );
+                }
+            }
+        if ( iPostResponseUrl )
+            {
+            delete iPostResponseUrl;
+            iPostResponseUrl = NULL;
+            }
+        iPostResponseUrl = roapWrapper->GetPostResponseUrlL();
+        CleanupStack::PopAndDestroy( 2, triggerBuf );
+
+        if ( iUseCoeEnv && iProgressInfo && !iPostResponseUrl )
+            {
+            // No PrUrl found. Progess is complete.
+            iProgressInfo->SetAndDraw( KProgressInfoFinalValue );
+            }
+        }
+
+    // Trick to keep note open long enough during prUrl retrieval
+    if ( !iPostResponseUrl )
+        {
+        RemoveProgressNoteL();
+        }
+    else
+        {
+        if ( iUseCoeEnv && iProgressInfo )
+            {
+            iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
+            }
+        }
+
+    CleanupStack::PopAndDestroy( &roapTrigger );
+    CleanupStack::PopAndDestroy( &download );
+
+    fs.Delete( triggerFileName );
+    CleanupStack::PopAndDestroy( &fs );
     }
 
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::SetDefaultAccessPointL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::SetDefaultAccessPointL()
+    {
+    const TInt KDestinationSelectionMode( 2 );
+    CRepository* repository( NULL );
+    TInt ap( 0 );
+    TInt alwaysAsk( 0 );
+    TUint32 iapd32( 0 );
+    TInt defaultSnap( 0 );
+    TInt err( KErrNone );
+
+    CLOG_WRITE( "DMgrWrapper::SetDefaultAccessPointL" );
+    DRMDEBUGLIT( KDuiBrApFormat,
+        "CDrmUtilityDmgrWrapper::SetDefaultAccessPointL %d" );
+    DRMDEBUGLIT( KDuiBrApFormat2, " KBrowserDefaultAccessPoint = %d" );
+    DRMDEBUGLIT( KDuiBrApFormat3, " KBrowserAccessPointSelectionMode = %d" );
+    DRMDEBUGLIT( KDuiBrApFormat4, " KBrowserNGDefaultSnapId = %d" );
+
+    repository = CRepository::NewL( KCRUidBrowser );
+    CleanupStack::PushL( repository );
+    repository->Get( KBrowserDefaultAccessPoint, ap );
+    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
+    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
+    DRMDEBUG2( KDuiBrApFormat(), __LINE__ );
+    DRMDEBUG2( KDuiBrApFormat2(), ap );
+    DRMDEBUG2( KDuiBrApFormat3(), alwaysAsk );
+    DRMDEBUG2( KDuiBrApFormat4(), defaultSnap );
+
+    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
+        {
+        alwaysAsk = ETrue;
+        }
+    else
+        {
+        RCmManager cmManager;
+        cmManager.OpenLC();
+        if ( !alwaysAsk )
+            {
+            TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
+                    ap, CMManager::ECmIapId ) );
+            }
+        else if ( alwaysAsk == KDestinationSelectionMode )
+            {
+            TRAP( err, iapd32 =
+                IapIdOfDefaultSnapL( cmManager, defaultSnap ) );
+            }
+        CleanupStack::PopAndDestroy( &cmManager );
+        }
+    if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
+        {
+        err = iDlMgr.SetIntAttribute( EDlMgrIap, iapd32 );
+        }
+    CleanupStack::PopAndDestroy( repository );
+    }
+
+
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::GetErrorUrlL
 // ---------------------------------------------------------------------------
 //
 HBufC8* CDrmUtilityDmgrWrapper::GetErrorUrlL()
     {
-    if (iErrorUrl)
+    if( iErrorUrl )
         {
         return iErrorUrl->AllocL();
         }
     return NULL;
     }
 
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DoConnectL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::DoConnectL(TDownloadState aNextState)
-    {
-    iConnection->ConnectL(&iStatus);
-    if (iUseCoeEnv && iProgressInfo)
-        {
-        iProgressInfo->SetAndDraw(0);
-        }
-    iState = aNextState;
-    SetActive();
-    }
 
-/////
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DoDownloadRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::DoDownloadRoapTriggerL(TDownloadState aNextState)
-    {
-    // Fetch name of opend connection to be used as part of DMGR
-    // initialisation
-    TUint32 iapId(0);
-    if (iConnection->IsConnected(iapId))
-        {
-    	const QVariant qIapId( static_cast<unsigned long long>(iapId) );
-		iDlMgr->setAttribute( WRT::ClientName, qIapId );
-        }
-    RFile roapTrigger;
-    CleanupClosePushL(roapTrigger);
-    DRM::CFileNameContainer* triggerFileName(NULL);
-
-    // If no Trigger URL then nothing to download. So finish transaction
-    if (!iTriggerUrl || iTriggerUrl->Length() <= 0)
-        {
-        if (iUseCoeEnv && iProgressInfo)
-            {
-            // No PrUrl found. Progess is complete.
-            iProgressInfo->SetAndDraw(KProgressInfoFinalValue);
-            }
-        CompleteToState(EComplete, KErrNone);
-        return;
-        }
-
-    TPtrC8 KNullPtr8(NULL, 0);
-    QString downloadUrl((QChar*)iTriggerUrl->Des().Ptr(),iTriggerUrl->Length());
-    //uncomment
-    Download* download = NULL;//iDlMgr->findDownload( downloadUrl );
-    if (download)
-        {
-        // Stale download found.
-        // Remove it, and re-create a new download.
-		download->cancel();
-		download = NULL;
-        if (iFileName)
-            {
-            iFs.Delete(*iFileName);
-            }
-        }
-    triggerFileName=DRM::CFileNameContainer::NewLC();
-    
-#ifndef RD_MULTIPLE_DRIVE
-
-    User::LeaveIfError( roapTrigger.Temp(
-                    iFs, KDrmUtilityTriggerFilePath, triggerFileName->iBuffer, EFileWrite ) );
-
-#else //RD_MULTIPLE_DRIVE
-    TInt driveNumber(-1);
-    TChar driveLetter;
-    DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRam, driveNumber);
-    iFs.DriveToChar(driveNumber, driveLetter);
-
-    DRM::CFileNameContainer*
-        utilityTriggerFilePath(DRM::CFileNameContainer::NewLC());
-
-    utilityTriggerFilePath->iBuffer.Format(
-            KKDrmUtilityTriggerFilePathFormatter, (TUint) driveLetter);
-
-    User::LeaveIfError(roapTrigger.Temp(iFs, utilityTriggerFilePath->iBuffer,
-            triggerFileName->iBuffer, EFileWrite));
-    CleanupStack::PopAndDestroy( utilityTriggerFilePath );
-    utilityTriggerFilePath=NULL;
-
-#endif
-    UpdateBufferL<HBufC, TFileName> (iFileName, triggerFileName->iBuffer);
-    CleanupStack::PopAndDestroy( triggerFileName );
-    triggerFileName=NULL;
-    // create and start download
-    downloadUrl = ((QChar*)iTriggerUrl->Des().Ptr(),iTriggerUrl->Length());
-    
-    iDownload = iDlMgr->createDownload(downloadUrl);
-    try
-		{
-		iDrmUtilityDmgrEventHandler = q_check_ptr(new QDrmUtilityDmgrEventHandler(*this, *iDownload));
-		}
-    catch(const std::exception& exception)
-		{
-		qt_symbian_exception2LeaveL(exception);
-		}
-    
-    iDownloadSuccess = EFalse;
-	iConnectionError = EFalse;
-
-	try
-		{
-		RBuf fileName;
-		User::LeaveIfError(fileName.Create(KMaxFileName));
-		CleanupClosePushL(fileName);
-		roapTrigger.Name(fileName);
-		const QVariant& roapTriggerValue( QString((QChar*) fileName.Ptr(), fileName.Length()) );
-		CleanupStack::PopAndDestroy(&fileName);
-		iDownload->setAttribute(FileName,roapTriggerValue);
-		const QVariant& val(ETrue);
-		iDownload->setAttribute(ContentType, val);
-		iDownload->start();
-		}
-	catch(const std::exception& exception)
-		{
-		qt_symbian_exception2LeaveL(exception);
-		}
-	// wait until download is finished
-	iState = aNextState;
-	TRequestStatus* status(&iStatus);
-	*status = KRequestPending;
-	SetActive();
-        
-    CleanupStack::PopAndDestroy(&roapTrigger);
-    }
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DoSaveRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::DoSaveRoapTriggerL(TDownloadState aNextState)
-    {
-    // Check success of download
-
-    // Fetch download created in DoDownloadRoapTriggerL
-	QString downloadUrl((QChar*)iTriggerUrl->Des().Ptr(),iTriggerUrl->Length());
-     
-	typedef void (Download::*download_cancel_fnptr) ();
-	//uncomment
-	Download* dwnld = NULL;//iDlMgr->findDownload( downloadUrl );
-	mem_auto_ptr<Download*, download_cancel_fnptr> downloadPtr(dwnld,&WRT::Download::cancel);
-    
-    // Delete trigger URL so that it is possible to check
-    // whether or not meteringResponse has PrUrl.
-    delete iTriggerUrl;
-    iTriggerUrl = NULL;
-    iStatus = KRequestPending;
-    
-    RFile roapTrigger;
-
-    if (!iDownloadSuccess)
-        {
-        RemoveProgressNoteL();
-        if (iConnectionError)
-            {
-            User::Leave(KErrCouldNotConnect);
-            }
-        else
-            {
-            User::Leave(KErrGeneral);
-            }
-        }
-    User::LeaveIfError(roapTrigger.Open(iFs, *iFileName,
-            EFileShareReadersOrWriters));
-    CleanupClosePushL(roapTrigger);
-    // Get filehandle of ROAP trigger
-    const TInt KReadBufSize = 512;
-
-    RBuf8 readBuf;
-    readBuf.CleanupClosePushL();
-    readBuf.CreateL(KReadBufSize);
-
-    // Read file to buffer
-    TInt triggerFileSize(0);
-    User::LeaveIfError(roapTrigger.Size(triggerFileSize));
-    if (iTriggerBuf)
-        {
-        delete iTriggerBuf;
-        iTriggerBuf = NULL;
-        }
-    iTriggerBuf = HBufC8::NewL(triggerFileSize);
-    User::LeaveIfError(roapTrigger.Read(readBuf, KReadBufSize));
-    iTriggerBuf->Des().Copy(readBuf);
-    while (readBuf.Length() == KReadBufSize)
-        {
-        User::LeaveIfError(roapTrigger.Read(readBuf, KReadBufSize));
-        iTriggerBuf->Des().Append(readBuf);
-        }
-
-    // And let ROAP handle it...
-    CleanupStack::PopAndDestroy(&readBuf);
-    CleanupStack::PopAndDestroy(&roapTrigger);
-    
-    iFs.Delete(*iFileName);
-    delete iFileName;
-    iFileName = NULL;
-    if (iUseCoeEnv && iProgressInfo)
-        {
-        iProgressInfo->IncrementAndDraw(KProgressInfoIncrementMedium);
-        }
-
-    CompleteToState(aNextState, KErrNone);
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DoHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::DoHandleRoapTriggerL(TDownloadState aNextState)
-    {
-    Roap::TTriggerType triggerType;
-    Roap::TRiContextStatus contextStatus;
-    Roap::TDomainOperation domainOperation;
-
-    RPointerArray<HBufC8> contentIds;
-    CleanupResetAndDestroyPushL( contentIds );
-
-    iRoapEng = Roap::CRoapEng::NewL();
-
-    iRoapEng->SetTriggerL(*iTriggerBuf, NULL, triggerType, contextStatus,
-            domainOperation, contentIds);
-
-    CleanupStack::PopAndDestroy(&contentIds);
-
-    iRoapEng->AcceptL(this, &iStatus);
-    iState = aNextState;
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::CompleteToState
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::CompleteToState(
-        CDrmUtilityDmgrWrapper::TDownloadState aNextState, TInt aError)
-    {
-    iState = aNextState;
-    TRequestStatus* ownStatus(&iStatus);
-    User::RequestComplete(ownStatus, aError);
-    SetActive();
-    }
-
-// MHttpDownloadMgrObserver methods
 // ---------------------------------------------------------------------------
 // From class MHttpDownloadMgrObserver
 //
 // CDrmUtilityDmgrWrapper::HandleDMgrEventL
 // ---------------------------------------------------------------------------
 //
-void CDrmUtilityDmgrWrapper::HandleDownloadEventL( WRT::DownloadEvent* aEvent )
+void CDrmUtilityDmgrWrapper::HandleDMgrEventL(
+    RHttpDownload& aDownload,
+    THttpDownloadEvent aEvent )
     {
-    QString KDrmUtilityMimeTypeROAPTrigger("application/vnd.oma.drm.roap-trigger+xml");
-	
-    try
-    {
-    if (aEvent->type() == DownloadEvent::HeadersReceived)
+    _LIT8( KDrmUtilityMimeTypeROAPTrigger,
+        "application/vnd.oma.drm.roap-trigger+xml" );
+
+    CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL" );
+    CLOG_WRITE_FORMAT( "iDownLoadState = %d", aEvent.iDownloadState );
+    CLOG_WRITE_FORMAT( "iProgressState = %d", aEvent.iProgressState );
+
+    if ( aEvent.iProgressState == EHttpContentTypeReceived )
         {
         // check received mimetype
-        QString contentType = iDownload->attribute(ContentType).toString();
-        if (!contentType.contains(KDrmUtilityMimeTypeROAPTrigger))
+        RBuf8 contentType;
+        contentType.CleanupClosePushL();
+        contentType.CreateL( KMaxContentTypeLength );
+        User::LeaveIfError(
+            aDownload.GetStringAttribute( EDlAttrContentType, contentType ) );
+        if ( !contentType.FindF( KDrmUtilityMimeTypeROAPTrigger ) )
             {
             // ROAP trigger found, continue download
-			iDownload->start();
+            User::LeaveIfError( aDownload.Start() );
             }
         else
             {
             // wrong MIME type, so stop download
             iDownloadSuccess = EFalse;
-            iDownload->cancel();
+            User::LeaveIfError( aDownload.Delete() );
+            }
+        CleanupStack::PopAndDestroy( &contentType );
+        }
+
+    if ( aEvent.iDownloadState == EHttpDlCreated )
+        {
+        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlCreated" );
+        if ( iUseCoeEnv )
+            {
+        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
             }
         }
-    }
-    catch(const std::exception& exception)
-    	{
-		qt_symbian_exception2LeaveL(exception);
-    	}
-    
-    if (aEvent->type() == DownloadEvent::Created)
+    else if ( aEvent.iProgressState == EHttpProgDisconnected )
         {
-        CLOG_WRITE( "DMgrWrapper::ProcessDownloadEventL: Created" );
-        if (iUseCoeEnv && iProgressInfo)
-            {
-            iProgressInfo->IncrementAndDraw(KProgressInfoIncrementMedium);
-            }
-        }
-    else if (aEvent->type() == DownloadEvent::NetworkLoss)
-        {
-        CLOG_WRITE( "DMgrWrapper::ProcessDownloadEventL: NetworkLoss" );
-        
+        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpProgDisconnected" );
         // store failure
         iDownloadSuccess = EFalse;
         iConnectionError = ETrue;
         // finished
+        iWait.AsyncStop();
         }
-    else if (aEvent->type() == DownloadEvent::InProgress)
+    else if ( aEvent.iDownloadState == EHttpDlInprogress )
         {
-        CLOG_WRITE( "DMgrWrapper::ProcessDownloadEventL: InProgress" );
-        if (iUseCoeEnv)
+        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlInprogress" );
+        if ( iUseCoeEnv )
             {
-            iProgressInfo->IncrementAndDraw(KProgressInfoIncrementSmall);
+        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementSmall );
             }
         }
-    else if (aEvent->type() == DownloadEvent::Completed)
+    else if ( aEvent.iDownloadState == EHttpDlCompleted )
         {
         // store success
-        CLOG_WRITE( "DMgrWrapper::ProcessDownloadEventL: Completed" );
+        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlCompleted" );
         iDownloadSuccess = ETrue;
-        iConnectionError = EFalse;
-        if (iUseCoeEnv)
+        if ( iUseCoeEnv )
             {
-            iProgressInfo->IncrementAndDraw(KProgressInfoIncrementLarge);
+        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementLarge );
             }
         // finished
-        TRequestStatus* status(&iStatus);
-        User::RequestComplete(status, KErrNone);
+        iWait.AsyncStop();
         }
-    else if (aEvent->type() == DownloadEvent::Failed)
+    else if ( aEvent.iDownloadState == EHttpDlFailed )
         {
-		try
-			{
-			TInt32 err(KErrNone);
-	
-			CLOG_WRITE( "DMgrWrapper::ProcessDownloadEventL: Failed" );
-			// store failure
-			iDownloadSuccess = EFalse;
-			err = (iDownload->attribute(LastError)).toInt();
-			CLOG_WRITE_FORMAT( "EDlAttrErrorId = %d", err );
-	
-			if (err == ConnectionFailed || err == TransactionFailed)
-				{
-				CLOG_WRITE( "DMgrWrapper::ProcessDownloadEventL: ConnectionFailed" );
-				iConnectionError = ETrue;
-				}
-			iDownload->cancel(); // remove useless download
-			iDlMgr->pauseAll(); // disconnects Dmgr instantly.
-			// finished
-			TRequestStatus* status(&iStatus);
-			if ( iConnection->HasMoreConnectionAttempts() )
-				{
-				iState = EInit; // re-try with another conection
-				User::RequestComplete(status, KErrNone);
-				}
-			else
-				{
-				User::RequestComplete(status, KErrCancel);        
-				}
-			}
-		catch(const std::exception& exception)
-			{
-			qt_symbian_exception2LeaveL(exception);
-			}
+        TInt32 err( KErrNone );
+
+        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlFailed" );
+        // store failure
+        iDownloadSuccess = EFalse;
+        User::LeaveIfError( aDownload.GetIntAttribute( EDlAttrErrorId, err ) );
+        CLOG_WRITE_FORMAT( "EDlAttrErrorId = %d", err );
+
+        if ( err == EConnectionFailed ||
+             err == ETransactionFailed)
+            {
+            CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EConnectionFailed" );
+            iConnectionError = ETrue;
+            }
+
+        // finished
+        iWait.AsyncStop();
         }
     }
 
+
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::ShowProgressNoteL
 // ---------------------------------------------------------------------------
 //
 void CDrmUtilityDmgrWrapper::ShowProgressNoteL()
     {
-    DRM::CFileNameContainer* resFileName(NULL);
+    TFileName resFileName;
 
     CLOG_WRITE( "DMgrWrapper::ShowProgressNoteL" );
-    if (iUseCoeEnv)
+    if ( iUseCoeEnv )
         {
         // Initialize the progress note dialog, it's values,
         // and execute it
-        resFileName=DRM::CFileNameContainer::NewLC();
 #ifndef RD_MULTIPLE_DRIVE
 
-        resFileName->iBuffer.Copy( KDriveZ );
+        resFileName.Copy( KDriveZ );
 
 #else //RD_MULTIPLE_DRIVE
-        TInt driveNumber(-1);
-        TChar driveLetter;
-        DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRom, driveNumber);
 
-        iCoeEnv->FsSession().DriveToChar(driveNumber, driveLetter);
+        TInt driveNumber( -1 );
+        TChar driveLetter;
+        DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRom, driveNumber );
 
-        resFileName->iBuffer.Format(KRomDriveFormatter, (TUint) driveLetter);
+        iCoeEnv->FsSession().DriveToChar( driveNumber, driveLetter );
+
+        resFileName.Format( KRomDriveFormatter, (TUint)driveLetter );
 
 #endif
 
-        resFileName->iBuffer.Append(KDC_RESOURCE_FILES_DIR);
-        resFileName->iBuffer.Append(KCDrmUtilityDmgrWrapperResFileName);
-        RConeResourceLoader loader(*iCoeEnv);
-        loader.OpenL(resFileName->iBuffer);
-        CleanupStack::PopAndDestroy( resFileName );
-        resFileName=NULL;
+        resFileName.Append( KDC_RESOURCE_FILES_DIR );
+        resFileName.Append( KCDrmUtilityDmgrWrapperResFileName );
+        RConeResourceLoader loader( *iCoeEnv );
+        loader.OpenL( resFileName );
 
         iProgressNoteDialog = new (ELeave) CAknProgressDialog(
-                reinterpret_cast<CEikDialog**> (&iProgressNoteDialog));
-        iProgressNoteDialog->PrepareLC(R_SILENT_PROGRESS_NOTE);
-        iProgressNoteDialog->SetCallback(this);
+            reinterpret_cast< CEikDialog** >( &iProgressNoteDialog ) );
+        iProgressNoteDialog->PrepareLC( R_SILENT_PROGRESS_NOTE );
+        iProgressNoteDialog->SetCallback( this );
         iProgressInfo = iProgressNoteDialog->GetProgressInfoL();
-        iProgressInfo->SetFinalValue(KProgressInfoFinalValue);
+        iProgressInfo->SetFinalValue( KProgressInfoFinalValue );
         iDialogDismissed = EFalse;
         iProgressNoteDialog->RunLD();
 
@@ -750,6 +673,7 @@
 
     }
 
+
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::RemoveProgressNoteL
 // ---------------------------------------------------------------------------
@@ -757,7 +681,7 @@
 void CDrmUtilityDmgrWrapper::RemoveProgressNoteL()
     {
 
-    if (iUseCoeEnv)
+    if ( iUseCoeEnv )
         {
         if (iProgressNoteDialog && !iDialogDismissed)
             {
@@ -765,22 +689,22 @@
             TRAPD(err, iProgressNoteDialog->ProcessFinishedL());
             if (err != KErrNone)
                 {
-                iProgressNoteDialog->SetCallback(NULL);
                 delete iProgressNoteDialog;
-                iDialogDismissed = ETrue;
                 }
             iProgressNoteDialog = NULL;
             }
         }
+
     }
 
+
 // ---------------------------------------------------------------------------
 // From class MAknProgressDialogCallback
 //
 // CDrmUtilityDmgrWrapper::DialogDismissedL
 // ---------------------------------------------------------------------------
 //
-void CDrmUtilityDmgrWrapper::DialogDismissedL(TInt aButtonId )
+void CDrmUtilityDmgrWrapper::DialogDismissedL( TInt /*aButtonId*/ )
     {
     iDialogDismissed = ETrue;
 
@@ -788,194 +712,14 @@
     iProgressNoteDialog = NULL;
     iProgressInfo = NULL;
 
-    if (IsActive() && aButtonId == EAknSoftkeyCancel)
-        {
-        if ((iState == EGetMeteringTrigger || iState == EGetPrUrlTrigger))
-            {
-            Cancel();
-            }
-        else
-            {
-            TRequestStatus* status(&iStatus);
-            User::RequestComplete(status, KErrCancel);
-            }
-        }
-    //For avoiding active object deadlock
-    iDlMgr->removeAll();
-
-    }
-
-// RoapObserver methods
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::PostResponseUrlL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::PostResponseUrlL(const TDesC8& aPostResponseUrl)
-    {
-    UpdateBufferL<HBufC8, TDesC8> (iTriggerUrl, aPostResponseUrl);
-
-    if (iUseCoeEnv && iProgressInfo)
-        {
-        iProgressInfo->IncrementAndDraw(KProgressInfoIncrementMedium);
-        }
-    }
-
-// Trivial RoapObserver methods
-TBool CDrmUtilityDmgrWrapper::ConnectionConfL()
-    {
-    return ETrue;
-    }
-
-TBool CDrmUtilityDmgrWrapper::ContactRiConfL()
-    {
-    return ETrue;
-    }
-
-TBool CDrmUtilityDmgrWrapper::TransIdConfL()
-    {
-    return EFalse;
-    }
-
-void CDrmUtilityDmgrWrapper::RightsObjectDetailsL(const RPointerArray<
-        CDRMRights>& /*aRightsList*/)
-    {
-    // do nothing
-    }
-
-void CDrmUtilityDmgrWrapper::ContentDownloadInfoL(TPath& /*aTempFolder*/,
-        TFileName& /*aContentName*/, TInt& aMaxSize)
-    {
-    aMaxSize = -1;
-    }
-
-void CDrmUtilityDmgrWrapper::ContentDetailsL(const TDesC& /*aPath*/,
-        const TDesC8& /*aType*/, const TUid& /*aAppUid*/)
-    {
-    }
-
-void CDrmUtilityDmgrWrapper::RoapProgressInfoL(const TInt /*aProgressInfo*/)
-    {
-    // do nothing
-    }
-
-void CDrmUtilityDmgrWrapper::ErrorUrlL(const TDesC8& aErrorUrl)
-    {
-    UpdateBufferL<HBufC8, TDesC8> (iErrorUrl, aErrorUrl);
-    }
-
-// CActive methods
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::DoCancel()
-    {
-    delete iRoapEng;
-    iRoapEng = NULL;
-    iConnection->Close();
-    if (iWait.IsStarted())
-        {
-        iWait.AsyncStop();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::RunL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::RunL()
-    {
-    TInt error(iStatus.Int());
-    
-    ClearIfNotRoapTemporaryError(error, iErrorUrl);
-    User::LeaveIfError(error);
-    switch (iState)
-        {
-        case EInit:
-            {
-            if (!iProgressNoteDialog)
-                {
-                ShowProgressNoteL();
-                }
-            DoConnectL(EGetMeteringTrigger);
-            }
-            break;
-        case EGetMeteringTrigger:
-            {
-            DoDownloadRoapTriggerL(ESaveMeteringTrigger);
-            }
-            break;
-        case ESaveMeteringTrigger:
-            {
-            DoSaveRoapTriggerL(EMeteringReportSubmit);
-            }
-            break;
-
-        case EMeteringReportSubmit:
-            {
-            DoHandleRoapTriggerL(EGetPrUrlTrigger);
-            }
-            break;
-        case EGetPrUrlTrigger:
-            {
-            delete iRoapEng;
-            iRoapEng = NULL;
-            DoDownloadRoapTriggerL(ESavePrUrlTrigger);
-            }
-            break;
-        case ESavePrUrlTrigger:
-            {
-            DoSaveRoapTriggerL(EPrRoapRequest);
-            }
-            break;
-        case EPrRoapRequest:
-            {
-            DoHandleRoapTriggerL(EComplete);
-            }
-            break;
-        case EComplete:
-            {
-            RemoveProgressNoteL();
-            delete iRoapEng;
-            iRoapEng = NULL;
-            iWait.AsyncStop();
-            }
-            break;
-
-        default:
-            User::Leave(KErrNotSupported);
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CDrmUtilityDmgrWrapper::RunError(TInt /* aError */)
-    {
-    delete iRoapEng;
-    iRoapEng = NULL;
-    iConnection->Close();
-    if (iWait.IsStarted())
+    if( iWait.IsStarted() )
         {
         iWait.AsyncStop();
         }
 
-    if (iUseCoeEnv)
-        {
-        if (iProgressNoteDialog && !iDialogDismissed)
-            {
-            iProgressNoteDialog->SetCallback(NULL);
-            delete iProgressNoteDialog;
-            iDialogDismissed = ETrue;
-            }
-        iProgressNoteDialog = NULL;
-        }
-    return KErrNone;
     }
 
+
 // ======== GLOBAL FUNCTIONS ========
 
 //------------------------------------------------------------------------------
@@ -986,7 +730,7 @@
     {
     CDrmUtilityDmgrWrapper* launcher = NULL;
     TRAPD( err, launcher = CDrmUtilityDmgrWrapper::NewL() );
-    if (err != KErrNone)
+    if( err != KErrNone )
         {
         return NULL;
         }
--- a/commondrm/drmutility/src/DrmUtilityGlobalNoteWrapper.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/src/DrmUtilityGlobalNoteWrapper.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -21,6 +21,7 @@
 #include <StringLoader.h>
 #include <AknGlobalConfirmationQuery.h>
 #include <AknGlobalListQuery.h>
+#include <AknGlobalMsgQuery.h>
 #include <badesca.h>
 #include <avkon.hrh> // EAknSoftkeyNo
 #include <drmutility.rsg>
@@ -89,6 +90,7 @@
 DRM::CDrmUtilityGlobalNoteWrapper::~CDrmUtilityGlobalNoteWrapper()
     {
     Cancel(); // Cancel active object
+    delete iGlobalMsgQuery;	
     }
 
 // -----------------------------------------------------------------------------
@@ -182,6 +184,32 @@
     }
 
 // -----------------------------------------------------------------------------
+// CDrmUtilityGlobalNoteWrapper::ShowNoteL
+// -----------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityGlobalNoteWrapper::ShowMessageQueryL(
+    TInt aMessageResourceId,
+    TInt aHeaderResourceId,
+    const TDesC& aString)
+    {
+    TBuf<KDRMNoteBufferMaxSize> messageBuffer(
+        iResourceReader->ReadResourceString( aMessageResourceId ) );
+
+    StringLoader::Format( iFinalMessageBuffer, messageBuffer, -1, aString );
+    
+    iHeaderBuffer = iResourceReader->ReadResourceString( aHeaderResourceId );
+    
+    CAknGlobalMsgQuery* iGlobalMsgQuery = CAknGlobalMsgQuery::NewL();
+    
+    iStatus = KRequestPending;
+    iGlobalMsgQuery->ShowMsgQueryL(iStatus, iFinalMessageBuffer, 
+          R_AVKON_SOFTKEYS_OK_EMPTY, iHeaderBuffer, KNullDesC);
+          
+    SetActive();
+    iWait.Start();
+    }
+
+// -----------------------------------------------------------------------------
 // CDrmUtilityGlobalNoteWrapper::ShowPreviewListQueryL
 // -----------------------------------------------------------------------------
 //
@@ -305,6 +333,10 @@
 void DRM::CDrmUtilityGlobalNoteWrapper::RunL()
     {
     iWait.AsyncStop();
+    if(iGlobalMsgQuery)
+    		{
+    		iGlobalMsgQuery->CancelMsgQuery();
+    		}
     }
 
 // -----------------------------------------------------------------------------
--- a/commondrm/drmutility/src/drmutilityconnection.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,562 +0,0 @@
-/*
- * 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:  Connection manager for DRM
- *
- */
-
-// INCLUDE FILES
-#include <es_sock.h>
-#include <cmconnectionmethod.h>
-#include <cmdestination.h>
-#include <cmconnectionmethoddef.h>
-#include <cmmanager.h>
-#include <extendedconnpref.h>
-#include <cmapplicationsettingsui.h> // CCmApplicationSettingsUi
-#include <es_enum.h>
-#include <cdbcols.h> // IAP, COMMDB_ID
-#include "drmutilityconnection.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "drmutilityconnectionTraces.h"
-#endif
-
-// ================= MEMBER FUNCTIONS =======================
-
-
-// -----------------------------------------------------------------------------
-// HasDefaultConnectionL
-// Finds default IAP id
-// @return Etrue: valid AP found
-//         EFalse: valid AP not found
-// @leave system wide error codes
-// -----------------------------------------------------------------------------
-//
-TBool DRM::CDrmUtilityConnection::HasDefaultConnectionL()
-    {
-    TBool hasDefault(EFalse);
-    TCmDefConnValue defConn;
-    RCmManager cmManager;
-    cmManager.OpenLC();
-    cmManager.ReadDefConnL(defConn);
-    if (defConn.iType == ECmDefConnConnectionMethod)
-        {
-        cmManager.GetConnectionMethodInfoIntL(defConn.iId,
-                CMManager::ECmIapId);
-        hasDefault = ETrue;
-        }
-    else if (defConn.iType == ECmDefConnDestination)
-        {
-        RCmDestination dest(cmManager.DestinationL(defConn.iId));
-        CleanupClosePushL(dest);
-
-        if (dest.ConnectionMethodCount() <= 0)
-            {
-            User::Leave(KErrNotFound);
-            }
-
-        RCmConnectionMethod cMeth(dest.ConnectionMethodL(0));
-        CleanupClosePushL(cMeth);
-
-        cMeth.GetIntAttributeL(CMManager::ECmIapId);
-        CleanupStack::PopAndDestroy(&cMeth);
-        CleanupStack::PopAndDestroy(&dest);
-        hasDefault = ETrue;
-        }
-    CleanupStack::PopAndDestroy(&cmManager);
-    return hasDefault;
-    }
-
-// -----------------------------------------------------------------------------
-// CDrmUtilityConnection::HasAccessPointsL
-// -----------------------------------------------------------------------------
-//
-TBool DRM::CDrmUtilityConnection::HasAccessPointsL()
-    {
-    TInt apCount(0);
-    RCmManager cmManager;
-    CleanupClosePushL(cmManager);
-    cmManager.OpenL();
-    RArray<TUint32> aps;
-    CleanupClosePushL(aps);
-    cmManager.ConnectionMethodL(aps, EFalse, EFalse, ETrue);
-    apCount = aps.Count();
-    CleanupStack::PopAndDestroy(2, &cmManager); //aps, cmManager
-    return apCount > 0;
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::NewLC
-// ---------------------------------------------------------------------------
-//
-DRM::CDrmUtilityConnection* DRM::CDrmUtilityConnection::NewLC(
-        const TBool aAllowQueries)
-    {
-    CDrmUtilityConnection* conn = new (ELeave) CDrmUtilityConnection(
-            aAllowQueries);
-    CleanupStack::PushL(conn);
-    conn->ConstructL();
-    return conn;
-    }
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::NewL
-// ---------------------------------------------------------------------------
-//
-DRM::CDrmUtilityConnection* DRM::CDrmUtilityConnection::NewL(
-        const TBool aAllowQueries)
-    {
-    CDrmUtilityConnection* conn = CDrmUtilityConnection::NewLC(aAllowQueries);
-    CleanupStack::Pop(conn);
-    return conn;
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::~CDrmUtilityConnection
-// ---------------------------------------------------------------------------
-//
-DRM::CDrmUtilityConnection::~CDrmUtilityConnection()
-    {
-    Cancel();
-    iConnection.Close();
-    iSocketServ.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::ConnectL
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::ConnectL(TRequestStatus* aStatus)
-    {
-    TInt error(KErrGeneral);
-    iStatus = KRequestPending;
-
-    if (iState == EInit)
-        {
-
-        // Make this part atomic by pushing closes on the stack.
-        error = iSocketServ.Connect();
-        if (!error)
-            {
-            error = iConnection.Open(iSocketServ);
-            }
-        }
-
-    if (iState == EConnected)
-        {
-        error=iConnection.Stop();
-        //error=iConnection.Stop(RConnection::EStopAuthoritative); //just in case still does not work
-        // if autoriative stop does not work then must do something following follow
-        // TNifProgressBuf iJalla;
-        // loop iConnection.ProgressNotification(iJalla,iStatus,KConnProgressDefault); SetActive
-        // at RunL if (iJalla.iStage < KConnectionDown)
-        // reactiveteWaitClose();
-        //iConnection.ProgressNotification(iJalla,iStatus,(KConnectionDown); (should loop till state KConnectionDown seen)
-        iConnection.Close();
-        iState = EInit;
-        error = KErrNone;
-        error = iConnection.Open(iSocketServ);
-        }
-
-    iParentStatus = aStatus;
-    *iParentStatus = KRequestPending;
-
-    CompleteSelf(error);
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::HasMoreConnectionAttempts
-// ---------------------------------------------------------------------------
-//
-TBool DRM::CDrmUtilityConnection::HasMoreConnectionAttempts()
-    {
-    TBool ret(EFalse);
-    switch (iType)
-        {
-        case EUsingPurposeInternet:
-            if (iAllowQueries)
-                {
-                ret = ETrue;
-                }
-            else
-                {
-                ret = EFalse;
-                }
-            break;
-        case EUsingQuery:
-        case EFail:
-            ret = EFalse;
-            break;
-        default:
-            ret = ETrue;
-        }
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::IsConnected
-// ---------------------------------------------------------------------------
-//
-TBool DRM::CDrmUtilityConnection::IsConnected(TUint32& aIap)
-    {
-    TBool ret(EFalse);
-    
-    if (iState == EConnected)
-        {
-        aIap = iIapId;
-        ret = ETrue;
-        }
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::Close
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::Close()
-    {
-    //LOGLIT( "CDrmUtilityConnection::Close" )
-
-    Cancel();
-    iConnection.Close();
-    iSocketServ.Close();
-    iState = EInit;
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection:CDrmUtilityConnection:
-// ---------------------------------------------------------------------------
-//
-DRM::CDrmUtilityConnection::CDrmUtilityConnection(const TBool aAllowQueries) :
-    CActive(CActive::EPriorityStandard), iState(EInit),
-            iType(EAttachExisting), iAllowQueries(aAllowQueries)
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::ConstructL
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::DoCancel
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::DoCancel()
-    {
-    iConnection.Close();
-    iSocketServ.Close();
-    CompleteParent(KErrCancel);
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::RunL
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::RunL()
-    {
-    TInt error(iStatus.Int());
-    if (iState == EInit)
-        {
-        User::LeaveIfError(error); // Handle errors in RunError().
-        if (iType == EAttachExisting)
-            {
-            AttachExistingConnectionL();
-            }
-        else
-            {
-            iState = EConnecting;
-            error = KErrNotFound;
-            CompleteSelf(error);
-            }
-        }
-    else if (iState == EConnecting)
-        {
-        if (!error)
-            {
-            iState = EConnected;
-            CompleteSelf(error);
-            }
-        else if (error != KErrNotFound)
-            {
-            User::LeaveIfError(error);
-            }
-        else
-            {
-            switch (iType)
-                {
-                case EAttachExisting:
-                    iType = EUsingDefault;
-                    ConnectUsingDefaultL();
-                    break;
-                case EUsingDefault:
-                    iType = EUsingPurposeOperator;
-                    ConnectUsingSnapPurposeL(CMManager::ESnapPurposeOperator);
-                    break;
-                case EUsingPurposeOperator:
-                    iType = EUsingPurposeInternet;
-                    ConnectUsingSnapPurposeL(CMManager::ESnapPurposeInternet);
-                    break;
-                case EUsingPurposeInternet:
-                    iType = EUsingQuery;
-                    if (iAllowQueries)
-                        {
-                        ConnectUsingQueryL();
-                        break;
-                        }
-                case EUsingQuery:
-                    iType = EFail;
-                case EFail:
-                default:
-                    User::Leave(KErrCouldNotConnect);
-                    break;
-                }
-            }
-        }
-    else if (iState == EConnected)
-        {
-        UpdateIapIdL();
-        CompleteParent(iStatus.Int());
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::RunError
-// ---------------------------------------------------------------------------
-//
-TInt DRM::CDrmUtilityConnection::RunError(TInt aError)
-    {
-    //LOGLIT( "CDrmUtilityConnection::RunError" )
-
-    iConnection.Close();
-    iSocketServ.Close();
-
-    CompleteParent(aError);
-    iState = EInit;
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::AttachExistingConnectionL
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::AttachExistingConnectionL()
-    {
-    TConnectionInfoBuf connInfo;
-    TUint count(0);
-    TInt error(KErrNotFound);
-    iStatus = KRequestPending;
-
-    User::LeaveIfError(iConnection.EnumerateConnections(count));
-    if (count)
-        {
-        // Select AP with largest index. (Latest created)
-        User::LeaveIfError(iConnection.GetConnectionInfo(count, connInfo));
-        User::LeaveIfError(iConnection.Attach(connInfo,
-                RConnection::EAttachTypeNormal));
-        iState = EConnected;
-        error = KErrNone;
-        }
-    else
-        {
-        iState = EConnecting;
-        }
-    CompleteSelf(error);
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::ConnectUsingDefaultL
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::ConnectUsingDefaultL()
-    {
-    // Create overrides
-    TConnPrefList prefList;
-    TExtendedConnPref prefs;
-
-    if (!iAllowQueries)
-        {
-        prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnSilent);
-        }
-    else
-        {
-        prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnDisableQueries);
-        }
-        
-    //Fetch default connection
-    TBool hasDefault(ETrue);
-    TCmDefConnValue defConn;
-    RCmManager cmManager;
-    cmManager.OpenLC();
-    cmManager.ReadDefConnL(defConn);
-    if (defConn.iType == ECmDefConnConnectionMethod)
-        {
-        prefs.SetIapId(defConn.iId);
-        }
-    else if (defConn.iType == ECmDefConnDestination)
-        {
-        prefs.SetSnapId(defConn.iId);
-        }
-    else
-        {
-        hasDefault = EFalse;
-        }
-    // End of fetch default connection
-    CleanupStack::PopAndDestroy(&cmManager);
-    if (hasDefault)
-        {
-        prefList.AppendL(&prefs);
-
-        // Start an Outgoing Connection with overrides
-        iState = EConnecting;
-        iConnection.Start(prefList, iStatus);
-        SetActive();
-        }
-    else
-        {
-        // No default found --> next iteration needed
-        CompleteSelf(KErrNotFound);
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::ConnectUsingSnapOperatorL
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::ConnectUsingSnapPurposeL(
-        const TUint32 aPurpose)
-    {
-    // Create overrides
-    TConnPrefList prefList;
-    TExtendedConnPref prefs;
-    prefs.SetSnapPurpose(static_cast<CMManager::TSnapPurpose> (aPurpose));
-    if (aPurpose != CMManager::ESnapPurposeUnknown)
-        {
-        if (!iAllowQueries)
-            {
-            prefs.SetNoteBehaviour(
-                    TExtendedConnPref::ENoteBehaviourConnSilent);
-            }
-        else
-            {
-            prefs.SetNoteBehaviour(
-                    TExtendedConnPref::ENoteBehaviourConnDisableQueries);
-            }
-        }
-    else
-        {
-        prefs.SetConnSelectionDialog(ETrue);
-        prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourDefault);
-        prefs.SetForcedRoaming(EFalse);
-        prefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerUnknown);
-        }
-    prefList.AppendL(&prefs);
-    iState = EConnecting;
-
-    // Start an Outgoing Connection with overrides
-    iConnection.Start(prefList, iStatus);
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::ConnectUsingQueryL
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::ConnectUsingQueryL()
-    {
-    // Create overrides
-    TConnPrefList prefList;
-    TExtendedConnPref prefs;
-
-    CCmApplicationSettingsUi* ui(CCmApplicationSettingsUi::NewLC());
-    TCmSettingSelection selectedConn;
-
-    TBool selected(ui->RunApplicationSettingsL(selectedConn));
-    CleanupStack::PopAndDestroy(ui);
-    ui=NULL;
-    if (selected)
-        {
-        if (selectedConn.iResult == CMManager::EConnectionMethod)
-            {
-            prefs.SetIapId(selectedConn.iId);
-            }
-        else if (selectedConn.iResult == CMManager::EDestination)
-            {
-            prefs.SetSnapId(selectedConn.iId);
-            }
-        else if (selectedConn.iResult != CMManager::EDefaultConnection)
-            {
-            selected=EFalse;
-            }
-        }
-    if (selected)
-        {
-        if (selectedConn.iResult != CMManager::EDefaultConnection)
-            {
-            prefList.AppendL(&prefs);
-            // For ensuring possibly stale connections get disconnected first;
-            iConnection.Close();
-            iConnection.Open(iSocketServ);
-            
-            iConnection.Start(prefList, iStatus);
-            }
-        else
-            {
-            iConnection.Start(iStatus);
-            }
-        SetActive();
-        }
-    else
-        {
-        CompleteSelf(KErrCancel);
-        }
-    }
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::CompleteSelf
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::CompleteSelf(TInt aError)
-    {
-    TRequestStatus* status(&iStatus);
-    User::RequestComplete(status, aError);
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::CompleteParent
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::CompleteParent(TInt aError)
-    {
-    if (iParentStatus)
-        {
-        User::RequestComplete(iParentStatus, aError);
-        iParentStatus = NULL;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// DRM::CDrmUtilityConnection::UpdateIapId
-// ---------------------------------------------------------------------------
-//
-void DRM::CDrmUtilityConnection::UpdateIapIdL()
-    {
-    TBuf<16> query;
-
-    query.Format(_L("%s\\%s"), IAP, COMMDB_ID);
-    User::LeaveIfError(iConnection.GetIntSetting(query, iIapId));
-    
-    }
--- a/commondrm/drmutility/src/drmutilityui.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/src/drmutilityui.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -32,6 +32,7 @@
 #include <AknGlobalNote.h>
 #include <AknQueryDialog.h>
 #include <aknlistquerydialog.h>
+#include <aknmessagequerydialog.h> 
 
 // secondary display support
 #include <AknMediatorFacade.h>
@@ -58,9 +59,6 @@
 #include "DrmUtilityGlobalNoteWrapper.h"
 #include "DrmUtilityInfoNoteWrapper.h"
 
-#include "drmuidialogids.h"
-#include "drmuidialogs.h"
-
 // CONSTANTS
 #ifndef RD_MULTIPLE_DRIVE
 _LIT( KDriveZ, "z:" );
@@ -77,7 +75,6 @@
 const TInt KDRMUtilityMaxTimeFormatLen( 30 );
 const TInt KDRMUtilityMaxTimeLen( 30 );
 const TInt KDRMUtilityNoteMaxSize ( 256 );
-const TInt KNoValue = -1;
 
 #ifdef _DEBUG
 // debug panic
@@ -235,6 +232,8 @@
     iNoteList.Close();
 
     FeatureManager::UnInitializeLib();
+    delete iNoteWrapper;	
+    	
     }
 
 // -----------------------------------------------------------------------------
@@ -317,12 +316,38 @@
     TInt aTextResourceId,
     TInt aValue )
     {
-    TInt resultCode( ECancelled );
+    TInt buttonCode( 0 );
+
+    if ( iCoeEnv )
+        {
+        TPtr bufPtr( NULL, 0 );
+
+        HBufC* stringholder( StringLoader::LoadLC( aTextResourceId,
+                                                   aValue,
+                                                   iCoeEnv ) );
+        CAknQueryDialog* dlg(
+                        CAknQueryDialog::NewL( CAknQueryDialog::ENoTone ) );
+
+        bufPtr.Set( stringholder->Des() );
+        AknTextUtils::LanguageSpecificNumberConversion( bufPtr );
+        PrepareSecondaryDisplayL( *dlg, aTextResourceId, KNullDesC, aValue );
 
-    CDrmUIDialogs* drmUiDialog( CDrmUIDialogs::NewLC() ); 
-    resultCode = drmUiDialog->ShowNoteL( aTextResourceId, KNullDesC, aValue );
-    CleanupStack::PopAndDestroy( drmUiDialog );
-    return resultCode;
+        buttonCode = dlg->ExecuteLD( R_DRMUTILITY_CONFIRMATION_QUERY,
+                                     *stringholder );
+
+        CancelSecondaryDisplayL( aTextResourceId );
+        CleanupStack::PopAndDestroy( stringholder );
+        }
+    else
+        {
+        DRM::CDrmUtilityGlobalNoteWrapper* noteWrapper(
+            DRM::CDrmUtilityGlobalNoteWrapper::NewLC( iUtilityStringResourceReader ) );
+
+        buttonCode = noteWrapper->ShowNoteL( aTextResourceId, aValue );
+
+        CleanupStack::PopAndDestroy( noteWrapper );
+        }
+    return buttonCode;
     }
 
 // -----------------------------------------------------------------------------
@@ -333,12 +358,39 @@
     TInt aTextResourceId,
     const TDesC& aString )
     {
-    TInt resultCode( ECancelled );
+    TInt buttonCode( 0 );
+
+    if ( iCoeEnv )
+        {
+        TPtr bufPtr( NULL, 0 );
+
+        HBufC* stringholder( StringLoader::LoadLC( aTextResourceId,
+                                                   aString,
+                                                   iCoeEnv ) );
+        CAknQueryDialog* dlg(
+            CAknQueryDialog::NewL( CAknQueryDialog::ENoTone ) );
+
+        bufPtr.Set( stringholder->Des() );
+        AknTextUtils::LanguageSpecificNumberConversion( bufPtr );
+        PrepareSecondaryDisplayL( *dlg, aTextResourceId, aString, -1 );
 
-    CDrmUIDialogs* drmUiDialog( CDrmUIDialogs::NewLC() );
-    resultCode = drmUiDialog->ShowNoteL( aTextResourceId, aString, KNoValue );
-    CleanupStack::PopAndDestroy( drmUiDialog );
-    return resultCode;
+        buttonCode = dlg->ExecuteLD( R_DRMUTILITY_CONFIRMATION_QUERY,
+                                     *stringholder );
+
+        CancelSecondaryDisplayL( aTextResourceId );
+        CleanupStack::PopAndDestroy( stringholder );
+        }
+    else
+        {
+        DRM::CDrmUtilityGlobalNoteWrapper* noteWrapper(
+            DRM::CDrmUtilityGlobalNoteWrapper::NewLC( iUtilityStringResourceReader ) );
+
+        buttonCode = noteWrapper->ShowNoteL( aTextResourceId, aString );
+
+        CleanupStack::PopAndDestroy( noteWrapper );
+        }
+
+    return buttonCode;
     }
 
 // -----------------------------------------------------------------------------
@@ -436,7 +488,7 @@
     __ASSERT_DEBUG( aConstraint, User::Panic( KDRMUtilityDebugPanicMessage,
                                               KDRMUtilityDebugPanicCode ) );
 
-    TInt buttonCode( EOk );
+    TInt buttonCode( 1 );
 
     if ( aConstraint->iActiveConstraints & EConstraintEndTime )
         {
@@ -457,14 +509,13 @@
             }
 
         endTime.FormatL( endDate, dateFormat );
-
-        // Qt dialog not implmented yet.
-        buttonCode = DisplayQueryL( EQueryLicenceValidUntil, endDate );
+        buttonCode = DisplayQueryL(R_DRM_QUERY_SET_AUTOMATED, endDate );
         }
     else if ( aConstraint->iActiveConstraints & EConstraintInterval )
         {
-        // Qt dialog not implemented yet.
-        buttonCode = DisplayQueryL( EQueryValidForLimitedTime, KNoValue );
+        buttonCode = DisplayQueryWithIdL( R_DRM_QUERY_SET_AUTO_INTERVAL,
+                                          R_DRMUTILITY_CONFIRMATION_QUERY );
+
         }
     return buttonCode;
     }
@@ -508,8 +559,7 @@
     startDateBuf.Append( startTimeBuf );
 
     // display note with start date
-    // Qt dialog not implemented yet
-    DisplayNoteL( EConfUnableToUse, startDateBuf );
+    DisplayNoteL( R_DRMUTILITY_USAGE_RIGHTS_IN_FUTURE, startDateBuf );
     }
 
 // -----------------------------------------------------------------------------
@@ -518,9 +568,20 @@
 //
 EXPORT_C void DRM::CDrmUtilityUI::DisplayNoteL( TInt aTextResourceId )
     {
-    CDrmUIDialogs* drmUiDialog( CDrmUIDialogs::NewLC() );
-    drmUiDialog->ShowNoteL( aTextResourceId, KNullDesC, KNoValue );
-    CleanupStack::PopAndDestroy( drmUiDialog );
+    if ( iCoeEnv )
+        {
+        HBufC* msgText( StringLoader::LoadLC( aTextResourceId, iCoeEnv ) );
+        DisplayNoteL( *msgText, aTextResourceId );
+        CleanupStack::PopAndDestroy( msgText );
+        }
+
+    else
+        {
+        TBuf<KDRMUtilityNoteMaxSize> buffer(
+            iUtilityStringResourceReader->ReadResourceString( aTextResourceId ) );
+
+        DisplayNoteL( buffer, aTextResourceId );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -531,9 +592,26 @@
     TInt aTextResourceId,
     const TDesC& aString )
     {
-    CDrmUIDialogs* drmUiDialog( CDrmUIDialogs::NewLC() );
-    drmUiDialog->ShowNoteL( aTextResourceId, aString, KNoValue );
-    CleanupStack::PopAndDestroy( drmUiDialog );
+    if ( iCoeEnv )
+        {
+        HBufC* msgText( StringLoader::LoadLC( aTextResourceId,
+                                              aString,
+                                              iCoeEnv ) );
+        DisplayNoteL( *msgText, aTextResourceId );
+        CleanupStack::PopAndDestroy( msgText );
+        }
+    else
+        {
+        TBuf<KDRMUtilityNoteMaxSize + KMaxFileName> destBuffer;
+
+
+        TBuf<KDRMUtilityNoteMaxSize> buffer(
+            iUtilityStringResourceReader->ReadResourceString( aTextResourceId ) );
+
+
+        StringLoader::Format( destBuffer, buffer, -1, aString );
+        DisplayNoteL( destBuffer, aTextResourceId, aString, -1 );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -544,9 +622,26 @@
     TInt aTextResourceId,
     TInt aValue )
     {
-    CDrmUIDialogs* drmUiDialog( CDrmUIDialogs::NewLC() );
-    drmUiDialog->ShowNoteL( aTextResourceId, KNullDesC, aValue );
-    CleanupStack::PopAndDestroy( drmUiDialog );
+    if ( iCoeEnv )
+        {
+        HBufC* msgText( StringLoader::LoadLC( aTextResourceId,
+                                              aValue,
+                                              iCoeEnv ) );
+
+        DisplayNoteL( *msgText, aTextResourceId, KNullDesC, aValue );
+        CleanupStack::PopAndDestroy( msgText );
+        }
+    else
+        {
+        TBuf<KDRMUtilityNoteMaxSize + KMaxFileName> destBuffer;
+
+        TBuf<KDRMUtilityNoteMaxSize> buffer(
+            iUtilityStringResourceReader->ReadResourceString( aTextResourceId ) );
+
+
+        StringLoader::Format( destBuffer, buffer, -1, aValue );
+        DisplayNoteL( destBuffer, aTextResourceId, KNullDesC, aValue );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -677,6 +772,39 @@
 
 #endif  // RD_DRM_PREVIEW_RIGHT_FOR_AUDIO
 
+EXPORT_C TInt DRM::CDrmUtilityUI::DisplayMessageQueryL( TInt aMessage, TInt aHeader, const TDesC& aString)
+    {
+    TInt buttonCode = 0;
+		if ( iCoeEnv )
+	    	{
+		    CAknMessageQueryDialog* messageQuery = new (ELeave) CAknMessageQueryDialog();
+		    messageQuery->PrepareLC(R_DRMUTILITY_SYNC_DIALOG);
+		    		    
+		    HBufC* headerStringholder ( StringLoader::LoadLC( aHeader, iCoeEnv ) );
+        
+		    messageQuery->QueryHeading()->SetTextL(*headerStringholder);
+ 				CleanupStack::PopAndDestroy(); // headerStringholder
+ 				 				
+ 				HBufC* messageStringholder ( StringLoader::LoadLC( aMessage, aString, iCoeEnv ) );
+ 				
+ 				messageQuery->SetMessageTextL(*messageStringholder);
+ 				CleanupStack::PopAndDestroy(); // messageStringholder
+		    
+		    buttonCode =  messageQuery->RunLD();
+		    }
+		else
+		  	{
+		  	if(!iNoteWrapper)
+		  			{
+		    		iNoteWrapper = DRM::CDrmUtilityGlobalNoteWrapper::NewL( iUtilityStringResourceReader );
+        		}
+        		
+        iNoteWrapper->ShowMessageQueryL(aMessage, aHeader, aString);
+				}
+		return buttonCode;
+    }
+
+
 // -----------------------------------------------------------------------------
 // CDrmUtilityUI::CreateNoteForResourceL
 // -----------------------------------------------------------------------------
--- a/commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -31,12 +31,18 @@
 #include <avkon.hrh>
 
 // access point utils
-
+#include <centralrepository.h>
 #include <cdblen.h>
 #include <cmconnectionmethod.h>
 #include <cmdestination.h>
 #include <cmconnectionmethoddef.h>
 #include <cmmanager.h>
+#ifdef __SERIES60_NATIVE_BROWSER
+#include <browseruisdkcrkeys.h>
+#endif
+
+#include <featdiscovery.h>
+#include <aknmessagequerydialog.h>
 
 #include    <wmdrmagent.h> // for WMDRM file details view
 #include    <drmutilitytypes.h>
@@ -55,12 +61,19 @@
 #include    "drmutilitywmdrmutilities.h"
 
 #include    "wmdrmdlawrapper.h"
-#include    "drmuidialogids.h"
+
+using namespace DRM;
 
 // CONSTANTS
 const TInt KMaxUrlLength( 1024 );
 const TInt KMaxUrlSanityLength( 102400 );
 
+#ifndef __SERIES60_NATIVE_BROWSER
+const TUid KCRUidBrowser = {0x10008D39};
+const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
+const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
+#endif
+
 #ifdef _DEBUG
 // debug panic
 _LIT( KWmDrmWrapperDebugPanicMessage, "WmDrmWrapperDebugPanic" );
@@ -77,7 +90,8 @@
 //
 DRM::CDrmUtilityWMDrmWrapper::CDrmUtilityWMDrmWrapper() :
     iCoeEnv( NULL ),
-    iDrmUtilityUi( NULL )
+    iDrmUtilityUi( NULL ),
+    iWmDrmDlaSupportOn ( ETrue )
     {
     }
 
@@ -89,6 +103,8 @@
 void DRM::CDrmUtilityWMDrmWrapper::ConstructL()
     {
     User::LeaveIfError( iFs.Connect() );
+    TUid u = TUid::Uid( KFeatureIdFfWmdrmDlaSupport );
+    TRAPD(err, iWmDrmDlaSupportOn = CFeatureDiscovery::IsFeatureSupportedL( u ));
     }
 
 // -----------------------------------------------------------------------------
@@ -260,7 +276,7 @@
 
     if ( !value )
         {
-        ShowNoRightsNoteL( aContent, reason, aOperationId, aObserver );
+        ShowNoRightsNoteL( aContent, reason );
         User::LeaveIfError( aContent.GetAttribute( ContentAccess::ECanPlay, value ) );
         if ( value )
             {
@@ -484,7 +500,7 @@
         {
         case DRM::EUHCheckRightsActionDefault:
             {
-            ShowNoRightsNoteL( aContent, aReason, aOperationId, aObserver );
+            ShowNoRightsNoteL( aContent, aReason );
             }
             break;
 
@@ -542,15 +558,12 @@
 //
 void DRM::CDrmUtilityWMDrmWrapper::ShowNoRightsNoteL(
     ContentAccess::CData& aContent,
-    TUint32 /*aReason*/,
-    TInt aOperationId,
-    DRM::MDrmHandleErrorObserver* aObserver )
+    TUint32 /*aReason*/ )
     {
-    TInt value;
     TRAPD( err, LoadDlaWrapperL() );
     if ( !err )
         {
-        TInt ret( EOk );
+        TInt ret( EAknSoftkeyYes );
         RFile file;
         GetRFileFromCDataL( aContent, file );
         CleanupClosePushL( file );
@@ -564,21 +577,18 @@
                 }
             TFileName fileName;
             User::LeaveIfError( aContent.GetStringAttribute( DRM::EDrmFileName, fileName ) );
-            // Qt dialog not implemented yet
-            ret = iDrmUtilityUi->DisplayQueryL( EQueryFileWithNoRightsObj, fileName );
+            if(iWmDrmDlaSupportOn)
+                {
+                ret = iDrmUtilityUi->DisplayQueryL( R_DRM_QUERY_EXPIRED_OR_NO_RO, fileName );
+                }
+            else
+                {
+                ret = iDrmUtilityUi->DisplayMessageQueryL( R_DRMUTILITY_SYNC_WITH_PC, R_DRMUTILITY_HEAD_NO_LICENSE, fileName);
+                }
             }
-
-        if ( !err && ret == EOk )
+        if ( !err && ( ret == EAknSoftkeyYes || ret == EAknSoftkeyOk ) && iWmDrmDlaSupportOn)
             {
             TRAP_IGNORE( DlaLicenseAcquisitionL( file ) );
-            
-            // Ask the rights from CAF, same call for both ECanPlay and ECanView
-            aContent.GetAttribute( ContentAccess::ECanPlay, value );
-            // call given HandleErrorObserver
-            if( value > 0 )
-                {
-                aObserver->RightsAvailable( aOperationId, KErrNone );              
-                }
             }
         CleanupStack::PopAndDestroy( &file );
         }
@@ -588,7 +598,7 @@
             {
             iDrmUtilityUi = DRM::CDrmUtilityUI::NewL( iCoeEnv );
             }
-        iDrmUtilityUi->DisplayNoteL( EConfLicenceExpired );
+        iDrmUtilityUi->DisplayNoteL( R_DRM_INFO_EXPIRED_OR_NO_RO );
         }
     }
 
@@ -767,18 +777,31 @@
 void DRM::CDrmUtilityWMDrmWrapper::DlaLicenseAcquisitionL(
     RFile& aFile )
     {
-    TInt iapId( 0 );
-    HBufC* contentUrl( NULL );
-    HBufC* htmlData( NULL );
-    LoadDlaWrapperL();
-    TRAPD( err, iapId = DefaultAccessPointL() );
-    if ( !err )
+    if( iWmDrmDlaSupportOn )
         {
-        iDlaWrapper->SetIapId( iapId );
+        TInt iapId( 0 );
+        HBufC* contentUrl( NULL );
+        HBufC* htmlData( NULL );
+        LoadDlaWrapperL();
+        TRAPD( err, iapId = DefaultAccessPointL() );
+        if ( !err )
+            {
+            iDlaWrapper->SetIapId( iapId );
+            }
+        iDlaWrapper->AcquireLicenseL( aFile, contentUrl, htmlData  );
+        delete contentUrl;
+        delete htmlData;
         }
-    iDlaWrapper->AcquireLicenseL( aFile, contentUrl, htmlData  );
-    delete contentUrl;
-    delete htmlData;
+    else
+        {
+        if ( !iDrmUtilityUi )
+            {
+            iDrmUtilityUi = DRM::CDrmUtilityUI::NewL( iCoeEnv );
+            }
+        TFileName aFileName;
+        TInt err = aFile.Name(aFileName);
+        iDrmUtilityUi->DisplayNoteL( R_DRMUTILITY_SYNC_WITH_PC , aFileName);
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -801,38 +824,56 @@
 //
 TInt DRM::CDrmUtilityWMDrmWrapper::DefaultAccessPointL()
     {
-    //Fetch default connection
+    const TInt KDestinationSelectionMode( 2 );
+    CRepository* repository( NULL );
+    TInt ap( 0 );
+    TInt alwaysAsk( 0 );
     TUint32 iapd32( 0 );
-    TCmDefConnValue defConn;
-    RCmManager cmManager;
-    cmManager.OpenLC();
-    cmManager.ReadDefConnL(defConn);
-    if (defConn.iType == ECmDefConnConnectionMethod)
-        {
-        iapd32=defConn.iId;
-        }
-    else if (defConn.iType == ECmDefConnDestination)
+    TInt defaultSnap( 0 );
+
+    repository = CRepository::NewL( KCRUidBrowser );
+    CleanupStack::PushL( repository );
+    repository->Get( KBrowserDefaultAccessPoint, ap );
+    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
+    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
+    CleanupStack::PopAndDestroy( repository );
+
+    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
         {
-        RCmDestination dest( cmManager.DestinationL( defConn.iId ) );
-        CleanupClosePushL( dest );
-
-        if ( dest.ConnectionMethodCount() <= 0 )
-            {
-            User::Leave( KErrNotFound );
-            }
-
-        RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-        CleanupClosePushL( cMeth );
-
-        iapd32 = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-        CleanupStack::PopAndDestroy( 2, &dest ); //cMeth, dest
+        alwaysAsk = ETrue;
         }
     else
         {
+        RCmManager cmManager;
+        cmManager.OpenLC();
+        if ( !alwaysAsk )
+            {
+            iapd32 =
+                cmManager.GetConnectionMethodInfoIntL( ap,
+                                                       CMManager::ECmIapId );
+            }
+        else if ( alwaysAsk == KDestinationSelectionMode )
+            {
+            RCmDestination dest( cmManager.DestinationL( defaultSnap ) );
+            CleanupClosePushL( dest );
+
+            if ( dest.ConnectionMethodCount() <= 0 )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
+            CleanupClosePushL( cMeth );
+
+            iapd32 = cMeth.GetIntAttributeL( CMManager::ECmIapId );
+            CleanupStack::PopAndDestroy( 2, &dest ); //cMeth, dest
+            }
+        CleanupStack::PopAndDestroy( &cmManager );
+        }
+    if ( alwaysAsk && alwaysAsk != KDestinationSelectionMode )
+        {
         User::Leave( KErrAccessDenied );
         }
-    CleanupStack::PopAndDestroy(&cmManager);
-    // End of fetch default connection
     return iapd32;
     }
 
--- a/commondrm/drmutility/src/qdrmutilitydmgreventhandler.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-#include <download.h>
-
-#include "qdrmutilitydmgreventhandler.h"
-#include "drmutilitydmgrwrapper.h"
-
-QDrmUtilityDmgrEventHandler::QDrmUtilityDmgrEventHandler( CDrmUtilityDmgrWrapper& aDrmUtilityDmgrWrapper, WRT::Download& aDownload )
-	: iDownload(aDownload),
-	  iDrmUtilityDmgrWrapper(aDrmUtilityDmgrWrapper)
-	{
-	QT_TRAP_THROWING(
-					QObject::connect(	&iDownload, 
-										SIGNAL(downloadEvent(DownloadEvent*)), 
-										this, SLOT(HandleDownloadEventL(DownloadEvent*))
-									)
-					);
-	}
-
-void QDrmUtilityDmgrEventHandler::HandleDownloadEventL( WRT::DownloadEvent* aEvent )
-	{
-	iDrmUtilityDmgrWrapper.HandleDownloadEventL(aEvent);
-	}
--- a/commondrm/drmutility/traces/OstTraceDefinitions.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-#ifndef __OSTTRACEDEFINITIONS_H__
-#define __OSTTRACEDEFINITIONS_H__
-// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
-// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
-// #define OST_TRACE_COMPILER_IN_USE
-#include <opensystemtrace.h>
-#endif
--- a/commondrm/group/bld.inf	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/group/bld.inf	Wed Sep 01 12:21:16 2010 +0100
@@ -39,20 +39,24 @@
 ../rom/DRMEncryptorResources.iby        LANGUAGE_MW_LAYER_IBY_EXPORT_PATH( drmencryptorresources.iby )
 ../rom/DRMRightsManagerUI.iby           CORE_MW_LAYER_IBY_EXPORT_PATH( drmrightsmanagerui.iby )
 ../rom/DRMRightsManagerUIResources.iby  LANGUAGE_MW_LAYER_IBY_EXPORT_PATH( drmrightsmanageruiresources.iby )
+../rom/drmsettingsplugin.iby            CORE_MW_LAYER_IBY_EXPORT_PATH( drmsettingsplugin.iby )
+../rom/drmsettingspluginresources.iby   LANGUAGE_MW_LAYER_IBY_EXPORT_PATH( drmsettingspluginresources.iby )
 ../rom/drmutility.iby                   CORE_MW_LAYER_IBY_EXPORT_PATH( drmutility.iby )
 ../rom/drmutility_resources.iby         LANGUAGE_MW_LAYER_IBY_EXPORT_PATH( drmutility_resources.iby )
 ../rom/drmserviceapiwrapper.iby         CORE_MW_LAYER_IBY_EXPORT_PATH( drmserviceapiwrapper.iby )
 ../rom/drmrightsstoringlocation.iby     CORE_MW_LAYER_IBY_EXPORT_PATH( drmrightsstoringlocation.iby )
-../rom/drmbrowserlauncher.iby     	CORE_MW_LAYER_IBY_EXPORT_PATH( drmbrowserlauncher.iby )
 
 PRJ_MMPFILES
 
+// DRMEncryptor
+../drmencryptor/group/DRMEncryptor.mmp
+
+// DRMSettingsPlugin
+../drmsettingsplugin/group/drmsettingsplugin.mmp
+
 // DRMRightsManagerUi
 ../drmrightsmanagerui/group/DRMRightsManager.mmp
 
-// drmui
-#include "../drmui/group/bld.inf"
-
 // drmutility
 #include "../drmutility/group/bld.inf"
 
@@ -73,6 +77,19 @@
 PRJ_EXTENSIONS
 
 START EXTENSION s60/mifconv
+OPTION TARGETFILE drmencryptor.mif
+OPTION HEADERFILE drmencryptor.mbg
+OPTION SOURCES -c8,8 qgn_menu_DRMEncryptor_cxt -c8 icon
+OPTION SOURCEDIR ../drmencryptor/group
+END
+
+START EXTENSION s60/mifconv
+OPTION TARGETFILE drmencryptor_aif.mif
+OPTION SOURCES -c8,8 qgn_menu_drmencryptor -c8 icon
+OPTION SOURCEDIR ../drmencryptor/group
+END
+
+START EXTENSION s60/mifconv
 OPTION TARGETFILE drmrightsmanager.mif
 OPTION HEADERFILE drmrightsmanager.mbg
 OPTION SOURCES \
--- a/commondrm/rom/DRMEncryptor.iby	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/rom/DRMEncryptor.iby	Wed Sep 01 12:21:16 2010 +0100
@@ -23,7 +23,15 @@
 #ifndef _IMAGE_TYPE_PRD
 
 S60_APP_EXE(DRMENCRYPTOR)
-data = ZPRIVATE\10003a3f\import\APPS\drmencryptor_reg.rsc   PRIVATE\10003a3f\import\apps\drmencryptor_reg.rsc
+
+
+SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,DRMEncryptor)
+
+
+S60_APP_AIF_ICONS(DRMENCRYPTOR)
+S60_APP_AIF_RSC(DRMENCRYPTOR)
+
+data=DATAZ_\APP_RESOURCE_DIR\drmencryptor.rsc         APP_RESOURCE_DIR\drmencryptor.rsc
 
 #endif //_IMAGE_TYPE_PRD
 #endif
--- a/commondrm/rom/DRMRightsManagerUI.iby	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/rom/DRMRightsManagerUI.iby	Wed Sep 01 12:21:16 2010 +0100
@@ -21,7 +21,7 @@
 
 // DRM Rights Manager Application
 
-#ifdef __DRM_FULL
+#if ( (defined __DRM_FULL) || (defined __WINDOWS_MEDIA_DRM) )
 
 S60_APP_EXE(DRMRightsManager)
 S60_APP_BITMAP(DRMRightsManager)
@@ -30,7 +30,7 @@
 data=\epoc32\data\z\private\10003a3f\apps\DRMRightsManager_reg.rsc	\private\10003a3f\import\apps\DRMRightsManager_reg.rsc
 data=ZSYSTEM\install\DRMRightsManager_stub.SIS             \system\install\DRMRightsManager_stub.SIS
 
-#endif	// __DRM_FULL
+#endif	// __DRM_FULL || __WINDOWS_MEDIA_DRM
 
 
 #endif	// __DRMRIGHTSMANAGERUI_IBY__
--- a/commondrm/rom/DRMRightsManagerUIResources.iby	Tue Aug 31 15:29:38 2010 +0300
+++ b/commondrm/rom/DRMRightsManagerUIResources.iby	Wed Sep 01 12:21:16 2010 +0100
@@ -20,11 +20,11 @@
 #define __DRMRIGHTSMANAGERUIRESOURCES_IBY__
 
 
-#ifdef __DRM_FULL
+#if ( (defined __DRM_FULL) || (defined __WINDOWS_MEDIA_DRM) )
 
 S60_APP_RESOURCE(DRMRightsManager)
 
-#endif	// __DRM_FULL
+#endif	// __DRM_FULL || __WINDOWS_MEDIA_DRM
 
 
 #endif	// __DRMRIGHTSMANAGERUIRESOURCES_IBY__
--- a/commondrm/rom/drmbrowserlauncher.iby	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* 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"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Image description file for project Drmbrowserlauncher
-*
-*/
-
-
-#ifndef DRMBROWSERLAUNCHER_IBY
-#define DRMBROWSERLAUNCHER_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-file=ABI_DIR\BUILD_DIR\drmbrowserlauncher.dll         SHARED_LIB_DIR\drmbrowserlauncher.dll
-
-#endif // DRMBROWSERLAUNCHER_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/rom/drmsettingsplugin.iby	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2006-2008 Nokia Corporation and/or 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:  DRMSettingsPlugin ROM resources
+*
+*/
+
+#ifndef DRMSETTINGSPLUGIN_IBY
+#define DRMSETTINGSPLUGIN_IBY
+
+ECOM_PLUGIN( drmsettingsplugin.dll, 102750CC.rsc )
+//data=DATAZ_\BITMAP_DIR\drmsettingsplugin.mif BITMAP_DIR\drmsettingsplugin.mif
+
+data=ZSYSTEM\install\commondrm_stub.SIS             \system\install\commondrm_stub.SIS
+#endif // DRMSETTINGSPLUGIN_IBY
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/rom/drmsettingspluginresources.iby	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,24 @@
+/*
+* 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:  DRMSettingsPlugin ROM resources.
+*
+*/
+
+#ifndef DRMSETTINGSPLUGINRESOURCES_IBY
+#define DRMSETTINGSPLUGINRESOURCES_IBY
+
+data=DATAZ_\RESOURCE_FILES_DIR\drmsettingspluginrsc.rsc RESOURCE_FILES_DIR\drmsettingspluginrsc.rsc
+
+#endif // DRMSETTINGSPLUGINRESOURCES_IBY
+//  End of File
--- a/drm.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#
-# 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: qt changes for DRM 
-#
-
-TEMPLATE = subdirs
-
-CONFIG += ordered
-
-SUBDIRS += commondrm/commondrm.pro
-SUBDIRS += omadrm/omadrm.pro
\ No newline at end of file
--- a/drm_plat/camese_framework_api/camese_framework_api.metaxml	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_plat/camese_framework_api/camese_framework_api.metaxml	Wed Sep 01 12:21:16 2010 +0100
@@ -1,16 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<api id="bd75b8cdec8227a98d287e7dcb2a3ff1" dataversion="2.0">
-  <name>camese framework api</name>
-  <description>WMDRM DLA framework plugin interfaces
-WMDRM DLA Client API</description>
-  <type>c++</type>
-  <collection>WMDRM</collection>
-  <libs>
-    <lib name="wmdrmdla.lib"/>
-  </libs>
-  <release category="platform" sinceversion="5.1"/>
-  <attributes>
-    <htmldocprovided>yes</htmldocprovided>
-    <adaptation>no</adaptation>
-  </attributes>
+<?xml version="1.0" ?>
+<api id="bd75b8cdec8227a98d287e7dcb2a3ff1" dataversion="1.0">
+<name>camese framework api</name>
+<description>WMDRM DLA framework plugin interfaces</description>
+<type>c++</type>
+<subsystem>WMDRM</subsystem>
+<libs><lib name="wmdrmdla.lib"/>
+</libs>
+<release category="domain" sinceversion="5.1"/>
+<attributes>
+<htmldocprovided>yes</htmldocprovided>
+<adaptation>no</adaptation>
+</attributes>
 </api>
--- a/drm_plat/camese_framework_api/group/bld.inf	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_plat/camese_framework_api/group/bld.inf	Wed Sep 01 12:21:16 2010 +0100
@@ -29,4 +29,3 @@
 ../inc/wmdrmdlahttpplugin.inl               MW_LAYER_PLATFORM_EXPORT_PATH( wmdrmdlahttpplugin.inl )
 ../inc/wmdrmdlauiplugin.h                   MW_LAYER_PLATFORM_EXPORT_PATH( wmdrmdlauiplugin.h )
 ../inc/wmdrmdlauiplugin.inl                 MW_LAYER_PLATFORM_EXPORT_PATH( wmdrmdlauiplugin.inl )
-../inc/wmdrmdlahandler.h                    MW_LAYER_PLATFORM_EXPORT_PATH( wmdrmdlahandler.h )
\ No newline at end of file
--- a/drm_plat/camese_framework_api/inc/wmdrmdlahandler.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
-* 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:  Interface class for WMDRM DLA functionality
-*
-*/
-
-
-#ifndef C_WMDRMDLAHANDLER_H
-#define C_WMDRMDLAHANDLER_H
-
-#include <e32base.h>
-#include <f32file.h>
-
-class CWmDrmDlaHandlerImpl;
-
-/**
- *  WMDRM DLA Interface
- *
- *  @lib wmdrmdla.lib
- *  @since S60 v9.1
- */
-NONSHARABLE_CLASS( CWmDrmDlaHandler ) : public CBase
-    {
-
-public:
-
-    IMPORT_C static CWmDrmDlaHandler* NewL();
-    IMPORT_C static CWmDrmDlaHandler* NewLC();
-
-    /**
-    * Destructor.
-    */
-    virtual ~CWmDrmDlaHandler();
-
-    /**
-     * Checks if license acquisition for file is silent
-     *
-     * @param   aFile wmdrm file
-     * @return  ETrue if license acquisition is silent
-     * @leave   KErrNotFound if there is no handler for the file
-     */
-    IMPORT_C TBool SilentL( const RFile& aFile );
-
-    /**
-     * Acquire license based on the file handle
-     *
-     * @param   aFile wmdrm file
-     * @param   aContentUrl contains content URL on return. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @param   aHtmlData contains HTML data returned by license server on
-     *                    return. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @leave   KErrNotFound if there is no handler for the file
-     */
-    IMPORT_C void AcquireLicenseL( const RFile& aFile, HBufC*& aContentUrl, 
-                                   HBufC*& aHtmlData );
-
-    /**
-     * Acquire license based on the file handle, asynchronous version
-     *
-     * @param   aFile wmdrm file
-     * @param   aContentUrl contains content URL on completion. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @param   aHtmlData contains HTML data returned by license server on 
-     *                    completion. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @param   aStatus Request status. On completion contains the error code.
-     */
-    IMPORT_C void AcquireLicense( const RFile& aFile, HBufC*& aContentUrl, 
-                                  HBufC*& aHtmlData, TRequestStatus& aStatus );
-
-    /**
-     * Acquire license based on the DRM Header
-     *
-     * @param   aDrmHeader DRM Header
-     * @param   aErrorUrl   URL where error code is sent. Can be NULL.
-     * @param   aContentUrl contains content URL on return. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @param   aHtmlData contains HTML data returned by license server on 
-     *                    return. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @leave   KErrNotFound if there is no handler for the file
-     */
-    IMPORT_C void AcquireLicenseFromDrmHeaderL( const TDesC8& aDrmHeader,
-                                                HBufC* aErrorUrl,
-                                                HBufC*& aContentUrl, 
-                                                HBufC*& aHtmlData );
-
-    /**
-     * Acquire license based on the DRM Header, asynchronous version
-     *
-     * @param   aDrmHeader DRM Header
-     * @param   aErrorUrl   URL where error code is sent. Can be NULL.
-     * @param   aContentUrl contains content URL on completion. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @param   aHtmlData contains HTML data returned by license server on
-     *                    completion. Can be NULL.
-     * If it's not NULL, it must be freed by caller.  
-     * @param   aStatus Request status. On completion contains the error code.
-     */
-    IMPORT_C void AcquireLicenseFromDrmHeader( const TDesC8& aDrmHeader, 
-                                               HBufC* aErrorUrl,
-                                               HBufC*& aContentUrl, 
-                                               HBufC*& aHtmlData, 
-                                               TRequestStatus& aStatus );
-
-    /**
-     * Cancels ongoing license acquisition
-     *
-     */
-    IMPORT_C void CancelLicenseAcquisition();
-
-    /**
-     * Handles metering certificate OTA
-     *
-     * @param   aCertificate metering certificate
-     */
-    IMPORT_C void ProcessMeteringCertificateL( const TDesC8& aCertificate );
-
-    /**
-     * Handles metering certificate OTA, asynchronous version
-     *
-     * @param   aCertificate metering certificate
-     * @param   aStatus Request status. On completion contains the error code.
-     */
-    IMPORT_C void ProcessMeteringCertificate( const TDesC8& aCertificate, 
-                                              TRequestStatus& aStatus );
-
-    /**
-     * Cancels ongoing metering
-     *
-     */
-    IMPORT_C void CancelMetering();
-
-    /**
-     * Sets the IAP to be used in the HTTP transactions
-     *
-     * @param   aIapId  Internet Access Point id
-     */
-    IMPORT_C void SetIapId( TInt aIapId );
-
-protected:
-
-private:
-
-    CWmDrmDlaHandler();
-
-    void ConstructL();
-
-private: // data
-
-    /**
-     * Implementation class
-     * Own.
-     */
-    CWmDrmDlaHandlerImpl* iImpl;
-
-    };
-
-#endif // C_WMDRMDLAHANDLER_H
--- a/drm_plat/wmdrm_access_api/inc/wmdrmaccessecominterface.inl	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_plat/wmdrm_access_api/inc/wmdrmaccessecominterface.inl	Wed Sep 01 12:21:16 2010 +0100
@@ -15,7 +15,7 @@
 *  wmdrmaccessecominterface.inl
 *
 */
-#include <ecom/ecom.h> // for interface
+#include <ecom.h> // for interface
 
 // ---------------------------------------------------------------------------
 // CWmDrmAccessEcomInterface::NewL
--- a/drm_pub/drm_helper_api/inc/Drmhelper.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_pub/drm_helper_api/inc/Drmhelper.h	Wed Sep 01 12:21:16 2010 +0100
@@ -63,6 +63,7 @@
 class CAknGlobalNote;
 class CAknWaitDialog;
 class CDRMHelperInfoNoteWrapper;
+class CSchemeHandler;
 class CMediatorEventProvider;
 
 // CLASS DECLARATION
@@ -1574,6 +1575,8 @@
         // Used to queue up global notes
         RPointerArray<CDRMHelperInfoNoteWrapper>      iNoteList;
         
+        CSchemeHandler*         iSchemeHandler;
+
         TBool                   iReturnCancel;
 
         // Used to send cancel events to cover ui
--- a/drm_pub/drm_helper_api/loc/DRMCommon.loc	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_pub/drm_helper_api/loc/DRMCommon.loc	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005 - 2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005 - 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"
@@ -52,7 +52,7 @@
 //w:
 //r:
 //
-#define qtn_drm_gen_rights_exp "Licence expired for some of the selected objects"
+#define qtn_drm_gen_rights_exp "License expired for some of the selected objects"
 
 //d: Text in information note
 //l: popup_note_window
@@ -66,7 +66,7 @@
 //w:
 //r:
 //
-#define qtn_drm_mgr_det_exp "Licence expired"
+#define qtn_drm_mgr_det_exp "License expired"
 
 //d: Text in message query
 //d: %N is number of deleted objects
@@ -152,14 +152,14 @@
 //w:
 //r:
 //
-#define qtn_drm_cnt_or_dt_exp_multi "Licence will expire for some of the selected objects"
+#define qtn_drm_cnt_or_dt_exp_multi "License will expire for some of the selected objects"
 
 //d: Text in confirmation query
 //l: popup_note_window
 //w:
 //r:
 //
-#define qtn_drm_sd_rights_exp "Licence expired. Get new licence to unlock file?"
+#define qtn_drm_sd_rights_exp "License expired. Get new license to unlock file?"
 
 //d: Text in confirmation query
 //d: %U is name of the media object
@@ -182,7 +182,7 @@
 //w:
 //r:
 //
-#define qtn_drm_query_valid_rights_until "Licence for selected item valid until %U. Continue?"
+#define qtn_drm_query_valid_rights_until "License for selected item valid until %U. Continue?"
 
 //d: Text in confirmation query when content with inactive interval rights is set as automated content.
 //d: %U is calculated expiration date of rights object, if rights are activated
@@ -198,7 +198,7 @@
 //w:
 //r:
 //
-#define qtn_drm_note_cd_ro_expired "Licence for %U expired"
+#define qtn_drm_note_cd_ro_expired "License for %U expired"
 
 //d: Text in confirmation note when superdistributable automated content has expired.
 //d: %U is name of the content
@@ -206,7 +206,7 @@
 //w:
 //r:
 //
-#define qtn_drm_note_sd_ro_expired "Licence for %U expired. Get new licence to unlock file?"
+#define qtn_drm_note_sd_ro_expired "License for %U expired. Get new license to unlock file?"
 
 //d: Text in information note when usage rights are not yet valid.
 //d: %U is start date of rights object
@@ -214,14 +214,14 @@
 //w:
 //r: 2.6
 //
-#define qtn_drm_note_ro_valid_on_future "Licence valid from %U"
+#define qtn_drm_note_ro_valid_on_future "License valid from %U"
 
 //d:Possible second line for first entry of Details View listbox
 //l:list_double_pane_t2_cp2
 //w:
 //r:3.0
 //
-#define qtn_drm_mgr_det_valid "Licence is valid"
+#define qtn_drm_mgr_det_valid "License is valid"
 
 //d: Text in information note shown when removing device from account failed.
 //l: popup_note_window
@@ -250,7 +250,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_act_key_received "Licence received"
+#define qtn_drm_info_act_key_received "License received"
 
 //d: Text in information note shown when getting rights object has failed.
 //d: Reason is permanent device or server error and there is no possibility to retry.
@@ -258,7 +258,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_getting_key_failed "Unable to get licence"
+#define qtn_drm_info_getting_key_failed "Unable to get license"
 
 //d: Text in confirmation note shown when device has been succesfully removed from account.
 //l: popup_note_window
@@ -339,7 +339,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_get_key_failed_retry "Licence not received. Try again?"
+#define qtn_drm_get_key_failed_retry "License not received. Try again?"
 
 //d: Text in wait note shown while device is acquiring RO and possibly completing registration
 //d: protocol with Rights Issuer.
@@ -426,7 +426,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_query_waiting_for_ro "Waiting for licence. Try again later."
+#define qtn_drm_query_waiting_for_ro "Waiting for license. Try again later."
 
 //d: Text in confirmation query that is displayed when user tries to render MO that is missing RO.
 //d: The waiting time of RO to arrive has passed, and there is no possibility to get new RO (no rights
@@ -435,7 +435,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_query_ro_late "Licence not yet received. Expected time of delivery elapsed."
+#define qtn_drm_query_ro_late "License not yet received. Expected time of delivery elapsed."
 
 //d: Text in confirmation query that is displayed when user tries to render MO that is missing RO.
 //d: The waiting time of RO to arrive has passed, and there is possibility to get new RO (rights issuer url exists).
@@ -443,7 +443,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_query_ro_late_activate "Licence not yet received. Expected time of delivery elapsed. Get new licence?"
+#define qtn_drm_query_ro_late_activate "License not yet received. Expected time of delivery elapsed. Get new license?"
 
 //d: Text in confirmation note that is displayed when device registration is complete.
 //l: popup_note_window
@@ -483,7 +483,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_cal_tone_exp_activate "Licence for calendar alert tone %U expired. Get new licence to unlock file?"
+#define qtn_drm_cal_tone_exp_activate "License for calendar alert tone %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for calendar alert tone have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -493,7 +493,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_calendar_tone_exp "Licence for calendar alert tone %U expired"
+#define qtn_drm_info_calendar_tone_exp "License for calendar alert tone %U expired"
 
 //d: Text in confirmation query that is displayed when rights for clock alarm tone have expired.
 //d: Query is shown when Idle is activated. Activation query is shown only for superdistributable
@@ -503,7 +503,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_clock_alrm_exp_activate "Licence for clock alarm tone %U expired. Get new licence to unlock file?"
+#define qtn_drm_clock_alrm_exp_activate "License for clock alarm tone %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for clock alarm tone have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -513,7 +513,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_clock_alarm_exp "Licence for clock alarm tone %U expired"
+#define qtn_drm_info_clock_alarm_exp "License for clock alarm tone %U expired"
 
 //d: Text in confirmation query that is displayed when rights for e-mail alert tone have expired.
 //d: Query is shown when Idle is activated. Activation query is shown only for superdistributable
@@ -523,7 +523,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_email_tone_exp_activate "Licence for e-mail alert tone %U expired. Get new licence to unlock file?"
+#define qtn_drm_email_tone_exp_activate "License for e-mail alert tone %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for e-mail alert tone have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -533,7 +533,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_email_tone_exp "Licence for e-mail alert tone %U expired"
+#define qtn_drm_info_email_tone_exp "License for e-mail alert tone %U expired"
 
 //d: Text in confirmation query that is displayed when rights for instant message alert tone have expired.
 //d: Query is shown when Idle is activated. Activation query is shown only for superdistributable
@@ -543,7 +543,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_im_tone_exp_activate "Licence for IM alert tone %U expired. Activate?"
+#define qtn_drm_im_tone_exp_activate "License for IM alert tone %U expired. Activate?"
 
 //d: Text in information note that that is displayed when rights for instant message alert tone have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -553,7 +553,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_im_alert_tone_exp "Licence for IM alert tone %U expired"
+#define qtn_drm_info_im_alert_tone_exp "License for IM alert tone %U expired"
 
 //d: Text in confirmation query that is displayed when rights for message alert tone have expired.
 //d: Query is shown when Idle is activated. Activation query is shown only for superdistributable
@@ -563,7 +563,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_msg_tone_exp_activate "Licence for message alert tone %U expired. Get new licence to unlock file?"
+#define qtn_drm_msg_tone_exp_activate "License for message alert tone %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for message alert tone have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -573,7 +573,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_msg_tone_exp "Licence for message alert tone %U expired"
+#define qtn_drm_info_msg_tone_exp "License for message alert tone %U expired"
 
 //d: Text in confirmation query that is displayed when rights for ringing tone have expired.
 //d: Query is shown when Idle is activated. Activation query is shown only for superdistributable
@@ -583,7 +583,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_ring_tone_exp_activate "Licence for ringing tone %U expired. Get new licence to unlock file?"
+#define qtn_drm_ring_tone_exp_activate "License for ringing tone %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for ringing tone have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -593,7 +593,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_ring_tone_exp "Licence for ringing tone %U expired"
+#define qtn_drm_info_ring_tone_exp "License for ringing tone %U expired"
 
 //d: Text in confirmation query that is displayed when rights for screensaver have expired.
 //d: Query is shown when Idle is activated. Activation query is shown only for superdistributable
@@ -603,7 +603,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_screensave_exp_activate "Licence for power saver %U expired. Get new licence to unlock file?"
+#define qtn_drm_screensave_exp_activate "License for power saver %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for screensaver have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -623,7 +623,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_wallpaper_exp_activate "Licence for wallpaper %U expired. Get new licence to unlock file?"
+#define qtn_drm_wallpaper_exp_activate "License for wallpaper %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for wallpaper have expired.
 //d: Note is shown when Idle is activated. This info note is shown fore combined delivery object
@@ -633,7 +633,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_wallpaper_exp "Licence for wallpaper %U expired"
+#define qtn_drm_info_wallpaper_exp "License for wallpaper %U expired"
 
 //d: Text in confirmation query that is displayed when rights for theme have expired.
 //d: Query is shown when Idle is activated. Activation query is shown only for superdistributable
@@ -643,7 +643,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_theme_exp_activate "Licence for theme %U expired. Get new licence to unlock file?"
+#define qtn_drm_theme_exp_activate "License for theme %U expired. Get new license to unlock file?"
 
 //d: Text in information note that that is displayed when rights for theme have expired.
 //d: Note is shown when Idle is activated. This info note is shown for combined delivery object
@@ -653,7 +653,7 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_info_theme_exp "Licence for theme %U expired"
+#define qtn_drm_info_theme_exp "License for theme %U expired"
 
 //d: Text in information note shown when updating account has failed
 //d: (device was trying to join to new account).
@@ -706,14 +706,14 @@
 //w:
 //r: 3.0
 //
-#define qtn_drm_roap_title "Licence download"
+#define qtn_drm_roap_title "License download"
 
 //d: Text in information note
 //l: popup_note_window
 //w:
 //r:
 //
-#define qtn_drm_info_ro_expired "Licence expired"
+#define qtn_drm_info_ro_expired "License expired"
 
 //d: Text in confirmation query shown when content cannot be rendered because of wrong SIM card in device
 //l: popup_note_window
@@ -885,7 +885,7 @@
 //l: None
 //r: 3.2
 //
-#define qtn_drm_msq_query_registration "Registration with content provider is needed. After registration, licences for protected files can be downloaded automatically."
+#define qtn_drm_msq_query_registration "Registration with content provider is needed. After registration, licenses for protected files can be downloaded automatically."
 
 //Link text for more info
 //d: String which contains the description for more info -link
--- a/drm_pub/oma_drm_caf_agent_api/tsrc/bc/BCDRMCAFCAPS_exe/group/BCDRMCAFCAPS_exe.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_pub/oma_drm_caf_agent_api/tsrc/bc/BCDRMCAFCAPS_exe/group/BCDRMCAFCAPS_exe.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -32,8 +32,12 @@
 /* Remove comments and replace 0x00000000 with correct secure id */
 // SECUREID     0x00000000
 
-MW_LAYER_SYSTEMINCLUDE
-
+#if defined(__S60_)
+    MW_LAYER_SYSTEMINCLUDE
+#else // __S60_ not defined
+    SYSTEMINCLUDE   /epoc32/include 
+    SYSTEMINCLUDE   /epoc32/include/internal
+#endif // __S60_
 
 /* Source files */
 SOURCEPATH      ../src
--- a/drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/group/DRM_CAF.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/group/DRM_CAF.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -33,8 +33,12 @@
 
 USERINCLUDE     ../inc 
 
-MW_LAYER_SYSTEMINCLUDE
-
+#if defined(__S60_)
+    MW_LAYER_SYSTEMINCLUDE
+#else // __S60_ not defined
+    SYSTEMINCLUDE   /epoc32/include 
+    SYSTEMINCLUDE   /epoc32/include/internal
+#endif // __S60_
 
 SOURCEPATH      ../src
 
@@ -50,6 +54,10 @@
 
 LANG            SC
 
+
+SYSTEMINCLUDE /epoc32/include/libc
+SYSTEMINCLUDE /epoc32/include/ecom
+SYSTEMINCLUDE /epoc32/include/caf
 		
 LIBRARY         apparc.lib
 LIBRARY         avkon.lib
--- a/drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/group/DRM_CAF_nrm.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/group/DRM_CAF_nrm.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -36,9 +36,12 @@
 
 USERINCLUDE     ../inc 
 
-
-MW_LAYER_SYSTEMINCLUDE
-
+#if defined(__S60_)
+    MW_LAYER_SYSTEMINCLUDE
+#else // __S60_ not defined
+    SYSTEMINCLUDE   /epoc32/include 
+    SYSTEMINCLUDE   /epoc32/include/internal
+#endif // __S60_
 
 SOURCEPATH      ../src
 
--- a/drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/inc/DRM_CAF.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/inc/DRM_CAF.h	Wed Sep 01 12:21:16 2010 +0100
@@ -38,7 +38,8 @@
 #include <s32file.h>
 #include <e32std.h>
 #include <e32base.h>
-#include <caf/data.h>
+#include <data.h>
+//#include <caf.h>
 
 #include <Oma2Agent.h>
 #include <DRMLicenseChecker.h>
--- a/inc/DrmUtilityDmgrWrapper.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/inc/DrmUtilityDmgrWrapper.h	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -19,28 +19,9 @@
 #ifndef CDRMUTILITYDMGRWRAPPER_H
 #define CDRMUTILITYDMGRWRAPPER_H
 
-#include <f32file.h> // RFs
-#include <RoapObserver.h> // Roap::MRoapObserver
-#include <AknProgressDialog.h> // MAknProgressDialogCallback CAknProgressDialog
-
-// download apis
-#include <downloadmanager.h>
-#include <download.h>
-#include <downloadevent.h>
-
-namespace Roap
-    {
-    class CRoapEng;
-    }
-
-namespace DRM
-    {
-    class CDrmUtilityConnection;
-    }
-class CDRMRights;
-class CEikProgressInfo;
-class DrmUtilityEventHandler;
-class QDrmUtilityDmgrEventHandler;
+#include <downloadmgrclient.h>
+#include <AknProgressDialog.h>
+#include <eikprogi.h>
 
 /**
 * Environment gate function
@@ -69,25 +50,12 @@
 *  @lib DrmUtilityDmgrWrapper
 *  @since S60 v5.0
 */
-class CDrmUtilityDmgrWrapper :
-    public CActive,
-    public Roap::MRoapObserver,
+class CDrmUtilityDmgrWrapper : CBase,
+    public MHttpDownloadMgrObserver,
     public MDrmUtilityDmgrWrapper,
     public MProgressDialogCallback
     {
-private:
 
-    enum TDownloadState
-        {
-        EInit,
-        EGetMeteringTrigger,
-        ESaveMeteringTrigger,
-        EMeteringReportSubmit,
-        EGetPrUrlTrigger,
-        ESavePrUrlTrigger,
-        EPrRoapRequest,
-        EComplete
-        };
 public:
 
     static CDrmUtilityDmgrWrapper* NewL();
@@ -108,131 +76,17 @@
 
     HBufC8* GetErrorUrlL();
 
-// From Roap::MRoapObserver
-    /**
-    * ConnectionConfL
-    * @return ETrue: the network can be establish
-    *         EFalse: the ROAP transaction is canceled
-    *
-    * @leave  System wide error code */
-    TBool ConnectionConfL();
 
-    /**
-    * ContactRiConfL
-    * @return ETrue: the user consent is achieved
-    *         EFalse: the user consent is not achieved
-    *
-    * @leave  System wide error code */
-    TBool ContactRiConfL();
-
-    /**
-    * TransIdConfL
-    * @return ETrue: the user consent is achieved
-    *         EFalse: the user consent is not achieved
-    *
-    * @leave  System wide error code */
-
-    TBool TransIdConfL();
-
-    /**
-    * RightsObjectDetailsL
-    *
-    * The function is called after successful completion of RO acquisition
-    * protocol. The passes information about stored rights objects to the
-    * observer.
-    *
-    * @since  3.0
-    * @param aRightsList: A list of pointers to rights objects.
-    *                     Contents of aRightsList are owend by ROAP engine
-    *
-    * @leave  System wide error code */
-    void RightsObjectDetailsL( const RPointerArray<CDRMRights>& aRightsList );
-
-    /**
-    * ContentDownloadInfoL
-    *
-    * The function is called when the ROAP engine notices that it is about to
-    * receive a multipart content as a ROAP response. The method must return via
-    * out-parameter the path to a temp folder where the content is saved during
-    * download. The name that is used as filename when saving the content to
-    * the appropriate palce and the maximum size of the content (a safety upper limit)
-    * must also be provided via out-parameters.
-    *
-    * @since 3.0
-    * @param aTempFolder: (out-param) The path of the temp folder, or KNullDesC
-    * @param aContentName: (out-param) The name of the content, or KNullDesC (defaut name is used)
-    * @param aMaxSize: (out-param) The maximum size of the content, or -1 if not known
-    *
-    * @leave System wide error code */
-
-    void ContentDownloadInfoL( TPath& aTempFolder,
-            TFileName& aContentName,
-            TInt& aMaxSize );
+    // from base class MHttpDownloadMgrObserver
 
     /**
-    * ContentDetailsL
-    *
-    * The function is called when the ROAP engine has received a DCF content (together
-    * with a ROAP response) The ROAP engine saves the DCF to the appropriate location
-    * and gives out the information about the saved DCF file by calling this method
-    *
-    * @since 3.0
-    * @param aPath: The path andf the filename of the saved DCF file
-    * @param aType: The plain MIME type of the saved DCF file
-    * @param aAppUid: The handler app UID of the saved DCF file
-    *
-    * @leave System wide error code */
-
-    void ContentDetailsL( const TDesC& aPath,
-            const TDesC8& aType,
-            const TUid& aAppUid );
-
-    /**
-    * RoapProgressInfoL
-    *
-    * The function provides progress information about ROAP processing to the
-    * observer
-    *
-    * @since  3.0
-    * @param aProgressInfo: An integer value representing the state of
-    *                       ROAP processing, counting in bytes
+    * From MHttpDownloadMgrObserver.
+    * Handle download manager events
     *
-    * @leave  System wide error code */
-
-    void RoapProgressInfoL( const TInt aProgressInfo );
-
-    /**
-    * ErrorUrlL
-    *
-    * The function is called in ROAP error case and it provides an error URL
-    * for the caller. The calling entity should send an HTTP GET request to
-    * the URL which should then return an HTML page.
-    *
-    * @since  3.0
-    * @param aErrorUrl: The error URL
-    *
-    *
-    * @leave  System wide error code */
-
-    void ErrorUrlL( const TDesC8& aErrorUrl );
-
-    /**
-    * PostResponseUrlL
-    *
-    * The function is called if handled ROAP metering report response
-    * contains PostResponseURL extension. The calling entity should send
-    * an HTTP GET request to the URL, which should return ROAP trigger,
-    * download descriptor or multipart message containing both
-    * download descriptor and ROAP trigger.
-    *
-    * @since  3.2
-    * @param aPostResponseUrl: The URL to be fetched
-    *                          after handling ROAP metering response
-    *                          with PostResponseURL extension.
-    *
-    *
-    * @leave  System wide error code */
-    void PostResponseUrlL( const TDesC8& aPostResponseUrl );
+    * @param aDownload the download
+    * @param aEvent the event
+    */
+    void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
 
 public: // Call back methods of MAknProgressDialogCallback
 
@@ -243,22 +97,9 @@
     * @param aButtonId ID of the button pressed
     */
     void DialogDismissedL( TInt aButtonId );
-    
-    /**
-	* Handle download manager events
-	*
-	* @param aEvent the event
-	*/
-            
-    void HandleDownloadEventL( WRT::DownloadEvent* aEvent );
 
 protected:
-    //from Cactive
-    virtual void DoCancel();
 
-    virtual void RunL();
-
-    virtual TInt RunError( TInt aError );
 private:
 
     /**
@@ -271,37 +112,25 @@
     /**
     * Set the browser default access point to be used
     */
+    void SetDefaultAccessPointL();
 
+    void DoDownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
 
     void ShowProgressNoteL( );
 
     void RemoveProgressNoteL( );
 
-    void DoConnectL( TDownloadState aNextState );
-
-    void DoDownloadRoapTriggerL( TDownloadState aNextState );
-
-    void DoSaveRoapTriggerL( TDownloadState aNextState );
+    void HandlePostResponseUrlL();
 
-    void DoHandleRoapTriggerL( TDownloadState aNextState );
-
-    void CompleteToState( TDownloadState aNextState, TInt aError );
-    
-    void ProcessDownloadEventL( WRT::Download& aDownload, WRT::DownloadEvent& aEvent );
 
 private: // data
 
     /**
     * Download manager session
     */
-    WRT::DownloadManager* iDlMgr;
+    RHttpDownloadMgr iDlMgr;
 
     /**
-     * Download instance needs to be stored for handling signal slot mechanism
-     */
-    WRT::Download* iDownload;
-    
-    /**
     * Used to make downloads synchronous
     */
     CActiveSchedulerWait iWait;
@@ -312,16 +141,6 @@
     TBool iDownloadSuccess;
     TBool iConnectionError;
 
-    /**
-    * trigger URL
-    */
-    HBufC8* iTriggerUrl;
-
-    /**
-    * trigger buffer
-    */
-    HBufC8* iTriggerBuf;
-
     TBool iDialogDismissed;
 
     /**
@@ -352,22 +171,6 @@
     */
     HBufC8* iPostResponseUrl;
 
-    /**
-    * IAP (from ROAP or from UI)
-    */
-    TUint32 iIapId;
-
-    TDownloadState iState;
-
-    Roap::CRoapEng* iRoapEng;
-
-    RFs iFs;
-
-    HBufC* iFileName;
-
-    DRM::CDrmUtilityConnection* iConnection;
-    
-    QDrmUtilityDmgrEventHandler* iDrmUtilityDmgrEventHandler; 
     };
 
 #endif // CDRMUTILITYDMGRWRAPPER_H
--- a/inc/buffercontainers.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* 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: CBase derived container classes for easening
-*               dynamic memory allocation of TBuf<n> type variables
-*               (TName etc.)
-*/
-#ifndef   BUFFERCONTAINERS_H
-#define   BUFFERCONTAINERS_H
-
-#include <e32std.h>
-namespace DRM
-{
-template <typename T>
-NONSHARABLE_CLASS( CBufferContainer ): public CBase
-    {
-    // Note, this class is not intendend to be part of any API
-    public:
-        inline static CBufferContainer<T>* NewL();
-        inline static CBufferContainer<T>* NewLC();
-
-        inline virtual ~CBufferContainer();
-    private:
-        inline CBufferContainer();
-
-        //data
-    public:
-        // Contained TBuf member
-        T iBuffer;
-    };
-
-//Containers for some TBuf based types defined at e32cmn.h
-typedef CBufferContainer<TName> CNameContainer;
-typedef CBufferContainer<TFullName> CFullNameContainer;
-typedef CBufferContainer<TExitCategoryName> CExitCategoryNameContainer;
-typedef CBufferContainer<TFileName> CFileNameContainer;
-typedef CBufferContainer<TPath> CPathContainer;
-typedef CBufferContainer<TVersionName> CVersionNameContainer;
-typedef CBufferContainer<TUidName> CUidNameContainer;
-}
-
-#include "buffercontainers.inl"
-#endif // BUFFERCONTAINERS_H
--- a/inc/buffercontainers.inl	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* 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: 
-*
-*/
-#ifndef   BUFFERCONTAINERS_INL
-#define   BUFFERCONTAINERS_INL
-
-// ---------------------------------------------------------------------------
-// DRM::CBufferContainer::NewL
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-inline DRM::CBufferContainer<T>* DRM::CBufferContainer<T>::NewL()
-{
-    CBufferContainer<T>* self( CBufferContainer<T>::NewLC() );
-    CleanupStack::Pop( self );
-    return self;
-}
-
-// ---------------------------------------------------------------------------
-// DRM::CBufferContainer::NewLC
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-inline DRM::CBufferContainer<T>* DRM::CBufferContainer<T>::NewLC()
-{
-    CBufferContainer<T>* self( new (ELeave) CBufferContainer<T>() );
-    CleanupStack::PushL( self );
-    return self;
-}
-
-// ---------------------------------------------------------------------------
-// DRM::CBufferContainer::CBufferContainer
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-inline DRM::CBufferContainer<T>::CBufferContainer()
-{}
-
-// ---------------------------------------------------------------------------
-// DRM::CBufferContainer::~CBufferContainer
-// ---------------------------------------------------------------------------
-//
-template <typename T>
-inline DRM::CBufferContainer<T>::~CBufferContainer()
-{}
-
-
-#endif // BUFFERCONTAINERS_INL
--- a/inc/drmbrowserlauncher.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2004 Nokia Corporation and/or 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:  API for QT browser launcher
-*
-*/
-
-
-#ifndef DRMBROWSERLAUNCHER_H
-#define DRMBROWSERLAUNCHER_H
-
-// INCLUDES
-#include <e32base.h>
-// DATA TYPES
-
-// FORWARD DECLARATIONS
-
-// CLASS DECLARATION
-
-namespace DRM
-{
-
-
-/**
-*  API for QT browser launcher
-*  
-*
-*  @lib drmbrowserlauncher.dll
-*  @since Symbian V4
-*/
-NONSHARABLE_CLASS( CDrmBrowserLauncher ): public CBase
-{
-    public:  // Constructors and destructor
-   			
-   			/**
-        * Destructor.
-        * @since Symbian V4
-        */
-        ~CDrmBrowserLauncher();
-   			
-        /**
-        * Two-phased constructor.
-        * @since Symbian V4
-        * 
-        * @return New drmbrowserlauncher instace.
-        */
-        IMPORT_C static CDrmBrowserLauncher* NewLC();
-        
-        /**
-        * Two-phased constructor.
-        * @since Symbian V4
-        * 
-        * @return New drmbrowserlauncher instace.
-        */
-        IMPORT_C static CDrmBrowserLauncher* NewL();
-        
-        /**
-        * Static method for launching the Browser with a given URL.
-        * @since Symbian V4
-        * @param &aUrl URL to be launched in browser.
-        */
-        IMPORT_C void LaunchUrlL(TDesC &aUrl);       
-   
-   	private:
-   		
-   			/**
-        * Constructor.
-        * @since Symbian V4
-        */
-   			CDrmBrowserLauncher();
-   
-   			/**
-        * Two-phased constructor second part.
-        * @since Symbian V4
-        */
-        void ConstructL();
-        
-};
-
-} // namespace DRM
-
-#endif      // DRMHELPERSESSION_H   
-            
-// End of File
--- a/inc/drmuidialogids.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
-* 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:  Defines an enumeration for the DRM dialog IDs
-*/
-
-
-#ifndef C_DRMUIDIALOGIDS_H
-#define C_DRMUIDIALOGIDS_H
-
-//  Enumeration for the dialog IDs to be launched.
-enum TDrmUIDialogId
-    {
-    EQueryNoRightsObj,
-    EQueryFileLocked,              // %U is filename. dialog to be implemented
-    EQueryFileLockedForSim,
-    EQueryRightsObjExpired,
-    EQueryFileWithNoRightsObj,     // %U is filename. dialog to be implemented
-    EQueryNoUsage, 
-    EQueryNoCount, 
-    EQueryDeleteDRMFile, 
-    EQueryMoveObjects, 
-    EQueryCopyObjects, 
-    EQuerySendUnprotectedObjs, 
-    EQueryAccountUpdate,
-    EQueryRetryForLicence, 
-    EQueryGetNewLicence,
-    EQueryConnectToActivate,       // dialog to be implemented
-    EQueryOpenErrorUrl,            // dialog to be implemented
-    EQueryLicenceValidUntil,       // %U is expiration date. dialog to be implemented yet
-    EQueryValidForLimitedTime,     // dialog to be implemented
-    EQueryUnlockRingToneForSim,    // %U is filename. dialog to be implemented
-    EQueryGetRingToneLicence,      // %U is filename. dialog to be implemented
-    EQueryUnlockMsgToneForSim,     // %U is filename. dialgo to be implemented
-    EQueryGetMsgToneLicence,       // %U is filename. dialog to be implemented
-    EQueryUnlockEmailToneForSim,   // %U is filename. dialog to be implemented
-    EQueryGetEmailToneLicence,     // %U is filename. dialog to be implemented
-    EQueryUseDefaultEmailTone,     // %U is filename. dialog to be implemented
-    EQueryActivateIMToneLicence,   // %U is filename. dialog to be implemented
-    EQueryUnlockCalToneForSim,     // %U is filename. dialog to be implemented
-    EQueryGetCalToneLicence,       // %U is filename. dialog to be implemented
-    
-    EConfObjLocked, 
-    EConfUnsupportedObj, 
-    EConfWaitingForLicence,
-    EConfDeleted, 
-    EConfUnableToMove, 
-    EConfUnableToCopy, 
-    EConfLicenceExpired,
-    EConfFileDeleted,              // %U is filename. dialog to be implemented
-    EConfForwardProtected, 
-    EConfUnableToSend, 
-    EConfViewRestriction, 
-    EConfUnableToUse,              // %U is start date of RO. dialog to be implemented
-    EConfUnableToDeregister,
-    EConfAccountNotRecognized, 
-    EConfPhoneDeregistered, 
-    EConfRegUpdateFailure, 
-    EConfRegistrationUpdated, 
-    EConfPhoneRegistered, 
-    EConfRegistrationFailure, 
-    EConfUnableToOpen,             // dialog to be implemented
-    EConfLicenceNotReceived,       // dialog to be implemented
-    EConfFileLockedForSim,
-    EConfNoAccessPoint,            // dialog to be implemented
-    EConfConnectionFailed,         // dialog to be implemented
-    EConfUnableToUnlock,           // dialog to be implemented    
-    EConfUseDefaultRingTone,       // %U is filename. dialog to be implemented
-    EConfRingToneLicenceExpired,   // %U is filename. dialog to be implemented
-    EConfUseDefaultMsgTone,        // %U is filename. dialog to be implemented
-    EConfMsgToneLicenceExpired,    // %U is filename. dialog to be implemented
-    EConfEmailToneLicenceExpired,  // %U is filename. dialog to be implemented
-    EConfIMToneLicenceExpired,     // %U is filename. dialog to be implemented
-    EConfUseDefaultCalTone,        // %U is filename. dialog to be implemented
-    EConfCalToneExpired,           // %U is filename. dialog to be implemented
-
-    EProgDeregisteringPhone,       // progress bar to be implemented
-    EProgAcquiringLicence,         // progress bar to be implemented
-    EProgRegisteringPhone,         // progress bar to be implemented
-    EProgUpdatingRegistration,     // progress bar to be implemented
-
-    ENoteRightsObjReceived,        // popup
-    EUnusedId // The last ID
-    };
-    
-enum TDrmUiResultCode
-    {
-    ECancelled,
-    EOk
-    };
-
-#endif  // C_DRMUIDIALOGIDS_H
-
--- a/layers.sysdef.xml	Tue Aug 31 15:29:38 2010 +0300
+++ b/layers.sysdef.xml	Wed Sep 01 12:21:16 2010 +0100
@@ -1,17 +1,14 @@
 <?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
   <!ENTITY layer_real_source_path "sf/mw/drm" >
 ]>
 
-<SystemDefinition name="drm" schema="1.5.1">
+<SystemDefinition name="drm" schema="1.4.0">
   <systemModel>
     <layer name="mw_layer">
       <module name="drm">
         <unit unitID="sedo.drm" mrp="" bldFile="&layer_real_source_path;/group" name="drm" />
       </module>
-      <module name="">
-        <unit unitID="sedoQT.drm" bldFile="&layer_real_source_path;" mrp="" name="sedoQT_drm" proFile="drm.pro" qmakeArgs="-r" />
-      </module>
     </layer>
     <layer name="api_test_layer">
       <module name="drm_test">
--- a/omadrm/drmengine/agentv2/src/Oma2AgentAttributes.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/agentv2/src/Oma2AgentAttributes.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -29,6 +29,7 @@
 #include <caf/caferr.h>
 #include <utf.h>
 #include <drmagents.h>
+#include <featmgr.h>
 #include "Oma2Agent.h"
 #include "Oma2AgentAttributes.h"
 #include "Oma1Dcf.h"
@@ -81,9 +82,6 @@
     DRM::EDrmAllowVideoMacroVision |
     DRM::EDrmAllowAudioUsb |   
     DRM::EDrmAllowAudioHdmiHdcpRequired |
-    DRM::EDrmAllowAudioHdmi |
-    DRM::EDrmAllowVideoHDMI  |
-    DRM::EDrmAllowVideoHdmiHdcpRequested |
     DRM::EDrmAllowVideoHdmiHdcpRequired;
 
 // ============================= LOCAL FUNCTIONS ===============================
@@ -1023,14 +1021,26 @@
                     }
                 break;
             case ERightsIssuerUrl:
-#ifndef __DRM_FULL
-                err = KErrNotSupported;
-#else
-                if (aDcfFile.iRightsIssuerURL != NULL)
+                TRAP(ret, FeatureManager::InitializeLibL());
+                
+                if (!ret && FeatureManager::FeatureSupported(KFeatureIdFfOmadrm1FullSupport))
                     {
-                    TRAP(err, b = CnvUtfConverter::ConvertToUnicodeFromUtf8L(*aDcfFile.iRightsIssuerURL));
+                    if (aDcfFile.iRightsIssuerURL != NULL)
+                        {
+                        TRAP(err, b = CnvUtfConverter::ConvertToUnicodeFromUtf8L(
+                                *aDcfFile.iRightsIssuerURL));
+                        }
                     }
-#endif
+                else
+                    {
+                    err = KErrNotSupported;
+                    }
+                
+                if (!ret)
+                    {
+                    FeatureManager::UnInitializeLib();
+                    }
+                
                 break;
             case ETransactionTrackingId:
                 if (dcf2 != NULL && dcf2->iTransactionTracking)
--- a/omadrm/drmengine/agentv2/src/Oma2AgentContent.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/agentv2/src/Oma2AgentContent.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -25,7 +25,9 @@
 #include <e32test.h>
 #include <utf.h>
 
-#include <drmbrowserlauncher.h>
+
+#include <schemehandler.h>
+
 
 #include "Oma2AgentContent.h"
 #include "Oma2AgentAttributes.h"
@@ -543,6 +545,7 @@
 
 // -----------------------------------------------------------------------------
 // COma2AgentContent::NotifyStatusChange
+//
 // -----------------------------------------------------------------------------
 //
 void COma2AgentContent::NotifyStatusChange(
@@ -603,8 +606,7 @@
     TRequestStatus *ptr = &aStatus;
     TInt r;
     HBufC* b = NULL;
-
-    r = KErrNotSupported;
+    CSchemeHandler* handler = NULL;
 
     r = iDcf->OpenPart(aUniqueId);
     if (r == KErrNone && iDcf->iRightsIssuerURL != NULL)
@@ -613,17 +615,16 @@
             *iDcf->iRightsIssuerURL));
         if (b != NULL)
             {
-    				DRM::CDrmBrowserLauncher* browserLauncher = DRM::CDrmBrowserLauncher::NewLC();
-    	
-				    browserLauncher->LaunchUrlL(*b);
-    
-    				CleanupStack::PopAndDestroy(); // browserLauncher
-   
+            TRAP(r, handler = CSchemeHandler::NewL(*b));
+            if (handler != NULL)
+                {
+                TRAP(r, handler->HandleUrlStandaloneL());
+                delete handler;
+                }
             delete b;
             }
         }
-
-		User::RequestComplete(ptr, r);
+    User::RequestComplete(ptr, r);
     }
 
 // -----------------------------------------------------------------------------
--- a/omadrm/drmengine/agentv2/src/Oma2AgentManager.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/agentv2/src/Oma2AgentManager.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -32,6 +32,7 @@
 #include <apaserverapp.h>
 #include <sysutil.h>
 #include <centralrepository.h>
+#include <featmgr.h>
 
 #include "Oma2AgentManager.h"
 #include "Oma2AgentAttributes.h"
@@ -130,7 +131,9 @@
             }
         iOmaBasedMimeType = NULL;
         }
-
+    
+    FeatureManager::InitializeLibL();
+    
     }
 
 // -----------------------------------------------------------------------------
@@ -200,6 +203,8 @@
     delete iWatchedId;
 
     delete iOmaBasedMimeType;
+    
+    FeatureManager::UnInitializeLib();
     }
 
 // -----------------------------------------------------------------------------
@@ -723,11 +728,11 @@
     TInt err = KErrNone;
     CDcfCommon* dcf = NULL;
 
-#ifdef __DRM_OMA2
+#ifdef __DRM_OMA2   
     if ( !aFileName.Right(4).CompareF( KOma2DcfExtension ) ||
-        !aFileName.Right(4).CompareF( KOma2DcfExtensionAudio ) ||
-        !aFileName.Right(4).CompareF( KOma2DcfExtensionVideo ) ||
-        COma2Dcf::IsValidDcf(aBuffer) )
+            !aFileName.Right(4).CompareF( KOma2DcfExtensionAudio ) ||
+            !aFileName.Right(4).CompareF( KOma2DcfExtensionVideo ) ||
+            COma2Dcf::IsValidDcf(aBuffer) )
         {
         aFileMimeType.Copy(KOma2DcfContentType);
         aContentMimeType.Copy(KCafMimeType);
@@ -795,7 +800,11 @@
                 {
                 aOutputBuffer.Copy(_L8("FL CD SD"));
 #ifdef __DRM_OMA2
-                aOutputBuffer.Append(_L8(" OMADRM2"));
+                if( FeatureManager::FeatureSupported( 
+                        KFeatureIdFfOmadrm2Support ) )
+                    {
+                    aOutputBuffer.Append(_L8(" OMADRM2"));
+                    }
 #endif
                 }
             break;
--- a/omadrm/drmengine/dcf/src/Oma2Dcf.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/dcf/src/Oma2Dcf.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002 - 2009 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,7 @@
 #include <e32base.h>
 #include <f32file.h>
 #include <utf.h>
+#include <featmgr.h>
 #include <caf/caf.h>
 #include <caf/cafplatform.h>
 #include "Oma2Agent.h"
@@ -291,11 +292,24 @@
     const TDesC8& aDcfFragment )
     {
     TBool r( EFalse );
+    TInt err( KErrNone );
 
     if ( aDcfFragment.Length() >= KBrandingSize &&
         aDcfFragment.Left( KBrandingSize ).Compare( KOma2DcfBranding ) == 0 )
         {
-        r = ETrue;
+    
+        TRAP( err, FeatureManager::InitializeLibL() );
+    
+        if ( !err && FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) )
+            {
+            r = ETrue;
+            }
+        
+        if ( !err )
+            {
+            FeatureManager::UnInitializeLib();
+            }
+        
         }
     return r;
     }
--- a/omadrm/drmengine/dcfrepository/server/src/DcfRepSrv.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/dcfrepository/server/src/DcfRepSrv.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -726,7 +726,6 @@
                     {
                     aType = ENoDcf;
                     }
-
                 }
             break;
         case EStateSetTtid:
--- a/omadrm/drmengine/dm/src/DRMMessageParser.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/dm/src/DRMMessageParser.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -24,6 +24,7 @@
 #include <caf/caftypes.h>
 #include <wspdecoder.h>
 #include <wspencoder.h>
+#include <featmgr.h>
 
 #ifdef RD_MULTIPLE_DRIVE
 #include <driveinfo.h>
@@ -223,6 +224,9 @@
     Reset();
 
     User::Free( const_cast< TUint8* >( iInputBuffer.Ptr() ) );
+    
+    FeatureManager::UnInitializeLib();
+    
     }
 
 // -----------------------------------------------------------------------------
@@ -331,6 +335,9 @@
 //
 void CDRMMessageParser::ConstructL()
     {
+    
+    FeatureManager::InitializeLibL();
+    
     // Make some extra room for crazy b64decode().
     iInputBuffer.Set( reinterpret_cast< TUint8* >(
                         User::AllocL( KInputBufferSize + 2 ) ),
@@ -486,9 +493,12 @@
                 SetBit( EReadingHeaderPart );
 
                 res.Set( NULL, 0 );
-#ifndef __DRM_FULL
-                User::Leave(KErrNotSupported);
-#endif
+                
+                if ( !( FeatureManager::FeatureSupported(
+                        KFeatureIdFfOmadrm1FullSupport ) ) )
+                    {
+                    User::Leave(KErrNotSupported);
+                    }  
                 }
             else
                 {
--- a/omadrm/drmengine/drmbackup/inc/DRMBackup.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/drmbackup/inc/DRMBackup.h	Wed Sep 01 12:21:16 2010 +0100
@@ -22,7 +22,7 @@
 // INCLUDES
 
 #include <e32base.h>	// CBase
-#include <connect/abclient.h>
+#include <abclient.h>
 
 // CONSTANTS
 
--- a/omadrm/drmengine/drmbackup/src/DRMBackupObserver.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/drmbackup/src/DRMBackupObserver.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -21,7 +21,7 @@
 #include    <e32base.h>
 #include    <e32std.h>
 #include    <f32file.h>
-#include    <connect/sbdefs.h> //for KUidBackupRestoreStatus
+#include    <sbdefs.h> //for KUidBackupRestoreStatus
 #include    "DRMBackupObserver.h"
 #include    "DRMRightsServer.h"
 /*
--- a/omadrm/drmengine/group/DRMCommon.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DRMCommon.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -37,7 +37,8 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE   /epoc32/include/caf
+SYSTEMINCLUDE   /epoc32/include/libc
 
 SOURCEPATH      ../legacy/src
 SOURCE          DRMCommon.cpp
@@ -55,6 +56,7 @@
 LIBRARY         euser.lib efsrv.lib charconv.lib
 LIBRARY         apmime.lib bafl.lib estor.lib InetProtUtil.lib
 LIBRARY         caf.lib
+LIBRARY		featmgr.lib 
 
 #ifdef RD_MULTIPLE_DRIVE
 LIBRARY         platformenv.lib
--- a/omadrm/drmengine/group/DRM_BAT.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DRM_BAT.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -38,7 +38,9 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE /epoc32/include/libc
+SYSTEMINCLUDE /epoc32/include/ecom
+SYSTEMINCLUDE /epoc32/include/caf
  
 SOURCEPATH    ../tsrc
 SOURCE        DRM_BAT.cpp
--- a/omadrm/drmengine/group/DrmCrypto.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DrmCrypto.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -31,6 +31,8 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
 
 SOURCEPATH      ../utils/src
 SOURCE          Base64.cpp
--- a/omadrm/drmengine/group/DrmDcf.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DrmDcf.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -49,7 +49,7 @@
 LIBRARY         euser.lib XmlFramework.lib hash.lib
 LIBRARY         estor.lib efsrv.lib apmime.lib InetProtUtil.lib bnf.lib
 LIBRARY         cryptography.lib random.lib bafl.lib charconv.lib
-LIBRARY         centralrepository.lib
+LIBRARY         centralrepository.lib featmgr.lib
 
 #if defined(ARMCC)
 deffile ../eabi/ 
--- a/omadrm/drmengine/group/DrmKeyStorage.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DrmKeyStorage.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -30,7 +30,8 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
 
 SOURCEPATH      ../keystorage/src
 SOURCE          DrmKeyStorage.cpp
@@ -46,6 +47,7 @@
 LIBRARY         random.lib
 LIBRARY         hash.lib
 LIBRARY         flogger.lib
+LIBRARY		featmgr.lib
 
 #if defined(ARMCC)
 deffile ../eabi/ 
--- a/omadrm/drmengine/group/DrmParsers.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DrmParsers.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -40,7 +40,9 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
+SYSTEMINCLUDE   /epoc32/include/caf
 
 SOURCEPATH      ../dm/src
 SOURCE          Oma1DcfCreator.cpp
@@ -55,6 +57,7 @@
 LIBRARY         drmdcf.lib euser.lib XmlFramework.lib hash.lib
 LIBRARY         estor.lib efsrv.lib apmime.lib InetProtUtil.lib bnf.lib
 LIBRARY         cryptography.lib bafl.lib charconv.lib drmkeystorage.lib
+LIBRARY		featmgr.lib
 
 #ifdef RD_MULTIPLE_DRIVE
 LIBRARY       platformenv.lib
--- a/omadrm/drmengine/group/DrmRights.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DrmRights.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -38,7 +38,9 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
+SYSTEMINCLUDE   /epoc32/include/caf
 
 SOURCEPATH      ../ro/src
 SOURCE          DrmRights.cpp
--- a/omadrm/drmengine/group/DrmServerInterfaces.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DrmServerInterfaces.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -42,6 +42,9 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
+SYSTEMINCLUDE   /epoc32/include/caf
 
 SOURCEPATH      ../server/src
 SOURCE          DRMRightsClient.cpp
@@ -73,6 +76,7 @@
 LIBRARY         euser.lib XmlFramework.lib hash.lib
 LIBRARY         estor.lib efsrv.lib apmime.lib InetProtUtil.lib bnf.lib
 LIBRARY         cryptography.lib random.lib bafl.lib charconv.lib
+LIBRARY		featmgr.lib
 
 #if defined(ARMCC)
 deffile ../eabi/ 
--- a/omadrm/drmengine/group/DrmStdKeyStorage.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/DrmStdKeyStorage.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -30,6 +30,8 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
 
 SOURCEPATH      ../keystorage/src
 SOURCE          DrmStdKeyStorage.cpp
@@ -47,6 +49,7 @@
 LIBRARY         etel.lib
 LIBRARY	        etelmm.lib
 LIBRARY         flogger.lib
+LIBRARY		featmgr.lib
 
 #ifdef RD_MULTIPLE_DRIVE
 LIBRARY       platformenv.lib
--- a/omadrm/drmengine/group/OmaDrmAgent.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/OmaDrmAgent.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -36,7 +36,7 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE  	/epoc32/include/ecom
 
 SOURCEPATH      ../agentv2/src
 SOURCE          Oma2Agent.cpp
@@ -77,6 +77,6 @@
 LIBRARY			ws32.lib
 LIBRARY			sysutil.lib
 LIBRARY         centralrepository.lib
-LIBRARY         drmbrowserlauncher.lib
+LIBRARY		featmgr.lib
 
 SMPSAFE
--- a/omadrm/drmengine/group/ROAPHandler.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/ROAPHandler.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -39,6 +39,8 @@
 
 // Default system include paths for middleware layer modules.
 APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
 
 SOURCEPATH  ../roap/src
 
@@ -111,9 +113,9 @@
 LIBRARY     DcfRep.lib
 LIBRARY     caf.lib                     // Embedding domain ROs
 LIBRARY     cafutils.lib                // Embedding domain ROs
-LIBRARY     centralrepository.lib       // CRepository
+LIBRARY     centralrepository.lib       // Browser default AP
 LIBRARY     cmmanager.lib
-LIBRARY     extendedconnpref.lib netmeta.lib // TExtendedConnPref
+LIBRARY	    featmgr.lib
 
 LIBRARY     SysUtil.lib
 LIBRARY     HttpFilterCommon.lib
--- a/omadrm/drmengine/group/RightsServer.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/group/RightsServer.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -27,7 +27,8 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/connect
 
 USERINCLUDE     ../server/inc
 USERINCLUDE     ../agentv2/inc
--- a/omadrm/drmengine/keystorage/src/DrmStdKeyStorage.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/keystorage/src/DrmStdKeyStorage.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -25,6 +25,7 @@
 #include <x509cert.h>
 #include <etelmm.h>
 #include <mmtsy_names.h>
+#include <featmgr.h>
 
 #ifdef RD_MULTIPLE_DRIVE
 #include <driveinfo.h>
@@ -210,10 +211,17 @@
     User::LeaveIfError(iFs.Connect());
     iFileMan = CFileMan::NewL(iFs);
 
-#ifdef __DRM_OMA2
-    TRAP_IGNORE( SelectDefaultRootL() ); // Allow startup anyway.
+    FeatureManager::InitializeLibL();
+    
+#ifdef __DRM_OMA2 
+    if ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) )
+        {
+        TRAP_IGNORE( SelectDefaultRootL() );
+        }
 #endif
-
+    
+    FeatureManager::UnInitializeLib();
+    
     iDeviceSpecificKey.Copy(KDefaultKey);
 
     LOG(_L("CDrmStdKeyStorage::ConstructL <-"));
@@ -576,9 +584,7 @@
     for (i = 0; i < dir->Count(); i++)
         {
         ReadFileL(iFs, (*dir)[i].iName, cert);
-        CleanupStack::PushL( cert );
         aCertChain.AppendL(cert);
-        CleanupStack::Pop( cert );
         }
     CleanupStack::PopAndDestroy(); // dir
     LOG(_L("CDrmStdKeyStorage::GetCertificateChainL <-"));
--- a/omadrm/drmengine/legacy/src/DRMCommon.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/legacy/src/DRMCommon.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -21,6 +21,7 @@
 #include <f32file.h>
 #include <s32file.h>
 #include <apmstd.h>
+#include <featmgr.h>
 #include <wspdecoder.h>
 #include <wspencoder.h>
 
@@ -1821,7 +1822,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void DRMCommon::ConstructL()
     {
-    }
+    FeatureManager::InitializeLibL();
+    } 
 
 // -----------------------------------------------------------------------------
 // DRMCommon::NewL
@@ -1840,6 +1842,7 @@
 // Destructor
 EXPORT_C DRMCommon::~DRMCommon()
     {
+    FeatureManager::UnInitializeLib();
     }
 
 // -----------------------------------------------------------------------------
@@ -2261,7 +2264,15 @@
         DRMCommon::ESeparateDelivery |
         DRMCommon::ESuperDistribution;
 #ifdef __DRM_OMA2
-    aOMALevel = EOMA_2_0;
+    if ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) )
+        {
+        aOMALevel = EOMA_2_0;
+        }
+    else
+        {
+        aOMALevel = EOMA_1_0;
+        }
+    
 #else
     aOMALevel = EOMA_1_0;
 #endif
--- a/omadrm/drmengine/legacy/src/drmcommon.rss	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/legacy/src/drmcommon.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
--- a/omadrm/drmengine/notifier/inc/DRMMessageStorage.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/notifier/inc/DRMMessageStorage.h	Wed Sep 01 12:21:16 2010 +0100
@@ -78,7 +78,7 @@
         *  @param : aMessage - Message related to the reques
         *  @return None
         */
-        TInt AddSession( CDRMNotifierSession* aSession );
+        void AddSession( CDRMNotifierSession* aSession );
 
         /**
         *  UpdateMessage
--- a/omadrm/drmengine/notifier/src/DRMMessageStorage.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/notifier/src/DRMMessageStorage.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -94,9 +94,9 @@
 // CDRMMessageStorage::AddSession
 // -----------------------------------------------------------------------------
 //
-TInt CDRMMessageStorage::AddSession( CDRMNotifierSession* aSession ) 
+void CDRMMessageStorage::AddSession( CDRMNotifierSession* aSession ) 
     {
-    return iSessions.Append( aSession );
+    iSessions.Append( aSession );
     };
 
 // -----------------------------------------------------------------------------
@@ -218,9 +218,7 @@
         }
     else
         {
-        CleanupStack::PushL( message );
-        iMessages.AppendL ( message );
-        CleanupStack::Pop( message );
+        iMessages.Append( message );
         CleanupStack::Pop(); // message->iData;
         CleanupStack::Pop(); // eventBuf
         CleanupStack::Pop(); // message
--- a/omadrm/drmengine/notifier/src/DRMNotifierSession.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/notifier/src/DRMNotifierSession.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -142,7 +142,7 @@
 
     if( !iIsListening || iMessageQueue.Count() )
         {
-        iMessageQueue.AppendL ( aMessage );
+        iMessageQueue.Append( aMessage );
         return ETrue;
         }
     NotifyL( aMessage, EFalse );
@@ -274,9 +274,8 @@
 
     if( !iIsInStorage )
         {
-
-        User::LeaveIfError( iStorage->AddSession( this ) );
-        iIsInStorage = ETrue;        
+        iIsInStorage = ETrue;
+        iStorage->AddSession( this );
         }
 
     // Check if there are any notifications in queue if so process first one
@@ -355,7 +354,7 @@
     content->iContentID = NULL;
     content->iEventType = eventType;
 
-    iContentIDList.AppendL ( content );
+    iContentIDList.Append( content );
 
     aMessage.Complete( KErrNone );
     }
@@ -423,7 +422,7 @@
     content->iContentID = contentID;
     content->iEventType = eventType;
 
-    iContentIDList.AppendL ( content );
+    iContentIDList.Append( content );
 
     CleanupStack::Pop();
     aMessage.Complete( KErrNone );
--- a/omadrm/drmengine/ro/src/DrmRightsParser.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/ro/src/DrmRightsParser.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1113,7 +1113,7 @@
                     GetAttributeValueL( aAttributes, KIdAttribute );
                 iRights->iCurrentAsset->iIdRef =
                     GetAttributeValueL( aAttributes, KIdRefAttribute );
-                iRights->iAssets.AppendL ( iRights->iCurrentAsset );
+                iRights->iAssets.Append( iRights->iCurrentAsset );
                 break;
             case EPermissionAssetState:
                 iRights->iCurrentAsset = CParsedAsset::NewL();
@@ -1126,7 +1126,8 @@
                 break;
             case EPermissionState:
                 iRights->iCurrentPermission = CParsedPermission::NewL();
-                iRights->iPermissions.AppendL ( iRights->iCurrentPermission );
+                iRights->iPermissions.Append(
+                        iRights->iCurrentPermission );
                 iRights->iCurrentPermission->iOnExpiredUrl =
                     GetAttributeValueL( aAttributes, KOnExpiredUrlAttribute );
                 break;
--- a/omadrm/drmengine/roap/inc/RoapConnection.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/roap/inc/RoapConnection.h	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2004 Nokia Corporation and/or 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,7 @@
 
 #include <e32base.h>
 #include <es_sock.h>
+#include <commdbconnpref.h>
 
 namespace Roap
 {
@@ -85,6 +86,7 @@
         RConnection iConnection;
         TState iState;
         TRequestStatus* iParentStatus;
+        TCommDbConnPref iConnPref;
     };
 }
 
--- a/omadrm/drmengine/roap/src/RoapConnection.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapConnection.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -22,16 +22,54 @@
 #include <cmconnectionmethoddef.h>
 #include <cmmanager.h>
 #include <centralrepository.h>
-#include <extendedconnpref.h>
+#include <commdbconnpref.h>
 #include <cdblen.h>
-#include <cdbcols.h> // IAP, COMMDB_ID
 #include <es_enum.h>
+#ifdef __SERIES60_NATIVE_BROWSER
+#include <browseruisdkcrkeys.h>
+#endif
 #include "RoapConnection.h"
 #include "RoapDef.h"
 #include "RoapLog.h"
 
 
 
+#ifndef __SERIES60_NATIVE_BROWSER
+    const TUid KCRUidBrowser   = {0x10008D39};
+    const TUint32 KBrowserDefaultAccessPoint =  0x0000000E;
+    const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
+    const TUint32 KBrowserNGDefaultSnapId = 0x00000053;
+#endif
+
+
+// ================= LOCAL FUNCTIONS =========================================
+// ---------------------------------------------------------------------------
+// IapIdOfDefaultSnapL
+// for trapping purposes only
+// ---------------------------------------------------------------------------
+//
+LOCAL_C TUint32 IapIdOfDefaultSnapL(
+    RCmManager& aCmManager,
+    const TUint32 aDefaultSnap )
+    {
+    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
+    CleanupClosePushL( dest );
+    TUint32 iapIdOfDest( 0 );
+
+    if ( dest.ConnectionMethodCount() <= 0 )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
+    CleanupClosePushL( cMeth );
+
+    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
+    CleanupStack::PopAndDestroy( &cMeth );
+    CleanupStack::PopAndDestroy( &dest );
+    return iapIdOfDest;
+    }
+
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------------------------
@@ -66,6 +104,8 @@
 ( TUint32 aIap, TRequestStatus* aStatus )
     {
     LOGLIT( "CRoapConnection::ConnectL" )
+    const TInt KAlwaysAskSelectionMode( 1 );
+    const TInt KDestinationSelectionMode( 2 );
 
     if ( iState == EInit )
         {
@@ -80,9 +120,11 @@
         CleanupClosePushL<RConnection>( iConnection );
 
         TConnectionInfoBuf connInfo;
-        TUint count(0);
+        TInt ap = 0;
+        TInt alwaysAsk = 0;
+        TUint count;
         User::LeaveIfError( iConnection.EnumerateConnections( count ) );
-        TUint i(0);
+        TUint i;
         if ( count )
             {
             // Select from existing connections. Try to make AP match.
@@ -110,44 +152,71 @@
         else
             {
             // No existing connections, create new one.
-            // Create overrides
-            TConnPrefList prefList;
-            TExtendedConnPref prefs;
-
-            prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnSilent);
+#ifdef __WINS__
+            // WINS connection creation does not work if preferences are given.
+            // Defaults are to be used always.
+            iConnection.Start( iStatus );
+#else
+            // Note: the TCommDbConnPref must NOT be stack variable.
+            // It must persist until completion of RConnection::Start().
+            iConnPref.SetDirection( ECommDbConnectionDirectionOutgoing );
+            //iConnPref.SetDialogPreference( ECommDbDialogPrefWarn )
+            iConnPref.SetBearerSet( ECommDbBearerCSD | ECommDbBearerWcdma );
+            // New connection is always created with user-selected AP
+            // so 0 is used instead of aIap.
 
-            //Fetch default connection
-            TBool hasDefault(ETrue);
-            TCmDefConnValue defConn;
-            RCmManager cmManager;
-            cmManager.OpenLC();
-            cmManager.ReadDefConnL(defConn);
-            if (defConn.iType == ECmDefConnConnectionMethod)
+            TInt defaultSnap( 0 );
+            CRepository* repository( NULL );
+            repository = CRepository::NewL( KCRUidBrowser );
+            CleanupStack::PushL( repository );
+
+            repository->Get( KBrowserDefaultAccessPoint, ap);
+            repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
+            repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
+            CleanupStack::PopAndDestroy( repository );
+            repository = NULL;
+
+            TUint32 iapd32 = 0;
+            TInt err = KErrNone;
+
+            if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
                 {
-                prefs.SetIapId(defConn.iId);
-                }
-            else if (defConn.iType == ECmDefConnDestination)
-                {
-                prefs.SetSnapId(defConn.iId);
+                alwaysAsk = KAlwaysAskSelectionMode;
                 }
             else
                 {
-                hasDefault = EFalse;
+                RCmManager cmManager;
+                cmManager.OpenLC();
+                if ( !alwaysAsk )
+                    {
+                    TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
+                            ap, CMManager::ECmIapId ) );
+                    }
+                else if ( alwaysAsk == KDestinationSelectionMode )
+                    {
+                    TRAP( err, iapd32 = IapIdOfDefaultSnapL(
+                            cmManager, defaultSnap ) );
+                    }
+                CleanupStack::PopAndDestroy( &cmManager );
                 }
-            // End of fetch default connection
-            if (hasDefault)
+
+            if ( err || alwaysAsk == KAlwaysAskSelectionMode )
                 {
-                prefList.AppendL(&prefs);
-
-                // Start an Outgoing Connection with overrides
-                iConnection.Start(prefList, iStatus);
+                // Always ask
+                LOGLIT( "SetDialogPreference( ECommDbDialogPrefPrompt )" )
+                iConnPref.SetDialogPreference( ECommDbDialogPrefPrompt );
+                iapd32 = 0;
                 }
             else
                 {
-                // No default found --> trying with query
-                iConnection.Start(iStatus);
+                // User defined
+                LOGLIT( "SetDialogPreference( ECommDbDialogPrefDoNotPrompt )" )
+                iConnPref.SetDialogPreference( ECommDbDialogPrefDoNotPrompt );
                 }
-            CleanupStack::PopAndDestroy(&cmManager);
+
+            iConnPref.SetIapId( iapd32 );
+            iConnection.Start( iConnPref, iStatus );
+#endif
             iState = EConnecting;
             SetActive();    // The only path with a real async request.
             }
--- a/omadrm/drmengine/roap/src/RoapEng.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapEng.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -80,7 +80,6 @@
 #include "DcfEntry.h"
 #include "Base64.h"
 #include "drmsettingsplugininternalcrkeys.h"
-#include "buffercontainers.h"
 
 
 #define STUB_C_CLASS_IN_NAMESPACE( n, c ) namespace n { class c: public CBase { private: c(); public: virtual ~c(); }; } n::c::c() {} n::c::~c() {}
@@ -2163,7 +2162,7 @@
 #ifndef __WINS__
     TInt numPhone = 0;
     TUint32 caps = 0;
-    DRM::CNameContainer* tsyName(NULL);
+    TName tsyName;
     RMobilePhone phone;
     RTelServer etelServer;
     RTelServer::TPhoneInfo phoneInfo;
@@ -2174,20 +2173,18 @@
     CleanupClosePushL( etelServer );
 
     User::LeaveIfError( etelServer.LoadPhoneModule( KMmTsyModuleName ) );
-    User::LeaveIfError( etelServer.EnumeratePhones( numPhone ) );
+    User::LeaveIfError( etelServer.EnumeratePhones( numPhone) );
 
-    tsyName = DRM::CNameContainer::NewLC();
     for (TInt i(0); i < numPhone; i++)
         {
         User::LeaveIfError( etelServer.GetPhoneInfo( i, phoneInfo ) );
-        User::LeaveIfError( etelServer.GetTsyName( i,tsyName->iBuffer ) );
+        User::LeaveIfError( etelServer.GetTsyName( i,tsyName ) );
 
-        if ( !tsyName->iBuffer.CompareF( KMmTsyModuleName ) )
+        if ( tsyName.CompareF( KMmTsyModuleName ) == 0)
             {
             break;
             }
         }
-    CleanupStack::PopAndDestroy( tsyName );
 
     User::LeaveIfError( phone.Open( etelServer, phoneInfo.iName ) );
     CleanupClosePushL( phone );
@@ -2366,7 +2363,7 @@
             TPair pair;
             pair.iCid = aContentIDs[i];
             pair.iTtid = aTransIDs[i];
-            array.AppendL( pair );
+            array.Append( pair );
             }
 
         iDcfRep->SetTtid( array, status );
--- a/omadrm/drmengine/roap/src/RoapEngBase.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapEngBase.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -17,6 +17,7 @@
 
 
 // INCLUDE FILES
+#include <featmgr.h>
 #include <DRMRights.h>
 #include <DRMRightsClient.h>
 // #include <GenericParam.h> // from S60
@@ -50,6 +51,8 @@
     iReturnedROs.ResetAndDestroy();
     delete iDomainRightsResp;
     delete iRiAlias;
+    
+    FeatureManager::UnInitializeLib();
     }
 
 // ---------------------------------------------------------
@@ -78,6 +81,8 @@
     iImplicitJoinDomain = EFalse;
     iReRegistered = EFalse;
     iRiAlias = NULL;
+    
+    FeatureManager::InitializeLibL();
     }
 
 
@@ -94,10 +99,12 @@
     {
     LOGLIT( "CRoapEngBase::SetTriggerL" )
 
-#ifndef __DRM_OMA2
-    User::Leave(KErrNotSupported);
-#endif
-
+    if ( !( FeatureManager::FeatureSupported( 
+            KFeatureIdFfOmadrm2Support ) ) )    
+        {
+        User::Leave(KErrNotSupported);
+        }
+        
     __ASSERT_ALWAYS( iState == EInit || iState == EReady, \
         User::Invariant() );
     TBool registered = EFalse;
--- a/omadrm/drmengine/roap/src/RoapHttpHandler.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapHttpHandler.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,20 +21,16 @@
 #include <http/thttphdrval.h>
 #include <httpfiltercommonstringsext.h>
 
+#include "RoapHttpHandler.h"
+#include "RoapObserver.h"
+#include "RoapDef.h"
+#include "RoapLog.h"
+
 //#include <CookieFilterInterface.h>
 //#include <uaproffilter_interface.h>
 //#include <HttpFilterProxyInterface.h>
 #include <httpfilteriopinterface.h>
 
-#include "RoapHttpHandler.h"
-#include "RoapConnection.h"
-#include "RoapResponse.h"
-#include "RoapObserver.h"
-#include "RoapDef.h"
-#include "RoapLog.h"
-
-#include "buffercontainers.h"
-
 
 using namespace Roap;
 
@@ -43,8 +39,12 @@
 // The time out value in HTTP, 30 sec
 LOCAL_D const TInt KRoapTimeoutValue = 60000000;
 
-_LIT8( KTestUserName, "" );
-_LIT8( KTestPassword, "" );
+_LIT8( KTestUserName, "iopvf" );
+_LIT8( KTestPassword, "r72005" );
+/*
+_LIT8( KTestUserName, "moria" );
+_LIT8( KTestPassword, "mellon" );
+*/
 
 // ================= MEMBER FUNCTIONS =======================
 
@@ -564,7 +564,6 @@
             {
             LOG( _L("HTTP event ERedirectRequiresConfirmation received") );
             iTransaction.SubmitL();
-            break;
             }
 
         default:
@@ -642,13 +641,13 @@
 
         if ( iResponse->iDataType == TDataType( KMultipartRelatedType ) )
             {
-            DRM::CPathContainer* tempPath( DRM::CPathContainer::NewLC() );
-            DRM::CFileNameContainer* fileName( DRM::CFileNameContainer::NewLC() );
+            TPath tempPath;
+            TFileName fileName;
             TInt maxSize( 0 );
 
             if ( iObserver )
                 {
-                iObserver->ContentDownloadInfoL( tempPath->iBuffer, fileName->iBuffer, maxSize );
+                iObserver->ContentDownloadInfoL( tempPath, fileName, maxSize );
                 }
 
             boundaryStr = srtPool.StringF( HttpFilterCommonStringsExt::EBoundary,
@@ -667,10 +666,8 @@
                 LOG( _L("Error: multipart boundary missing") );
                    User::Leave( KErrRoapGeneral );
                 }
-            iResponse->SetDcfPathL( tempPath->iBuffer );
-            iResponse->SetContentNameL( fileName->iBuffer );
-            CleanupStack::PopAndDestroy( fileName );
-            CleanupStack::PopAndDestroy( tempPath );
+            iResponse->SetDcfPathL( tempPath );
+            iResponse->SetContentNameL( fileName );
             iReportBytes = ETrue;
 
             if ( iObserver )
--- a/omadrm/drmengine/roap/src/RoapSigner.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapSigner.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -185,9 +185,7 @@
     ptr.Copy( aResponse.Left( startPoint ) );
     ptr.Append( aResponse.Right( aResponse.Length() - endPoint ) );
 
-    CleanupStack::PushL( tempMessage );
-    iResponses.AppendL ( tempMessage );
-    CleanupStack::Pop( tempMessage );
+    iResponses.Append( tempMessage );
     iHash->Reset();
     for ( i = 0; i < iResponses.Count(); i++ )
         {
@@ -292,9 +290,7 @@
     CleanupStack::PopAndDestroy( s );
     CleanupStack::PopAndDestroy( signature );
 
-    CleanupStack::PushL( r );
-    iRequests.AppendL ( r->Des().AllocL() );
-    CleanupStack::Pop( r );
+    iRequests.Append( r->Des().AllocL() );
     return r;
     }
 
--- a/omadrm/drmengine/server/inc/DRMRightsServer.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/server/inc/DRMRightsServer.h	Wed Sep 01 12:21:16 2010 +0100
@@ -22,7 +22,7 @@
 //  INCLUDES
 #include <e32base.h>
 #include <f32file.h>
-#include <connect/abclient.h>
+#include <abclient.h>
 #include "drmcommonclientserver.h"
 #include "DRMReplayCache.h"
 #include "drmmeteringdb.h"
--- a/omadrm/drmengine/server/src/DRMRightsClient.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/server/src/DRMRightsClient.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -19,6 +19,7 @@
 // INCLUDE FILES
 #include <s32file.h>
 #include <etelmm.h>
+#include <featmgr.h>
 #include "DRMRightsClient.h"
 #include "DRMEngineClientServer.h"
 #include "DrmPermission.h"
@@ -157,11 +158,23 @@
         }
 
 #ifdef __DRM_FULL
-    // startup code, if it starts it starts if not it will be tried again.
-    RDRMHelper helper;
-    TInt ignore = helper.Connect(); // Start HelperServer
-    helper.Close();
-#endif
+    
+    TRAP( ret, FeatureManager::InitializeLibL() );
+    
+    if ( !ret && FeatureManager::FeatureSupported( KFeatureIdFfOmadrm1FullSupport ) )
+        {
+        // startup code, if it starts it starts if not it will be tried again.        
+        RDRMHelper helper;
+        TInt ignore = helper.Connect(); // Start HelperServer
+        helper.Close();
+        }
+    
+    if ( !ret )
+        {
+        FeatureManager::UnInitializeLib();
+        }
+    
+#endif        
 
     DRMLOG2( _L( "RDRMRightsClient::Connect(): Result: %d" ), ret );
 
@@ -841,9 +854,7 @@
             Mem::Copy( &roSize, ptr.Ptr()+offset, sizeof(TInt) );
             offset += sizeof (TInt);
             ro = ptr.Mid(offset, roSize).AllocL();
-            CleanupStack::PushL( ro );
-            aRoList.AppendL (ro);
-            CleanupStack::Pop( ro );
+            aRoList.Append(ro);
             offset += roSize;
             }
         CleanupStack::PopAndDestroy();
--- a/omadrm/drmengine/server/src/drmrightsdb.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmengine/server/src/drmrightsdb.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -22,6 +22,7 @@
 #include <e32def.h>     // Type definitions
 #include <hash.h>       // MD5 Algorithm
 // #include <SysUtil.h>    // Disk space checking
+#include <featmgr.h>    // Feature Manager 
 #include <f32file.h>
 #include <s32strm.h>
 #include <s32file.h>
@@ -70,8 +71,10 @@
 // LOCAL CONSTANTS AND MACROS
 #ifdef RD_MULTIPLE_DRIVE
 // Backup Directory
+#ifdef __DRM_OMA2
 _LIT( KBackupDir, "%c:\\private\\101F51F2\\backup\\" );
 #endif
+#endif
 
 
 _LIT(KJavaExtension, ".jar");
@@ -90,16 +93,8 @@
 _LIT(KCorruptionFlagFile, "invalid");
 
 #ifdef __DRM_OMA2
-const TInt KMaxUDTDataSize = 256;
-const TInt KDeviceDataSize = 256;
 const TInt KDeviceDataBlock = 128;
-#else
-const TInt KMaxUDTDataSize = 0;
-const TInt KDeviceDataSize = 0;
-const TInt KDeviceDataBlock = 0;
 #endif
-const TInt KUdtDataPos = 4 + KDeviceDataSize;
-
 
 const TInt KEncryptionKeySize = 16;
 const TInt KMaxEncryptionSize = 8192;
@@ -112,8 +107,10 @@
 // MODULE DATA STRUCTURES
 
 // LOCAL FUNCTION PROTOTYPES
+#ifdef __DRM_OMA2
 LOCAL_C void CleanupData( TAny* aPtr );
 LOCAL_C void WriteIntToBlock( TInt aValue, TDes8& aBlock, TInt aOffset );
+#endif
 LOCAL_C void DeleteObject( TAny* aObject );
 
 // FORWARD DECLARATIONS
@@ -125,6 +122,7 @@
 // Used to catch errors and delete the file if it's needed
 // -----------------------------------------------------------------------------
 //
+#ifdef __DRM_OMA2
 LOCAL_C void CleanupData( TAny* aPtr )
     {
     CDRMRightsDB* rdb = reinterpret_cast<CDRMRightsDB*>( aPtr );
@@ -140,7 +138,7 @@
     aBlock[aOffset + 2] = (aValue & 0x0000ff00) >> 8;
     aBlock[aOffset + 3] = (aValue & 0x000000ff);
     }
-
+#endif
 // ----------------------------------------------------------------------------
 // DeleteObject
 // Deletes the file by TFileName presented by aHandle
@@ -207,6 +205,9 @@
         }
 
     InitializeDatabaseL();
+    
+    FeatureManager::InitializeLibL();
+    
     };
 
 // -----------------------------------------------------------------------------
@@ -272,6 +273,8 @@
         }
 
     iMemStream.Close();
+    
+    FeatureManager::UnInitializeLib();
 
     DRMLOG( _L( "RDB Closing." ) );
     };
@@ -1155,6 +1158,16 @@
 HBufC8* CDRMRightsDB::GetUdtDataLC()
     {
 #ifdef __DRM_OMA2
+    
+    if ( ! ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
+    const TInt KMaxUDTDataSize( 256 );
+    const TInt KDeviceDataSize( 256 ); 
+    const TInt KUdtDataPos = 4 + KDeviceDataSize;
+    
     HBufC8* udtData = HBufC8::NewMaxLC( KMaxUDTDataSize );
     TFileName backupFile;
     RFile input;
@@ -1210,6 +1223,12 @@
 #endif // __DRM_OMA2
     {
 #ifdef __DRM_OMA2
+    
+    if ( ! ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
     TFileName backupFile;
     RFile input;
     HBufC8* keyData = NULL;
@@ -1445,7 +1464,10 @@
     stream.WriteInt32L( fileSize );
 
 #ifdef __DRM_OMA2
-    AddUDTDataL( stream );
+    if ( FeatureManager::FeatureSupported ( KFeatureIdFfOmadrm2Support ) )
+        {
+        AddUDTDataL( stream );
+        }
 #endif
 
     encIV.SetLength(KEncryptionKeySize);
@@ -1692,13 +1714,20 @@
 //
 void CDRMRightsDB::RestoreContentFromFileL( RFile& aBackupFile,
                                             const TDesC8& aEncryptionKey,
-                                            const TInt aMode )
+                                            const TInt aMode )																																									
     {
+	
     // RFileLogger::Write(KLogDir, KLogName, EFileLoggingModeAppend, _L8("RestoreContentFromFileL\n\r"));
     TInt8 continueMarker = 1;
     TBuf8<16> key;
     TBuf8<16> encryptionKey;
     TInt permissions = 0;
+    
+    // Default values when OMA2 DRM is not supported
+    TInt maxUDTDataSize( 0 );
+    TInt deviceDataSize( 0 );
+    TInt udtDataPos( 4 + deviceDataSize );
+    
     CDRMPermission* permission = CDRMPermission::NewLC();
     CDRMCommonData *commonData = NULL;
     CDRMPointerArray<CDRMPermission> *permissionArray = CDRMPointerArray<CDRMPermission>::NewLC();
@@ -1709,11 +1738,19 @@
     TInt size = 0;
     TInt dataLeft = 0;
     TPtr8 keyData(NULL,0,0);
-
+      
+#ifdef __DRM_OMA2    
+    if ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) )
+        {
+    		maxUDTDataSize = 256;
+    		deviceDataSize = 256; 
+    		udtDataPos = 4 + deviceDataSize;	
+    		}    
+#endif 
+ 
     // maintain knowledge about stateful rights not being restored
     TBool stateful = EFalse;
 
-
     DRMLOG( _L( "CDRMRightsDB::RestoreContentFromFileL ->" ) );
 
     // Indicate that the DB is updated
@@ -1761,7 +1798,7 @@
     // Check that the decryption works, if it doesn't then the
     // key is faulty
     User::LeaveIfError( aBackupFile.Size( readPos ) );
-    if( readPos < KUdtDataPos+KMaxUDTDataSize+(KEncryptionKeySize*2) )
+    if( readPos < udtDataPos+maxUDTDataSize+(KEncryptionKeySize*2) )
         {
           // RFileLogger::Write(KLogDir, KLogName, EFileLoggingModeAppend, _L8("RestoreContentFromFileL : corrupt\n\r"));
         User::Leave(KErrCorrupt);
@@ -1790,7 +1827,7 @@
     //-----------------------------------------------------------------------
 
     // Duplicate file handle
-    readPos = KUdtDataPos+KMaxUDTDataSize;
+    readPos = udtDataPos+maxUDTDataSize;
     User::LeaveIfError( fileHandle.Seek( ESeekStart, readPos ) );
     iMemStream.Close();
 
@@ -1887,7 +1924,6 @@
                 }
             }
 
-
         // Encrypt the key
         if( keyExists )
             {
@@ -1953,9 +1989,6 @@
             User::Leave( KErrGeneral );
             }
 
-
-
-
         if( insertPerm == -1 ) // Add everything no checks needed
             {
             for( TInt count = 0; count < permissions; count++ )
@@ -2012,7 +2045,6 @@
 
                 }
 
-
             for( TInt count = 0; count < permissions; count++ )
                 {
                 if( dataLeft < 4 )
@@ -2109,6 +2141,7 @@
         {
         User::Leave( KErrPermissionDenied );
         }
+		
     };
 
 
@@ -2262,6 +2295,13 @@
 #endif // __DRM_OMA2
     {
 #ifdef __DRM_OMA2
+    
+    if ( ! ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
+    const TInt KMaxUDTDataSize( 256 );
     TBuf8<MDrmKeyStorage::KRdbSerialNumberLength> serialNumber;
     TBuf8<KMaxUDTDataSize> buffer;
     TUint8* ptr = const_cast<TUint8*>(buffer.Ptr());
@@ -2432,6 +2472,12 @@
 void CDRMRightsDB::CreateDummyUDTFileL()
     {
 #ifdef __DRM_OMA2
+    
+    if ( ! ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
     TFileName backupFile;
     RFile input;
     TInt fileSize = 4 + 256 + 256;
@@ -2461,6 +2507,12 @@
 void CDRMRightsDB::CleanUdtData()
     {
 #ifdef __DRM_OMA2
+    
+    if ( ! ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) ) )
+        {
+        return;
+        }
+    
     TFileName backupFile;
 
 #ifndef RD_MULTIPLE_DRIVE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmhelper/group/Drmhelper.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2003-2007 Nokia Corporation and/or 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 definition file for DRMHelper
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET          DRMHelper.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101F8647
+
+CAPABILITY      CAP_GENERAL_DLL DRM
+VENDORID        VID_DEFAULT
+
+#ifdef __DRM
+SOURCE          ../src/drmhelper.cpp
+SOURCE          ../src/ConsumeData.cpp
+SOURCE          ../src/RDRMHelper.cpp
+SOURCE          ../src/DRMHelperGlobalNoteWrapper.cpp
+SOURCE          ../src/DRMHelperDownloadManager.cpp
+SOURCE          ../src/DRMHelperInfoNoteWrapper.cpp
+#else
+SOURCE          ../src/DRMHelperStub.cpp
+SOURCE          ../src/RDRMHelperStub.cpp
+SOURCE          ../src/DRMHelperGlobalNoteWrapper.cpp
+#endif
+SOURCE          ../src/DRMHelperDll.cpp
+
+START RESOURCE Drmhelper.rss
+HEADER
+TARGETPATH RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../drmengine/server/inc
+USERINCLUDE     ../../drmengine/roap/inc
+USERINCLUDE     ../../drmengine/roapstorage/inc
+USERINCLUDE        ../../../inc   // ADo level inc dir
+
+// Default system include paths for middleware layer modules.
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/ecom    // needed because of SchemeHandler
+// needed for drmhelpersecondarydisplay.h
+
+LIBRARY         euser.lib
+LIBRARY         commonengine.lib
+LIBRARY         cone.lib
+LIBRARY         flogger.lib
+LIBRARY         aknnotify.lib
+LIBRARY         apparc.lib // for launching rights mgr ui embedded
+LIBRARY         avkon.lib
+
+#ifdef __DRM
+LIBRARY         DrmParsers.lib
+LIBRARY         DrmDcf.lib
+LIBRARY         DrmRights.lib
+LIBRARY         DrmServerInterfaces.lib
+LIBRARY         DRMCommon.lib
+LIBRARY         eikdlg.lib
+LIBRARY         StarterClient.lib
+LIBRARY         efsrv.lib // for launching rights mgr ui embedded
+LIBRARY         APGRFX.lib
+LIBRARY         WS32.lib
+LIBRARY         dcfrep.lib
+LIBRARY         centralrepository.lib
+
+LIBRARY         ServiceHandler.lib
+
+LIBRARY         caf.lib
+LIBRARY         cafutils.lib
+LIBRARY         charconv.lib
+LIBRARY         ecom.lib                // for scheme handling
+LIBRARY         cmmanager.lib
+
+LIBRARY         estor.lib   // Cover Display
+LIBRARY         featmgr.lib
+
+LIBRARY         RoapHandler.lib
+LIBRARY         mediatorclient.lib
+
+#ifdef RD_MULTIPLE_DRIVE
+LIBRARY         platformenv.lib
+#endif
+
+#endif
+
+
+#if defined(ARMCC)
+deffile ../EABI/
+#elif defined( WINSCW )
+deffile ../BWINSCW/
+#elif defined( WINS )
+deffile ../bwins/
+#else
+deffile ../bmarm/
+#endif
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmhelper/group/bld.inf	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2003 - 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 definition for DRMHelper
+*
+*/
+
+
+
+PRJ_PLATFORMS
+DEFAULT -ARMI
+
+PRJ_MMPFILES
+
+DRMHelper.mmp
+
+//  End of File
+
--- a/omadrm/drmhelper/group/drmhelper.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-
-#
-# 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 = lib
-TARGET = DRMHelper
-
-IncludeBlock = \
-	"$${LITERAL_HASH}include <data_caging_paths.hrh>" \
-	"$${LITERAL_HASH}include <platform_paths.hrh>"
-
-MMP_RULES += IncludeBlock
-
-SrcIfdefBlock = \
-	"$${LITERAL_HASH}ifdef __DRM" \
-	"SOURCE          ../src/drmhelper.cpp" \
-	"SOURCE          ../src/ConsumeData.cpp" \
-	"SOURCE          ../src/RDRMHelper.cpp" \
-	"SOURCE          ../src/DRMHelperGlobalNoteWrapper.cpp" \
-	"SOURCE          ../src/DRMHelperDownloadManager.cpp" \
-	"SOURCE          ../src/DRMHelperInfoNoteWrapper.cpp" \
-	"$${LITERAL_HASH}else" \
-	"SOURCE          ../src/DRMHelperStub.cpp" \
-	"SOURCE          ../src/RDRMHelperStub.cpp" \
-	"SOURCE          ../src/DRMHelperGlobalNoteWrapper.cpp" \
-	"$${LITERAL_HASH}endif" \
-	"SOURCE          ../src/DRMHelperDll.cpp"
-
-MMP_RULES += SrcIfdefBlock
-
-symbian: { 
-	TARGET.CAPABILITY = CAP_GENERAL_DLL DRM
-	TARGET.VID = VID_DEFAULT
-	TARGET.UID3 = 0x101F8647
-	TARGET.EPOCALLOWDLLDATA = 1
-	
-	INCLUDEPATH += ../inc
-	INCLUDEPATH += ../../drmengine/server/inc
-	INCLUDEPATH += ../../drmengine/roap/inc
-	INCLUDEPATH += ../../drmengine/roapstorage/inc
-	INCLUDEPATH += ../../../inc   // ADo level inc dir
-	INCLUDEPATH += /epoc32/include/platform/mw/cwrt
-
-	#// Default system include paths for middleware layer modules.
-	INCLUDEPATH += APP_LAYER_SYSTEMINCLUDE
-
-	# needed because of SchemeHandler
-	INCLUDEPATH += /epoc32/include/ecom    
-
-	# needed for drmhelpersecondarydisplay.h
-
-	LIBS += -leuser
-	LIBS += -lcommonengine
-	LIBS += -lcone
-	LIBS += -lflogger
-	LIBS += -laknnotify
-	LIBS += -lapparc // for launching rights mgr ui embedded
-	LIBS += -lavkon
-	LIBS += -ldrmbrowserlauncher
-
-	IfdefLibBlock = \
-	"$${LITERAL_HASH}ifdef __DRM" \
-	"LIBRARY         DrmParsers.lib" \
-	"LIBRARY         DrmDcf.lib" \
-	"LIBRARY         DrmRights.lib" \
-	"LIBRARY         DrmServerInterfaces.lib" \
-	"LIBRARY         DRMCommon.lib" \
-	"LIBRARY         eikdlg.lib" \
-	"LIBRARY         StarterClient.lib" \
-	"LIBRARY         efsrv.lib // for launching rights mgr ui embedded" \
-	"LIBRARY         APGRFX.lib" \
-	"LIBRARY         WS32.lib" \
-	"LIBRARY         dcfrep.lib" \
-	"LIBRARY         centralrepository.lib" \
-	"LIBRARY         ServiceHandler.lib" \
-	"LIBRARY         caf.lib" \
-	"LIBRARY         cafutils.lib" \
-	"LIBRARY         charconv.lib" \
-	"LIBRARY         ecom.lib       // for scheme handling" \
-	"LIBRARY         cmmanager.lib" \
-	"LIBRARY         estor.lib   // Cover Display" \
-	"LIBRARY         featmgr.lib" \
-	"LIBRARY         RoapHandler.lib" \
-	"LIBRARY         mediatorclient.lib" \
-	"$${LITERAL_HASH}ifdef RD_MULTIPLE_DRIVE" \
-	"LIBRARY         platformenv.lib" \
-	"$${LITERAL_HASH}endif" \
-	"$${LITERAL_HASH}endif"
-	
-	MMP_RULES += IfdefLibBlock
-
-
-	ResourceBlock = \
-	"START RESOURCE Drmhelper.rss" \
-	"HEADER" \
-	"TARGETPATH RESOURCE_FILES_DIR" \
-	"LANGUAGE_IDS" \
-	"END"
-
-	MMP_RULES += ResourceBlock
-
-	defBlock = \
-	"$${LITERAL_HASH}if defined(ARMCC)" \
-	"DEFFILE ../eabi/" \
-	"$${LITERAL_HASH}elif defined( WINSCW )" \
-	"DEFFILE ../bwinscw/" \
-	"$${LITERAL_HASH}elif defined( WINS )" \
-	"DEFFILE ../bwins/" \
-	"$${LITERAL_HASH}else" \
-	"DEFFILE ../bmarm/" \
-	"$${LITERAL_HASH}endif"
-
-	MMP_RULES += defBlock
-	
-	MMP_RULES -= "OPTION_REPLACE ARMCC --export_all_vtbl // don't use --export_all_vtbl"
-	}
-
--- a/omadrm/drmhelper/src/drmhelper.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmhelper/src/drmhelper.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -25,6 +25,7 @@
 #include "DcfCommon.h"
 #include "DRMHelperDownloadManager.h"
 
+#include <sacls.h>
 #include <Drmhelper.rsg>
 #include <AknQueryDialog.h>
 #include <DRMCommon.h>
@@ -59,12 +60,12 @@
 
 #include <utf.h>
 
+#include <schemehandler.h> // for handling URLs
 #include "DRMHelperServer.h"
 #include "ConsumeData.h"
 #include "DRMTypes.h"
 #include "DRMClockClient.h"
 #include "DRMPointerArray.h"
-#include <drmbrowserlauncher.h>
 
 #include <SecondaryDisplay/DRMHelperSecondaryDisplay.h> // for secondary display support
 #include <AknMediatorFacade.h>
@@ -82,15 +83,25 @@
 #include "DRMRIContext.h"
 #include "DRMDomainContext.h"
 
+#include <cmconnectionmethod.h>
+#include <cmdestination.h>
+#include <cmconnectionmethoddef.h>
+#include <cmmanager.h>
+
 // publish & subrscibe
 #include <e32property.h>
 #include <PSVariables.h>
 
-
-//connectivity logic
-#include <cmconnectionmethod.h> // RCmConnectionMethod
-#include <cmdestination.h> // RCmDestination
-#include <cmmanager.h> // RCmManager
+#ifdef __SERIES60_NATIVE_BROWSER
+#include <browseruisdkcrkeys.h>
+#endif
+
+#ifndef __SERIES60_NATIVE_BROWSER
+const TUid KCRUidBrowser   = {0x10008D39};
+const TUint32 KBrowserDefaultAccessPoint =  0x0000000E;
+const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
+#endif
+
 
 // EXTERNAL DATA STRUCTURES
 
@@ -158,65 +169,32 @@
     };
 
 // ============================= LOCAL FUNCTIONS ===============================
-// -----------------------------------------------------------------------------
-// HasDefaultConnectionL
-// Finds default IAP id
-// @return Etrue: valid AP found
-//         EFalse: valid AP not found
-// @leave system wide error codes
+
+// -----------------------------------------------------------------------------
+// IapIdOfDefaultSnapL
+// for trapping purposes only
 // -----------------------------------------------------------------------------
 //
-LOCAL_C TBool HasDefaultConnectionL()
-    {
-    TBool hasDefault(EFalse);
-    TCmDefConnValue defConn;
-    RCmManager cmManager;
-    cmManager.OpenLC();
-    cmManager.ReadDefConnL(defConn);
-    if (defConn.iType == ECmDefConnConnectionMethod)
-        {
-        cmManager.GetConnectionMethodInfoIntL(defConn.iId,
-                CMManager::ECmIapId);
-        hasDefault = ETrue;
-        }
-    else if (defConn.iType == ECmDefConnDestination)
-        {
-        RCmDestination dest(cmManager.DestinationL(defConn.iId));
-        CleanupClosePushL(dest);
-
-        if (dest.ConnectionMethodCount() <= 0)
-            {
-            User::Leave(KErrNotFound);
-            }
-
-        RCmConnectionMethod cMeth(dest.ConnectionMethodL(0));
-        CleanupClosePushL(cMeth);
-
-        cMeth.GetIntAttributeL(CMManager::ECmIapId);
-        CleanupStack::PopAndDestroy(&cMeth);
-        CleanupStack::PopAndDestroy(&dest);
-        hasDefault = ETrue;
-        }
-    CleanupStack::PopAndDestroy(&cmManager);
-    return hasDefault;
-    }
-
-// -----------------------------------------------------------------------------
-// HasAccessPointsL
-// -----------------------------------------------------------------------------
-//
-LOCAL_C TBool HasAccessPointsL()
-    {
-    TInt apCount(0);
-    RCmManager cmManager;
-    CleanupClosePushL(cmManager);
-    cmManager.OpenL();
-    RArray<TUint32> aps;
-    CleanupClosePushL(aps);
-    cmManager.ConnectionMethodL(aps, EFalse, EFalse, ETrue);
-    apCount = aps.Count();
-    CleanupStack::PopAndDestroy(2, &cmManager); //aps, cmManager
-    return apCount > 0;
+LOCAL_C TUint32 IapIdOfDefaultSnapL(
+    RCmManager& aCmManager,
+    const TUint32 aDefaultSnap )
+    {
+    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
+    CleanupClosePushL( dest );
+    TUint32 iapIdOfDest( 0 );
+
+    if ( dest.ConnectionMethodCount() <= 0 )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
+    CleanupClosePushL( cMeth );
+
+    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
+    CleanupStack::PopAndDestroy( &cMeth );
+    CleanupStack::PopAndDestroy( &dest );
+    return iapIdOfDest;
     }
 
 // -----------------------------------------------------------------------------
@@ -862,6 +840,7 @@
 
     FeatureManager::UnInitializeLib();
 
+    delete iSchemeHandler;
     delete iEventProvider;
     }
 
@@ -2360,7 +2339,13 @@
     if ( buttonCode == EAknSoftkeyYes )
         {
         // check if there are any APs defined
-        TBool APs( HasAccessPointsL() );
+        RCmManager cmManager;
+        cmManager.OpenLC();
+        RArray<TUint32> aps;
+        CleanupClosePushL( aps );
+        cmManager.ConnectionMethodL( aps, EFalse, EFalse, ETrue );
+        TUint32 APs( aps.Count() );
+        CleanupStack::PopAndDestroy( 2, &cmManager ); //aps, cmManager
         if ( !APs )
             {
             // No AP defined
@@ -2445,17 +2430,43 @@
     }
 
 
-// -----------------------------------------------------------------------------
-// CDRMHelper::CheckRightsPercentL
-// Note: obsolete function name kept only
-// to avoid SC break on Helper selection logic
-// -----------------------------------------------------------------------------
-//
 TBool CDRMHelper::BrowserAPDefinedL()
     {
-    TBool apFound( EFalse );
-    TRAP_IGNORE( apFound = HasDefaultConnectionL() );
-    return apFound;
+    const TInt KDestinationSelectionMode( 2 );
+    TInt err( KErrNone );
+    TInt ap( 0 );
+    TInt alwaysAsk( 0 );
+    TInt defaultSnap( 0 );
+
+    CRepository* repository( CRepository::NewL( KCRUidBrowser ) );
+    repository->Get( KBrowserDefaultAccessPoint, ap );
+    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
+    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
+    delete repository;
+    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
+        {
+        alwaysAsk = ETrue;
+        }
+    else
+        {
+        RCmManager cmManager;
+        cmManager.OpenLC();
+        if ( !alwaysAsk )
+            {
+            TRAP( err, cmManager.GetConnectionMethodInfoIntL(
+                    ap, CMManager::ECmIapId ) );
+            }
+        else if ( alwaysAsk == KDestinationSelectionMode )
+            {
+            TRAP( err, IapIdOfDefaultSnapL( cmManager, defaultSnap ) );
+            }
+        CleanupStack::PopAndDestroy( &cmManager );
+        if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
+            {
+            return ETrue;
+            }
+        }
+    return EFalse;
     }
 
 
@@ -3616,9 +3627,9 @@
         {
         ptr[index++] = ( unsigned char ) (*aUrl)[i];
         }
-
+    
     ptr[index] = ( unsigned char ) KMarker()[0];
-
+    
     CleanupStack::PopAndDestroy( localIDBuf );
     }
 
@@ -5548,14 +5559,25 @@
             i = 0;
             }
 
-				// convert given URL to QUrl format
-				DRM::CDrmBrowserLauncher* browserLauncher = DRM::CDrmBrowserLauncher::NewLC();
-    	
-		    browserLauncher->LaunchUrlL(ptr);
-    
-    		CleanupStack::PopAndDestroy(); // browserLauncher
-
-        
+        CSchemeHandler* schemeHandler( CSchemeHandler::NewL( ptr.Mid( i ) ) );
+        CleanupStack::PushL( schemeHandler );
+        if ( iUseCoeEnv )
+            {
+            // launch embedded
+            schemeHandler->Observer( this );
+            schemeHandler->HandleUrlEmbeddedL();
+            CleanupStack::Pop( schemeHandler );
+            iSchemeHandler = schemeHandler;
+            iWait.Start();
+            }
+        else
+            {
+            // no CoeEnv, launch standalone with scheme app
+            schemeHandler->HandleUrlStandaloneL();
+            CleanupStack::PopAndDestroy( schemeHandler );
+            }
+        schemeHandler = NULL;
+
         // delete newUrl if needed
         if ( newUrl )
             {
@@ -5585,7 +5607,7 @@
 
         CAknLaunchAppService* launchAppService =
             CAknLaunchAppService::NewL( KUidDRMUI, this, paramList );
-
+        
         CleanupStack::PushL( launchAppService );
         iWait.Start();
 
@@ -7011,21 +7033,27 @@
 EXPORT_C TInt CDRMHelper::SupportedDRMMethods2(
     TInt& aDRMMethod, TDRMHelperOMALevel& aOMALevel)
     {
-#ifndef __DRM_FULL
-    aDRMMethod = CDRMHelper::EForwardLock;
-#else
-    aDRMMethod =
-        CDRMHelper::EForwardLock |
-        CDRMHelper::ECombinedDelivery |
-        CDRMHelper::ESeparateDelivery |
-        CDRMHelper::ESuperDistribution;
+    if ( !( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm1FullSupport ) ) )
+        {
+        aDRMMethod = CDRMHelper::EForwardLock;
+        }
+    else
+        {
+        aDRMMethod =
+                CDRMHelper::EForwardLock |
+                CDRMHelper::ECombinedDelivery |
+                CDRMHelper::ESeparateDelivery |
+                CDRMHelper::ESuperDistribution;
+        aOMALevel = EOMA_1_0;
+        }
+    
 #ifdef __DRM_OMA2
-    aOMALevel = EOMA_2_0;
-#else
-    aOmaLevel = EOMA_1_0;
+    if ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) )
+        {
+        aOMALevel = EOMA_2_0;
+        }
 #endif // __DRM_OMA2
 
-#endif // __DRM_FULL
     return KErrNone;
     }
 
@@ -7036,11 +7064,17 @@
 //
 void CDRMHelper::HandleServerAppExit( TInt aReason )
     {
-    if ( aReason == EAknCmdExit )
+    if ( aReason == EAknCmdExit && !iSchemeHandler )
         {
         CAknEnv::RunAppShutter();
         }
 
+    if ( iSchemeHandler )
+        {
+        delete iSchemeHandler;
+        iSchemeHandler = NULL;
+        }
+
     if ( iWait.IsStarted() )
         {
         iWait.AsyncStop();
--- a/omadrm/drmlicensemanager/group/DRMLicenseChecker.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmlicensemanager/group/DRMLicenseChecker.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -26,6 +26,7 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
 
 USERINCLUDE     ../inc
 USERINCLUDE         ../../../inc   // ADo level inc dir
--- a/omadrm/drmlicensemanager/group/DRMLicenseManager.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmlicensemanager/group/DRMLicenseManager.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -26,6 +26,7 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
 
 USERINCLUDE     ../inc
 USERINCLUDE     ../../../inc   // ADo level inc dir
--- a/omadrm/drmlicensemanager/group/drm_lm_bat.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmlicensemanager/group/drm_lm_bat.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -23,6 +23,7 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
 
 USERINCLUDE     ../inc
 USERINCLUDE     ../../../inc   // ADo level inc dir
--- a/omadrm/drmplugins/drmfilter/group/HTTPFilterDRM.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmfilter/group/HTTPFilterDRM.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -35,7 +35,7 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE /epoc32/include/ecom
 
 
 SOURCEPATH ../data
@@ -46,6 +46,7 @@
 END
 
 LIBRARY euser.lib ecom.lib http.lib bafl.lib estlib.lib efsrv.lib estor.lib cone.lib commonui.lib caf.lib
+LIBRARY featmgr.lib
 
 #ifndef __DRM_NO_BB
 MACRO BLOCK_BY_BLOCK
--- a/omadrm/drmplugins/drmfilter/src/HTTPFilterDRM.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmfilter/src/HTTPFilterDRM.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * 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"
@@ -217,7 +217,7 @@
 
 //------------------------------------------------------------------------
 // CHTTPFilterDRM::MHFRunL
-// See MHTTPFilterBase::MHFRunL
+// See MHTTPFilterBase::MHFRunL 
 //------------------------------------------------------------------------
 //
 void CHTTPFilterDRM::MHFRunL( RHTTPTransaction aTransaction,
@@ -320,7 +320,7 @@
         case KErrCANoRights:
         case KErrCorrupt:
             {
-            error = NW_STAT_FAILURE; //Unable to perform operation
+            error = NW_STAT_FAILURE; //Unable to perform operation   
             }
             break;
         case KErrArgument:
@@ -461,10 +461,10 @@
 // CHTTPFilterDRM::CheckHeadersL
 // Check HTTP headers and extract MIME type
 //------------------------------------------------------------------------
-//
+// 
 void CHTTPFilterDRM::CheckHeadersL( const RHTTPTransaction& aTrans )
     {
-    // read the header data and check the MIME type here
+    // read the header data and check the MIME type here    
     // check the status and body
     RHTTPResponse response = aTrans.Response();
     TInt status = response.StatusCode();
@@ -512,17 +512,14 @@
                 drmData = CHTTPFilterDRMDataSupplier::NewL( aTrans.Id(),
                     response.Body(), const_cast<CHTTPFilterDRM*> ( this ) );
                 /** Support for Hutchinson's content protection scheme, CFM
-                 *
+                 *  
                  */
                 drmData->SetProcessedContentType( EStandardDRMContent );
                 /**
                  *
                  */
-                CleanupStack::PushL( drmData );
-                iDataSups.AppendL ( drmData );
-                CleanupStack::Pop( drmData );
+                iDataSups.Append( drmData );
                 response.SetBody( *drmData );
-                
 
                 // change the mime type to "application/vnd.oma.drm.content"
                 headers.RemoveField( fieldNameStr );
@@ -569,9 +566,7 @@
                         = CHTTPFilterDRMDataSupplier::NewL( aTrans.Id(),
                             response.Body(),
                             const_cast<CHTTPFilterDRM*> ( this ) );
-                    CleanupStack::PushL( drmData );
-                    iDataSups.AppendL ( drmData );
-                    CleanupStack::Pop( drmData );
+                    iDataSups.Append( drmData );
                     }
 
                 }
@@ -635,7 +630,7 @@
         // Do not encrypt JAD files:
         if ( headers.GetField( fieldNameStr, 0, fieldVal ) == KErrNone )
             {
-            // If it is a JAD always ignore any of the above:
+            // If it is a JAD always ignore any of the above:   
             const TBuf8<sizeof( KJADString )> JADStringBuf( KJADString );
             RStringF JADValue = strP.OpenFStringL( JADStringBuf );
             CleanupClosePushL( JADValue );
@@ -667,13 +662,10 @@
                 User::Leave( KErrUnknown );
                 }
 
-            CleanupStack::PushL( drmData );
-            iDataSups.AppendL ( drmData );
-            CleanupStack::Pop( drmData );
-                
+            iDataSups.Append( drmData );
             response.SetBody( *drmData );
 
-            ///
+            ///         
             RStringF DRMValue1 = strP.OpenFStringL( DRMStringBuf1 );
             CleanupClosePushL( DRMValue1 );
 
--- a/omadrm/drmplugins/drmfilter/src/HTTPFilterDRMDataSupplier.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmfilter/src/HTTPFilterDRMDataSupplier.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -20,6 +20,7 @@
 #include <DRMCommon.h>
 #include <f32file.h>
 #include <s32buf.h>
+#include <featmgr.h>
 #include <DRMMessageParser.h>
 #include <caf/caf.h>
 #include <caf/cafplatform.h>
@@ -30,7 +31,10 @@
 
 //------------------------------------------------------------------------
 
+#ifdef __DRM_FULL
 const TInt KMinContentSizeToGetTheURI = 520;
+#endif
+
 const TInt KDefaultSize( 2048 );
 const TInt KWholeDataPart( -1 );
 
@@ -110,6 +114,8 @@
     Attach( iMemBuf );
 
     iDRMMessageParser->InitializeMessageParserL( *this );
+    
+    FeatureManager::InitializeLibL();
 
     }
 
@@ -131,6 +137,9 @@
 
     iDRMOma1DcfCreator = COma1DcfCreator::NewL();
     Attach( iMemBuf );
+    
+    FeatureManager::InitializeLibL();
+    
     }
 
 // -----------------------------------------------------------------------------
@@ -183,6 +192,9 @@
         delete iDRMOma1DcfCreator;
         iDRMOma1DcfCreator = NULL;
         }
+    
+    FeatureManager::UnInitializeLib();
+    
     }
 
 // -----------------------------------------------------------------------------
@@ -456,6 +468,13 @@
 #ifdef __DRM_FULL
 void CHTTPFilterDRMDataSupplier::SetEstimatedArrivalTime( TInt aXOmaHeaderVal )
     {
+    
+    if ( !( FeatureManager::FeatureSupported( 
+            KFeatureIdFfOmadrm1FullSupport ) ) )
+        {
+        return;
+        }
+    
     // get the data part
     ContentAccess::CManager* manager = NULL;
     ContentAccess::TAgent agent;
--- a/omadrm/drmplugins/drmrecognizer/group/RecDRM.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmrecognizer/group/RecDRM.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -32,7 +32,7 @@
 
 // Default system include paths for middleware layer modules.
 MW_LAYER_SYSTEMINCLUDE
-
+systeminclude	/epoc32/include/ecom
 
 source		RecDRM.cpp
 
@@ -47,5 +47,6 @@
 
 library		EUSER.LIB	
 library		APMIME.LIB
+library		featmgr.lib
 
 SMPSAFE
--- a/omadrm/drmplugins/drmrecognizer/src/101F51F4.RSS	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmrecognizer/src/101F51F4.RSS	Wed Sep 01 12:21:16 2010 +0100
@@ -16,7 +16,7 @@
 */
 
 
-#include <ecom/registryinfo.rh>
+#include <registryinfo.rh>
 RESOURCE REGISTRY_INFO r_registry
 {
 	dll_uid = 0x101F51F4; 		
--- a/omadrm/drmplugins/drmrecognizer/src/RecDRM.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmrecognizer/src/RecDRM.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -21,6 +21,7 @@
 #include <apmstd.h>
 #include <ecom/ecom.h>
 #include <ecom/implementationproxy.h>
+#include <featmgr.h>
 
 #include "RecDRM.h"
 
@@ -39,6 +40,8 @@
 const TInt KMaxBufferLength=256;
 
 const TInt KDCFHeaderLength=3;
+
+#ifdef DRM_OMA2_ENABLED
 const TInt KLengthBoxSize = 4;
 const TInt KLengthBoxType = 4;
 const TInt KLengthBoxSize64 = 8;
@@ -50,6 +53,7 @@
 _LIT8(KRoapTriggerElement, "roap-trigger:roapTrigger"); // before OMA spec CR, ROAP Trigger namespace prefix was roap-trigger
 _LIT8(KRoapTriggerElement2, "roap:roapTrigger");
 _LIT8(KRoapTriggerType, "application/vnd.oma.drm.roap-trigger+xml");
+#endif
 
 const TImplementationProxy ImplementationTable[] =
         {
@@ -89,12 +93,14 @@
 
 CApaDRMRecognizer::~CApaDRMRecognizer()
 {
+    FeatureManager::UnInitializeLib();
 }
 
 
 CApaDataRecognizerType* CApaDRMRecognizer::CreateRecognizerL()
 {
-    return new (ELeave) CApaDRMRecognizer ();
+    FeatureManager::InitializeLibL();
+	return new (ELeave) CApaDRMRecognizer ();
 }
 
 
@@ -131,22 +137,25 @@
 #endif
 
 #ifdef DRM_OMA2_ENABLED
-    // Recognize ROAP Trigger
-    if ( RecognizeRoapTrigger( aBuffer ) )
-        {
-        return;
-        }
-
-    // Recognize DCFv2
-    if ( RecognizeODF( aBuffer ) )
-        {
-        return;
-        }
-#endif
-    // Recognize DCFv1
-    TUint8 version = aBuffer[0];
-    TUint8 contentTypeLen = aBuffer[1];
-    TUint8 contentURILen = aBuffer[2];
+	if( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) )
+	    {    
+        // Recognize ROAP Trigger
+        if ( RecognizeRoapTrigger( aBuffer ) )
+            {
+            return;
+            }
+	
+        // Recognize DCFv2    
+        if ( RecognizeODF( aBuffer ) )
+            {
+            return;
+            }
+	    }
+#endif	
+	// Recognize DCFv1
+	TUint8 version = aBuffer[0];
+	TUint8 contentTypeLen = aBuffer[1];
+	TUint8 contentURILen = aBuffer[2];
 
     if ( contentTypeLen < KMinContentTypeLen || contentURILen == 0 )
     {
@@ -177,6 +186,12 @@
 #ifdef DRM_OMA2_ENABLED
 TBool CApaDRMRecognizer::RecognizeRoapTrigger( const TDesC8& aBuffer )
 {
+        if( ! ( FeatureManager::FeatureSupported( 
+                KFeatureIdFfOmadrm2Support ) ) )
+            {
+            return EFalse;
+            }
+        
         if ( aBuffer.FindF( KRoapTriggerElement() ) != KErrNotFound
              || aBuffer.FindF( KRoapTriggerElement2() ) != KErrNotFound )
         {
@@ -189,54 +204,61 @@
 
 TBool CApaDRMRecognizer::RecognizeODF( const TDesC8& aBuffer )
 {
-    if ( aBuffer.Size() < 24 ) return EFalse;
-    TPtrC8 ftypPrefix = aBuffer.Mid( 4, KFTypPrefix().Length() );
-    if ( KFTypPrefix().CompareF( ftypPrefix ) == KErrNone )
-    {
-        TPtrC8 odfPrefix = aBuffer.Mid( 8, KODFPrefix().Length() );
-        if ( KODFPrefix().CompareF( odfPrefix ) == KErrNone )
+    
+    if( ! ( FeatureManager::FeatureSupported(
+            KFeatureIdFfOmadrm2Support ) ) )
         {
-            TBuf8<4> buffer;
-            TUint32 size;
-            TPtr8 ptr(NULL, 0);
-            TUint32 offset(20);
-
-            // ODRM box header
-            buffer.Zero();
-            buffer.Copy( aBuffer.Mid( offset, 4 ));
-            size = ReadUint32FromBlock( buffer, 0 );
-            offset += KLengthBoxSize + KLengthBoxType + KLengthVersion + KLengthFlags;
-
-            if (size == 1)
-            {
-                offset += KLengthBoxSize64;
-            }
-            if ( aBuffer.Size() < offset+4 ) return EFalse;
-
-            // Discrete headers box header
-            buffer.Zero();
-            buffer.Copy( aBuffer.Mid( offset, 4 ));
-            size = ReadUint32FromBlock( buffer, 0 );
-            offset += KLengthBoxSize + KLengthBoxType + KLengthVersion + KLengthFlags;
-            if ( size == 1 )
-            {
-                offset += KLengthBoxSize64;
-            }
-            if ( aBuffer.Size() < offset+1 ) return EFalse;
-
-            // Content type
-            buffer.Zero();
-            buffer.Copy( aBuffer.Mid( offset, 1 ));
-            if ( aBuffer.Size() < offset + 1 + buffer[0] ) return EFalse;
-            TPtrC8 mimeType = aBuffer.Mid( offset+1, buffer[0] );
-
-            iConfidence = ECertain;
-            iDataType=TDataType( mimeType );
-            return ETrue;
+        return EFalse;
         }
-
-    }
-    return EFalse;
+    
+	if ( aBuffer.Size() < 24 ) return EFalse;
+	TPtrC8 ftypPrefix = aBuffer.Mid( 4, KFTypPrefix().Length() );
+	if ( KFTypPrefix().CompareF( ftypPrefix ) == KErrNone )
+	{
+		TPtrC8 odfPrefix = aBuffer.Mid( 8, KODFPrefix().Length() );
+		if ( KODFPrefix().CompareF( odfPrefix ) == KErrNone )
+		{
+			TBuf8<4> buffer;
+    		TUint32 size;
+    		TPtr8 ptr(NULL, 0);
+    		TUint32 offset(20);
+    
+    		// ODRM box header
+    		buffer.Zero();
+    		buffer.Copy( aBuffer.Mid( offset, 4 ));
+    		size = ReadUint32FromBlock( buffer, 0 );
+    		offset += KLengthBoxSize + KLengthBoxType + KLengthVersion + KLengthFlags;
+    		
+    		if (size == 1)
+        	{
+        		offset += KLengthBoxSize64;
+        	}
+    		if ( aBuffer.Size() < offset+4 ) return EFalse;
+    		
+    		// Discrete headers box header
+    		buffer.Zero();
+    		buffer.Copy( aBuffer.Mid( offset, 4 ));
+    		size = ReadUint32FromBlock( buffer, 0 );
+    		offset += KLengthBoxSize + KLengthBoxType + KLengthVersion + KLengthFlags;
+    		if ( size == 1 )
+        	{
+        		offset += KLengthBoxSize64;
+        	}
+    		if ( aBuffer.Size() < offset+1 ) return EFalse;
+    		
+    		// Content type
+    		buffer.Zero();
+    		buffer.Copy( aBuffer.Mid( offset, 1 ));
+    		if ( aBuffer.Size() < offset + 1 + buffer[0] ) return EFalse;
+    		TPtrC8 mimeType = aBuffer.Mid( offset+1, buffer[0] );
+   			
+   			iConfidence = ECertain;
+			iDataType=TDataType( mimeType );
+			return ETrue;
+		}
+		
+	}
+	return EFalse;
 }
 #endif
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmplugins/drmrohandler/group/bld.inf	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2002 - 2007 Nokia Corporation and/or 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:  Information required for building the required abld.bat
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../loc/rohandler.loc MW_LAYER_LOC_EXPORT_PATH( rohandler.loc )
+
+PRJ_MMPFILES
+
+#ifdef __DRM_FULL
+CRohandler.mmp
+#endif
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmplugins/drmrohandler/group/crohandler.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2002-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 is project specification file for the rohandler.dll
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+TARGET          RoHandler.dll
+targettype      PLUGIN
+VENDORID        VID_DEFAULT
+// uid2 specifies an ECom dll
+// uid3 specifies a unique identifier
+UID             0x10009D8D 0x101F7B92
+CAPABILITY      CAP_ECOM_PLUGIN DRM
+
+SOURCEPATH      ../src
+SOURCE          CRoHandler.cpp
+SOURCE          StringResourceReader.cpp
+SOURCE          rohandlerdmgrwrapper.cpp
+
+START RESOURCE  101F7B92.rss
+TARGET          RoHandler
+
+END
+
+#include <data_caging_paths.hrh>
+
+START RESOURCE RoHandler.rss
+HEADER
+TARGETPATH      RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END
+
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../../drmengine/roap/inc
+USERINCLUDE     ../../drmromtm/client/inc
+USERINCLUDE     ../../../../inc   // ADo level inc dir
+
+// Default system include paths for middleware layer modules.
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY         DrmParsers.lib
+LIBRARY         DrmDcf.lib
+LIBRARY         DrmRights.lib
+LIBRARY         DrmServerInterfaces.lib
+LIBRARY         drmroapwbxmlparser.lib // ROAP Wbxml to XML parsers
+
+LIBRARY         centralrepository.lib       // Browser default AP
+LIBRARY         cmmanager.lib
+LIBRARY         DownloadMgr.lib
+
+LIBRARY         euser.lib
+LIBRARY         ecom.lib
+LIBRARY         RoapHandler.lib
+LIBRARY         WapPushUtils.lib
+LIBRARY         msgs.lib        // for MMsvSessionObserver
+
+LIBRARY         efsrv.lib // RFs
+LIBRARY         inetprotutil.lib // TUri16 and so on
+LIBRARY         bafl.lib // RResourceFile
+LIBRARY         flogger.lib
+LIBRARY         sysutil.lib // SysUtil
+LIBRARY         esock.lib
+LIBRARY		featmgr.lib // Feature Manager
+
+#ifdef RD_MULTIPLE_DRIVE
+LIBRARY         platformenv.lib
+#endif
+
+SMPSAFE
--- a/omadrm/drmplugins/drmrohandler/group/rohandler.pri	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# 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 is project specification file for the rohandler.dll
-#
-
-# Input
-HEADERS +=	../inc/CRoHandler.h \
-			../inc/RoHandlerStringResourceReader.h \
-			../inc/rohandlerdmgrwrapper.h \
-			../inc/qrohandlerdmgreventhandler.h
-
-SOURCES +=	../src/CRoHandler.cpp \
-			../src/RoHandlerStringResourceReader.cpp \
-			../src/rohandlerdmgrwrapper.cpp \
-			../src/qrohandlerdmgreventhandler.cpp
-
--- a/omadrm/drmplugins/drmrohandler/group/rohandler.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#
-# 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 is project specification file for the rohandler.dll
-#
-
-include ( rohandler.pri )
-
-IncludeBlock = \
-	"$${LITERAL_HASH}include <platform_paths.hrh>" \
-	"$${LITERAL_HASH}include <data_caging_paths.hrh>" 
-
-MMP_RULES += IncludeBlock
-
-TEMPLATE = lib
-TARGET = RoHandler
-MMP_RULES += "TARGETTYPE plugin"
-
-symbian: { 
-	TARGET.CAPABILITY = CAP_ECOM_PLUGIN DRM
-	TARGET.VID = VID_DEFAULT
-	TARGET.UID2 = 0x10009D8D
-	TARGET.UID3 = 0x101F7B92
-	TARGET.EPOCALLOWDLLDATA = 1
-	INCLUDEPATH += ../inc
-	INCLUDEPATH += ../../../drmengine/roap/inc
-	INCLUDEPATH += ../../drmromtm/client/inc
-	INCLUDEPATH += ../../../../inc   // ADo level inc dir
-	INCLUDEPATH += /epoc32/include/platform/mw/cwrt
-
-	LIBS += -lDrmParsers
-	LIBS += -lDrmDcf 
-	LIBS += -lDrmRights 
-	LIBS += -lDrmServerInterfaces
-	LIBS += -ldrmroapwbxmlparser // ROAP Wbxml to XML parsers
-	LIBS += -lcentralrepository // Browser default AP
-	LIBS += -lcmmanager
-	LIBS += -lWrtDownloadMgr
-	LIBS += -leuser
-	LIBS += -lecom
-	LIBS += -lRoapHandler
-	LIBS += -lWapPushUtils
-	LIBS += -lmsgs // for MMsvSessionObserver
-
-	LIBS += -lefsrv
-	LIBS += -linetprotutil // TUri16 and so on
-	LIBS += -lbafl // RResourceFile
-	LIBS += -lflogger
-	LIBS += -lsysutil // SysUtil
-	LIBS += -lesock
-
-	ResourceBlock1 = \
-	"START RESOURCE 101F7B92.rss" \
-	"TARGET RoHandler" \
-	"END"
-
-	ResourceBlock2 = \
-	"START RESOURCE RoHandler.rss" \
-	"HEADER" \
-	"TARGETPATH RESOURCE_FILES_DIR" \
-	"LANGUAGE_IDS" \
-	"END"
-
-	MMP_RULES += ResourceBlock1
-	MMP_RULES += ResourceBlock2
-
-	IfdefLibBlock = \
-	"$${LITERAL_HASH}ifdef RD_MULTIPLE_DRIVE" \
-	"LIBRARY platformenv.lib" \
-	"$${LITERAL_HASH}endif"
-
-	MMP_RULES += IfdefLibBlock
-
-	MWIncPath = \
-		"// Default system include paths for middleware layer modules." \
-		"MW_LAYER_SYSTEMINCLUDE" \
-
-	MMP_RULES += MWIncPath
-
-	SMPSafeBlock = "SMPSAFE"
-
-	MMP_RULES += SMPSafeBlock
-
-	BLD_INF_RULES.prj_exports += "../loc/rohandler.loc MW_LAYER_LOC_EXPORT_PATH( rohandler.loc )"
-
-	defBlock = " "
-
-	MMP_RULES += defBlock
-
-	
-	}
-
--- a/omadrm/drmplugins/drmrohandler/inc/CRoHandler.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmrohandler/inc/CRoHandler.h	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2008 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"
@@ -239,8 +239,9 @@
                                         // initialised at instantiation
         DRM::CWbxmlRoapTriggerParser* iWbxmlTriggerParser;
         HBufC8* iParsedXmlTrigger;
-        TBool iPutRightsToInbox;         // whether received RO is put into Inbox as an
+        TBool iPutRightsToInbox;        // whether received RO is put into Inbox as an
                                         // entry or not. Initialized at instantiation.
+        TBool iFeatureManagerFound;     // Feature Manager is succesfully initialized
                                         
     };
 
--- a/omadrm/drmplugins/drmrohandler/inc/RoHandlerStringResourceReader.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* 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:
-*      Declaration of CRoHandlerStringResourceReader.
-*
-*
-*/
-
-
-#ifndef ROHANDLERSTRINGRESOURCEREADER_H
-#define ROHANDLERSTRINGRESOURCEREADER_H
-
-// INCLUDE FILES
-
-#include <e32base.h>
-#include <e32std.h>
-#include <barsc.h>
-
-// FORWARD DECLARATIONS
-
-class RFs;
-
-// CLASS DECLARATION
-
-/**
-* Utility class that helps reading string resources without CONE.
-* Not intended for derivation.
-*/
-class CRoHandlerStringResourceReader : public CBase
-    {
-    public: // Constructors and destructor
-
-        CRoHandlerStringResourceReader( RFs& aFs, const TDesC& aRscFileWithPathAndDrive );
-
-        ~CRoHandlerStringResourceReader();
-
-    public: // New functions
-
-        /**
-        * Return a given string from resource.
-        * @param aResId Resource ID.
-        * @return See above.
-        */
-        HBufC* AllocReadResourceL( TInt aResId );
-
-    private: // New functions
-
-        void InitializeL();
-
-    private: // Data members
-
-        RFs& iFs;                ///< File server session.
-        TBuf<256> iRscFileName;
-        RResourceFile iResourceFile;
-        TBool iInitialized;
-    };
-
-#endif // ROHANDLERSTRINGRESOURCEREADER_H
-
-// End of file.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmplugins/drmrohandler/inc/StringResourceReader.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 CStringResourceReader.
+*      
+*
+*/
+
+
+#ifndef STRINGRESOURCEREADER_H
+#define STRINGRESOURCEREADER_H
+
+// INCLUDE FILES
+
+#include <e32base.h>
+#include <e32std.h>
+#include <barsc.h>
+
+// FORWARD DECLARATIONS
+
+class RFs;
+
+// CLASS DECLARATION
+
+/**
+* Utility class that helps reading string resources without CONE.
+* Not intended for derivation.
+*/
+class CStringResourceReader : public CBase
+    {
+    public: // Constructors and destructor
+
+        CStringResourceReader( RFs& aFs, const TDesC& aRscFileWithPathAndDrive );
+
+        ~CStringResourceReader();
+
+    public: // New functions
+
+        /**
+        * Return a given string from resource.
+        * @param aResId Resource ID.
+        * @return See above.
+        */
+        HBufC* AllocReadResourceL( TInt aResId );
+
+    private: // New functions
+
+        void InitializeL();
+
+    private: // Data members
+
+        RFs& iFs;                ///< File server session.
+        TBuf<256> iRscFileName;
+        RResourceFile iResourceFile;
+        TBool iInitialized;
+    };
+
+#endif // STRINGRESOURCEREADER_H
+
+// End of file.
--- a/omadrm/drmplugins/drmrohandler/inc/qrohandlerdmgreventhandler.h	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-#ifndef QROHANDLERDMGREVENTHANDLER_H
-#define QROHANDLERDMGREVENTHANDLER_H
-
-#include <qobject.h>
-
-namespace WRT
-	{
-	class Download;
-	class DownloadEvent; 
-	}
-
-class CRoHandlerDMgrWrapper;
-
-class QRoHandlerDMgrEventHandler : public QObject
-	{
-	Q_OBJECT
-	
-	public:
-	QRoHandlerDMgrEventHandler( CRoHandlerDMgrWrapper& aRoHandlerDMgrWrapper , WRT::Download& aDownload );
-	
-	private slots:
-		/**
-		* Handle download manager events
-		*
-		* @param aEvent the event
-		*/
-		void HandleDownloadEventL( WRT::DownloadEvent* aEvent );
-		
-	private:
-		WRT::Download& iDownload;
-		CRoHandlerDMgrWrapper& iRoHandlerDMgrWrapper;
-	
-	};
-
-#endif // QROHANDLERDMGREVENTHANDLER_H
-
--- a/omadrm/drmplugins/drmrohandler/inc/rohandlerdmgrwrapper.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmrohandler/inc/rohandlerdmgrwrapper.h	Wed Sep 01 12:21:16 2010 +0100
@@ -19,23 +19,25 @@
 #ifndef ROHANDLERDMGRWRAPPER_H
 #define ROHANDLERDMGRWRAPPER_H
 
-#include <e32base.h>
-#include <f32file.h>
-
-#include <RoapObserver.h>
-#include <RoapEng.h>
-
-#include <qobject.h>
-#include <downloadmanager.h>
-#include <download.h>
+namespace Roap
+    {
+    class MRoapObserver;
+    }
 
 class CDRMRights;
-class QRoHandlerDMgrEventHandler;
+
+class MHttpDownloadMgrObserver;
 
 class MRoHandlerDMgrWrapper
     {
+
 public:
     virtual void HandleRoapTriggerL( const TDesC8& aTrigger ) = 0;
+
+    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl ) = 0;
+
+    virtual void DownloadAndHandleRoapTriggerFromPrUrlL( const HBufC8* aUrl ) = 0;
+
     };
 
 /**
@@ -44,6 +46,7 @@
 */
 class CRoHandlerDMgrWrapper:
     public CActive, // Now active
+    public MHttpDownloadMgrObserver,
     public Roap::MRoapObserver,
     public MRoHandlerDMgrWrapper
     {
@@ -75,6 +78,23 @@
     */
     void HandleRoapTriggerL( const TDesC8& aTrigger );
 
+    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
+
+    void DownloadAndHandleRoapTriggerFromPrUrlL( const HBufC8* aUrl );
+
+
+// from base class MHttpDownloadMgrObserver
+
+    /**
+    * From MHttpDownloadMgrObserver.
+    * Handle download manager events
+    *
+    * @since S60 3.2
+    * @param aDownload the download
+    * @param aEvent the event
+    */
+    void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+
 // From Roap::MRoapObserver
     /**
     * ConnectionConfL
@@ -201,13 +221,6 @@
     * @leave  System wide error code */
     void PostResponseUrlL( const TDesC8& aPostResponseUrl );
 
-    /**
-	* Handle download manager events
-	*
-	* @param aEvent the event
-	*/
-	void HandleDownloadEventL( WRT::DownloadEvent* aEvent );
-
 protected:
     //from Cactive
     virtual void DoCancel();
@@ -243,9 +256,8 @@
     /**
     * Download manager session
     */
-    WRT::DownloadManager* iDlMgr;
+    RHttpDownloadMgr iDlMgr;
 
-    WRT::Download* iDownload;
     /**
     * Used to make downloads synchronous
     */
@@ -275,9 +287,6 @@
     RFs iFs;
 
     HBufC* iFileName;
-    
-    QRoHandlerDMgrEventHandler* iRoHandlerDMgrEventHandler;
-    
     };
 
 #endif // ROHANDLERDMGRWRAPPER_H
--- a/omadrm/drmplugins/drmrohandler/src/CRoHandler.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmrohandler/src/CRoHandler.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -30,6 +30,7 @@
 #include <centralrepository.h>          // link against centralrepository.lib
 #include <msvuids.h>
 #include <msvids.h>
+#include <downloadmgrclient.h>
 
 #ifdef RD_MULTIPLE_DRIVE
 #include <driveinfo.h>
@@ -38,14 +39,16 @@
 #include <uri16.h>                          // TUriParser16
 #include <data_caging_path_literals.hrh>    // KDC_MTM_RESOURCE_DIR
 #include <uriutils.h>                       // UriUtils and so on
+#include <PushMtmUi.rsg>                    // for R_PUSHMISC_UNK_SENDER
 #include <RoHandler.rsg>                    // for R_QTN_DRM_MGR_INB_TITLE
 #include <sysutil.h>                        // Disk space checking
+#include <featmgr.h>                        // Feature Manager
 
 #include "CRoHandler.h"
 #include "RoMtmCli.h"                       // for CRightsObjectMtmClient
 #include "RoapSyncWrapper.h"
 
-#include "RoHandlerStringResourceReader.h"
+#include "StringResourceReader.h"
 #include "rohandlerdmgrwrapper.h"
 #include "rohandlerinternalcrkeys.h"
 
@@ -98,6 +101,7 @@
 _LIT( KRoHandlerTriggerFilePath, "c:\\system\\data\\" );
 #endif
 
+_LIT( KPushMtmRes, "PushMtmUi.rsc" );
 _LIT( KRoHandlerResourceFile, "RoHandler.rsc" );
 
 _LIT8( KRoapTriggerElement, "roapTrigger" );
@@ -112,8 +116,6 @@
 _LIT( KRoAcquisitionPrefix, "ROA:" );
 _LIT( KTriggerPrefix, "TRI:" );
 
-_LIT( KEmpty, " " );
-
 // MODULE DATA STRUCTURES
 
 // Helper class for deleting file with given filename on cleanupstack
@@ -397,7 +399,7 @@
         )
     : CPushHandlerBase(),
     iFirstTime( ETrue ), iPushMsg( NULL ), iMsvId( NULL ),
-    iPutRightsToInbox( ETrue )
+    iPutRightsToInbox( ETrue ), iFeatureManagerFound( EFalse )
     {
     }
 
@@ -427,7 +429,14 @@
 
     CRepository* repository( NULL );
     TInt err( KErrNone );
+    TInt ret( KErrNone );
 
+    TRAP( ret, FeatureManager::InitializeLibL() );
+    if ( !ret )
+        {
+        iFeatureManagerFound = ETrue;
+        }   
+    
     User::LeaveIfError( iFs.Connect() );
 
     // create drm
@@ -509,7 +518,12 @@
 
     // session must be deleted last (and constructed first)
     delete iSession;
-
+    
+    if ( iFeatureManagerFound )
+        {
+        FeatureManager::UnInitializeLib();
+        }
+        
 #ifdef _DRM_TESTING
     TRAP( r, WriteL( _L8( "~CRoHandler-End" ) ) );
 #endif
@@ -656,26 +670,36 @@
         {
         case EOma1Ro:
             {
-            HandleRightsMessageL();
+            if ( iFeatureManagerFound && FeatureManager::FeatureSupported(
+                    KFeatureIdFfOmadrm1FullSupport ) )
+                {
+                HandleRightsMessageL();
+                }
             break;
             }
 #ifdef __DRM_OMA2
         case EOma2RoapTrigger:
         case EOma2RoapTriggerRoAcquisition:
-            {
-            HandleRoapTriggerL();
-            break;
-            }
+            if ( iFeatureManagerFound && FeatureManager::FeatureSupported(
+                    KFeatureIdFfOmadrm2Support ) )
+                {
+                HandleRoapTriggerL();
+                }
+            break;    
         case EOma2RoapTriggerMetering:
-            {
-            HandleMeteringTriggerSilentlyL();
+            if ( iFeatureManagerFound && FeatureManager::FeatureSupported( 
+                    KFeatureIdFfOmadrm2Support ) )
+                {
+                HandleMeteringTriggerSilentlyL();
+                }
             break;
-            }
         case EOma2RoapPdu:
-            {
-            HandleRoapPduL();
+            if ( iFeatureManagerFound && FeatureManager::FeatureSupported(
+                    KFeatureIdFfOmadrm2Support ) )
+                {
+                HandleRoapPduL();
+                }
             break;
-            }
 #endif
         default:
             {
@@ -779,7 +803,7 @@
         ptrToMz.Append( KMarker );
         ptrToMz.Append( uri16 ); //add uri16
         ptrToMz.Append( KMarker );
-
+        
         CleanupStack::PopAndDestroy( number );
         CleanupStack::PopAndDestroy( buffer );
         CleanupStack::PushL( messageContent );
@@ -1186,10 +1210,10 @@
     TRAP( r, WriteL( _L8( "ReadFromResourceLC-fs.Connect" ) ) );
 #endif
     CleanupClosePushL( fs );
-    CRoHandlerStringResourceReader* reader(
-        new ( ELeave ) CRoHandlerStringResourceReader( fs, aFile ) );
+    CStringResourceReader* reader(
+        new ( ELeave ) CStringResourceReader( fs, aFile ) );
 #ifdef _DRM_TESTING
-    TRAP( r, WriteL( _L8( "ReadFromResourceLC-CRoHandlerStringResourceReader" ) ) );
+    TRAP( r, WriteL( _L8( "ReadFromResourceLC-CStringResourceReader" ) ) );
 #endif
     CleanupStack::PushL( reader );
     aBuf = reader->AllocReadResourceL( aIndex );
@@ -1218,7 +1242,28 @@
     // First line in Inbox: TMsvEntry::iDetails.
     if ( !flag || srvAddress.Length() == 0 )
         {
-        result = KEmpty().AllocL();
+        // Read from resource.
+
+#ifndef RD_MULTIPLE_DRIVE
+
+        TFileName resourceFile( KDriveZ );
+
+#else //RD_MULTIPLE_DRIVE
+
+        _LIT( KDriveRoot, "%c:" );
+        TInt driveNumber( -1 );
+        TChar driveLetter;
+        DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRom, driveNumber );
+        iFs.DriveToChar( driveNumber, driveLetter );
+
+        TFileName resourceFile;
+        resourceFile.Format( KDriveRoot, (TUint )driveLetter );
+
+#endif
+
+        resourceFile.Append( KDC_MTM_RESOURCE_DIR );
+        resourceFile.Append( KPushMtmRes );
+        ReadFromResourceLC( resourceFile, R_PUSHMISC_UNK_SENDER, result );
         }
     else
         {
@@ -1378,22 +1423,30 @@
     switch( iMsgType )
         {
         case EOma1Ro:
-            {
-            HandleRightsMessageL();
+            {            
+            if ( iFeatureManagerFound && FeatureManager::FeatureSupported(
+                    KFeatureIdFfOmadrm1FullSupport ) )
+                {
+                HandleRightsMessageL();
+                }
             break;
             }
 #ifdef __DRM_OMA2
         case EOma2RoapTrigger:
         case EOma2RoapTriggerRoAcquisition:
-            {
-            HandleRoapTriggerL();
+            if ( iFeatureManagerFound && FeatureManager::FeatureSupported(
+                    KFeatureIdFfOmadrm2Support ) )
+                {
+                HandleRoapTriggerL();
+                }
             break;
-            }
         case EOma2RoapPdu:
-            {
-            HandleRoapPduL();
+            if ( iFeatureManagerFound && FeatureManager::FeatureSupported(
+                    KFeatureIdFfOmadrm2Support ) )
+                {
+                HandleRoapPduL();
+                }
             break;
-            }
 #endif
         default:
             {
--- a/omadrm/drmplugins/drmrohandler/src/RoHandlerStringResourceReader.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
-* 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:
-*     Implementation of CRoHandlerStringResourceReader
-*
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "RoHandlerStringResourceReader.h"
-#include <f32file.h>
-#include <barsread.h>
-#include <bautils.h>
-
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-//#define _DRM_TESTING
-
-#ifdef _DRM_TESTING
-LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs );
-LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName );
-LOCAL_C void CreateLogL();
-LOCAL_C void WriteL( const TDesC8& aText );
-LOCAL_C void WriteL( const TDesC& aText );
-LOCAL_C void WriteL( const TDesC8& aText , TInt aErr );
-LOCAL_C void WriteCurrentTimeL();
-#endif
-
-// -----------------------------------------------------------------------------
-// Testing stuff
-// -----------------------------------------------------------------------------
-//
-
-#ifdef _DRM_TESTING
-LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs )
-    {
-    _LIT( KLogFile , "c:\\StringResourceReader.txt" );
-    WriteFileL( text , aFs , KLogFile );
-    }
-
-LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName )
-    {
-    RFile file;
-    TInt size;
-    User::LeaveIfError( file.Open( aFs, aName , EFileWrite ) );
-    CleanupClosePushL( file );
-    User::LeaveIfError( file.Size( size ) );
-    User::LeaveIfError( file.Write( size, text ) );
-    CleanupStack::PopAndDestroy(); //file
-    }
-
-LOCAL_C void CreateLogL()
-    {
-    RFs fs;
-    User::LeaveIfError(fs.Connect());
-    CleanupClosePushL(fs);
-    RFile file;
-    User::LeaveIfError( file.Replace( fs , _L("c:\\StringResourceReader.txt") , EFileWrite ) );
-    file.Close();
-    CleanupStack::PopAndDestroy(); //fs
-    }
-
-LOCAL_C void WriteL( const TDesC& aText )
-    {
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL(fs);
-    HBufC8* text = HBufC8::NewLC(1000);
-    TPtr8 textptr(text->Des() );
-    textptr.Append( aText );
-    textptr.Append( _L8("\r\n") );
-    WriteLogL(textptr , fs);
-    CleanupStack::PopAndDestroy(text);
-    CleanupStack::PopAndDestroy(); //fs
-    WriteCurrentTimeL();
-    }
-
-LOCAL_C void WriteL( const TDesC8& aText )
-    {
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL(fs);
-    HBufC8* text = HBufC8::NewLC(1000);
-    TPtr8 textptr(text->Des() );
-    textptr.Append( aText );
-    textptr.Append( _L8("\r\n") );
-    WriteLogL(textptr , fs);
-    CleanupStack::PopAndDestroy(text);
-    CleanupStack::PopAndDestroy(); //fs
-    WriteCurrentTimeL();
-    }
-
-LOCAL_C void WriteL( const TDesC8& aText , TInt aErr )
-    {
-    _LIT8(KErr,": %d");
-    HBufC8* text = HBufC8::NewLC(1000+20);
-    TBuf8<20> num;
-    TPtr8 textptr(text->Des());
-    textptr.Append(aText);
-    num.Format(KErr(),aErr);
-    textptr.Append(num);
-    WriteL(textptr);
-    CleanupStack::PopAndDestroy(text);
-    }
-
-LOCAL_C void WriteCurrentTimeL()
-    {
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL(fs);
-    HBufC8* text = HBufC8::NewLC(100);
-    TPtr8 textptr(text->Des() );
-// Date and Time display
-    TTime time;
-    time.HomeTime();
-    TBuf<256> dateString;
-    _LIT(KDate,"%*E%*D%X%*N%*Y %1 %2 '%3");
-    time.FormatL(dateString,KDate);
-    textptr.Append(_L( "\r\n\t\tData:\t" ) );
-    textptr.Append( dateString );
-    _LIT(KTime,"%-B%:0%J%:1%T%:2%S%:3%+B");
-    time.FormatL(dateString,KTime);
-    textptr.Append(_L( "\r\n\t\tTime:\t" ) );
-    textptr.Append( dateString );
-    textptr.Append(_L( "\r\n" ) );
-    textptr.Append(_L( "\r\n" ) );
-    WriteLogL(textptr , fs);
-    CleanupStack::PopAndDestroy(text);
-    CleanupStack::PopAndDestroy(); //fs
-    }
-#endif
-
-// ================= MEMBER FUNCTIONS =======================
-
-
-// ---------------------------------------------------------
-// CRoHandlerStringResourceReader::CRoHandlerStringResourceReader
-// ---------------------------------------------------------
-//
-CRoHandlerStringResourceReader::CRoHandlerStringResourceReader
-    ( RFs& aFs, const TDesC& aRscFileWithPathAndDrive )
-:   CBase(), iFs( aFs ), iInitialized( EFalse )
-    {
-#ifdef _DRM_TESTING
-    TRAPD(r,CreateLogL());
-    TRAP(r,WriteL(_L8("CRoHandlerStringResourceReader")));
-#endif
-    iRscFileName.Copy( aRscFileWithPathAndDrive );
-    }
-
-// ---------------------------------------------------------
-// CRoHandlerStringResourceReader::~CRoHandlerStringResourceReader
-// ---------------------------------------------------------
-//
-CRoHandlerStringResourceReader::~CRoHandlerStringResourceReader()
-    {
-    iResourceFile.Close();
-#ifdef _DRM_TESTING
-    TRAPD(r,WriteL(_L8("~CRoHandlerStringResourceReader")));
-#endif
-    }
-
-// ---------------------------------------------------------
-// CRoHandlerStringResourceReader::AllocReadResourceL
-// ---------------------------------------------------------
-//
-HBufC* CRoHandlerStringResourceReader::AllocReadResourceL( TInt aResId )
-    {
-#ifdef _DRM_TESTING
-    TRAPD(r,WriteL(_L8("AllocReadResourceL"),aResId));
-#endif
-
-    InitializeL();
-
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("AllocReadResourceL-InitializeL")));
-#endif
-
-    HBufC8* buf8 = iResourceFile.AllocReadLC( aResId );
-
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("AllocReadResourceL-iResourceFile.AllocReadLC")));
-#endif
-
-#ifdef _UNICODE
-    const TPtrC buf( (const TUint16*)buf8->Ptr(), buf8->Size()/2 );
-#else
-    const TPtrC buf( buf8->Ptr(), buf8->Size() );
-#endif
-    HBufC* retBuf = buf.AllocL();
-    CleanupStack::PopAndDestroy( buf8 );
-
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("AllocReadResourceL-End")));
-#endif
-    return retBuf;
-    }
-
-// ---------------------------------------------------------
-// CRoHandlerStringResourceReader::InitializeL
-// ---------------------------------------------------------
-//
-void CRoHandlerStringResourceReader::InitializeL()
-    {
-#ifdef _DRM_TESTING
-    TRAPD(r,WriteL(_L8("InitializeL")));
-#endif
-    if ( !iInitialized )
-        {
-        TFileName resourceFileName( iRscFileName );
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("InitializeL-NearestLanguageFile")));
-#endif
-
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(resourceFileName));
-#endif
-        BaflUtils::NearestLanguageFile( iFs, resourceFileName );
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("InitializeL-NearestLanguageFile-End")));
-#endif
-
-        iResourceFile.OpenL( iFs, resourceFileName );
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("InitializeL-OpenL-End")));
-#endif
-
-        iResourceFile.ConfirmSignatureL( iResourceFile.SignatureL() );
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("InitializeL-ConfirmSignatureL-End")));
-#endif
-        iInitialized = ETrue;
-        }
-#ifdef _DRM_TESTING
-    TRAP(r,WriteL(_L8("InitializeL-End")));
-#endif
-    }
-
-// End of file.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmplugins/drmrohandler/src/StringResourceReader.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,253 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or 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 CStringResourceReader
+*
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "StringResourceReader.h"
+#include <f32file.h>
+#include <barsread.h>
+#include <bautils.h>
+
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+//#define _DRM_TESTING
+
+#ifdef _DRM_TESTING
+LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs );
+LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName );
+LOCAL_C void CreateLogL();
+LOCAL_C void WriteL( const TDesC8& aText );
+LOCAL_C void WriteL( const TDesC& aText );
+LOCAL_C void WriteL( const TDesC8& aText , TInt aErr );
+LOCAL_C void WriteCurrentTimeL();
+#endif
+
+// -----------------------------------------------------------------------------
+// Testing stuff
+// -----------------------------------------------------------------------------
+//
+
+#ifdef _DRM_TESTING
+LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs )
+    {
+    _LIT( KLogFile , "c:\\StringResourceReader.txt" );
+    WriteFileL( text , aFs , KLogFile );
+    }
+
+LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName )
+    {
+    RFile file;
+    TInt size;
+    User::LeaveIfError( file.Open( aFs, aName , EFileWrite ) );
+    CleanupClosePushL( file );
+    User::LeaveIfError( file.Size( size ) );
+    User::LeaveIfError( file.Write( size, text ) );
+    CleanupStack::PopAndDestroy(); //file
+    }
+
+LOCAL_C void CreateLogL()
+    {
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    RFile file;
+    User::LeaveIfError( file.Replace( fs , _L("c:\\StringResourceReader.txt") , EFileWrite ) );
+    file.Close();
+    CleanupStack::PopAndDestroy(); //fs
+    }
+
+LOCAL_C void WriteL( const TDesC& aText )
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL(fs);
+    HBufC8* text = HBufC8::NewLC(1000);
+    TPtr8 textptr(text->Des() );
+    textptr.Append( aText );
+    textptr.Append( _L8("\r\n") );
+    WriteLogL(textptr , fs);
+    CleanupStack::PopAndDestroy(text);
+    CleanupStack::PopAndDestroy(); //fs
+    WriteCurrentTimeL();
+    }
+
+LOCAL_C void WriteL( const TDesC8& aText )
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL(fs);
+    HBufC8* text = HBufC8::NewLC(1000);
+    TPtr8 textptr(text->Des() );
+    textptr.Append( aText );
+    textptr.Append( _L8("\r\n") );
+    WriteLogL(textptr , fs);
+    CleanupStack::PopAndDestroy(text);
+    CleanupStack::PopAndDestroy(); //fs
+    WriteCurrentTimeL();
+    }
+
+LOCAL_C void WriteL( const TDesC8& aText , TInt aErr )
+    {
+    _LIT8(KErr,": %d");
+    HBufC8* text = HBufC8::NewLC(1000+20);
+    TBuf8<20> num;
+    TPtr8 textptr(text->Des());
+    textptr.Append(aText);
+    num.Format(KErr(),aErr);
+    textptr.Append(num);
+    WriteL(textptr);
+    CleanupStack::PopAndDestroy(text);
+    }
+
+LOCAL_C void WriteCurrentTimeL()
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL(fs);
+    HBufC8* text = HBufC8::NewLC(100);
+    TPtr8 textptr(text->Des() );
+// Date and Time display
+    TTime time;
+    time.HomeTime();
+    TBuf<256> dateString;
+    _LIT(KDate,"%*E%*D%X%*N%*Y %1 %2 '%3");
+    time.FormatL(dateString,KDate);
+    textptr.Append(_L( "\r\n\t\tData:\t" ) );
+    textptr.Append( dateString );
+    _LIT(KTime,"%-B%:0%J%:1%T%:2%S%:3%+B");
+    time.FormatL(dateString,KTime);
+    textptr.Append(_L( "\r\n\t\tTime:\t" ) );
+    textptr.Append( dateString );
+    textptr.Append(_L( "\r\n" ) );
+    textptr.Append(_L( "\r\n" ) );
+    WriteLogL(textptr , fs);
+    CleanupStack::PopAndDestroy(text);
+    CleanupStack::PopAndDestroy(); //fs
+    }
+#endif
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// CStringResourceReader::CStringResourceReader
+// ---------------------------------------------------------
+//
+CStringResourceReader::CStringResourceReader
+    ( RFs& aFs, const TDesC& aRscFileWithPathAndDrive )
+:   CBase(), iFs( aFs ), iInitialized( EFalse )
+    {
+#ifdef _DRM_TESTING
+	TRAPD(r,CreateLogL());   
+	TRAP(r,WriteL(_L8("CStringResourceReader")));
+#endif 
+    iRscFileName.Copy( aRscFileWithPathAndDrive );
+    }
+
+// ---------------------------------------------------------
+// CStringResourceReader::~CStringResourceReader
+// ---------------------------------------------------------
+//
+CStringResourceReader::~CStringResourceReader()
+    {
+    iResourceFile.Close();
+#ifdef _DRM_TESTING
+	TRAPD(r,WriteL(_L8("~CStringResourceReader")));
+#endif 
+    }
+
+// ---------------------------------------------------------
+// CStringResourceReader::AllocReadResourceL
+// ---------------------------------------------------------
+//
+HBufC* CStringResourceReader::AllocReadResourceL( TInt aResId )
+    {
+#ifdef _DRM_TESTING
+	TRAPD(r,WriteL(_L8("AllocReadResourceL"),aResId));
+#endif 
+
+    InitializeL();
+
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("AllocReadResourceL-InitializeL")));
+#endif 
+
+    HBufC8* buf8 = iResourceFile.AllocReadLC( aResId );
+
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("AllocReadResourceL-iResourceFile.AllocReadLC")));
+#endif     
+    
+#ifdef _UNICODE
+    const TPtrC buf( (const TUint16*)buf8->Ptr(), buf8->Size()/2 );
+#else
+    const TPtrC buf( buf8->Ptr(), buf8->Size() );
+#endif
+    HBufC* retBuf = buf.AllocL();
+    CleanupStack::PopAndDestroy( buf8 );
+
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("AllocReadResourceL-End")));
+#endif 
+    return retBuf;
+    }
+
+// ---------------------------------------------------------
+// CStringResourceReader::InitializeL
+// ---------------------------------------------------------
+//
+void CStringResourceReader::InitializeL()
+    {
+#ifdef _DRM_TESTING
+	TRAPD(r,WriteL(_L8("InitializeL")));
+#endif 
+    if ( !iInitialized )
+        {
+        TFileName resourceFileName( iRscFileName );
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("InitializeL-NearestLanguageFile")));
+#endif 
+
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(resourceFileName));
+#endif 
+        BaflUtils::NearestLanguageFile( iFs, resourceFileName );
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("InitializeL-NearestLanguageFile-End")));
+#endif 
+
+        iResourceFile.OpenL( iFs, resourceFileName );
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("InitializeL-OpenL-End")));
+#endif 
+
+        iResourceFile.ConfirmSignatureL( iResourceFile.SignatureL() );
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("InitializeL-ConfirmSignatureL-End")));
+#endif 
+        iInitialized = ETrue;
+        }
+#ifdef _DRM_TESTING
+	TRAP(r,WriteL(_L8("InitializeL-End")));
+#endif 
+    }
+
+// End of file.
--- a/omadrm/drmplugins/drmrohandler/src/qrohandlerdmgreventhandler.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-
-#include <download.h>
-
-#include "qrohandlerdmgreventhandler.h"
-#include "rohandlerdmgrwrapper.h"
-
-QRoHandlerDMgrEventHandler::QRoHandlerDMgrEventHandler( 
-	CRoHandlerDMgrWrapper& aRoHandlerDMgrWrapper, 
-	WRT::Download& aDownload )
-	: iDownload(aDownload),
-	  iRoHandlerDMgrWrapper(aRoHandlerDMgrWrapper)
-	{
-	QT_TRAP_THROWING
-			(
-			QObject::connect
-					(
-					&iDownload, SIGNAL(downloadEvent(DownloadEvent*)), 
-					this, SLOT(HandleDownloadEventL(DownloadEvent*))
-					)
-			);
-	}
-
-void QRoHandlerDMgrEventHandler::HandleDownloadEventL( WRT::DownloadEvent* aEvent )
-	{
-	iRoHandlerDMgrWrapper.HandleDownloadEventL(aEvent);
-	}
--- a/omadrm/drmplugins/drmrohandler/src/rohandlerdmgrwrapper.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmrohandler/src/rohandlerdmgrwrapper.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008 - 2010 Nokia Corporation and/or its subsidiary(-ies).
+* 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 "Eclipse Public License v1.0"
@@ -21,6 +21,10 @@
 #include <centralrepository.h>
 #include <cdblen.h>
 
+#ifdef __SERIES60_NATIVE_BROWSER
+#include <browseruisdkcrkeys.h>
+#endif
+
 #include <cmconnectionmethod.h>
 #include <cmdestination.h>
 #include <cmconnectionmethoddef.h>
@@ -32,6 +36,8 @@
 
 #include <data_caging_path_literals.hrh>
 
+#include <downloadmgrclient.h>
+
 #include <es_enum.h> // tconnectioninfo
 #include <es_sock.h> // rconnection rsocket
 #include <RoapEng.h>
@@ -39,15 +45,7 @@
 #include <RoapObserver.h>
 #include "RoapSyncWrapper.h"
 
-// Download manager apis
-#include <qobject.h>
-#include <downloadmanager.h>
-#include <download.h>
-
 #include "rohandlerdmgrwrapper.h"
-#include "cleanupresetanddestroy.h"
-#include "buffercontainers.h"
-#include "qrohandlerdmgreventhandler.h"
 
 #ifdef _DEBUG
 #define DRMDEBUG( a ) RDebug::Print( a )
@@ -95,6 +93,9 @@
     _LIT( KMethConstructL, "ConstructL" );
     _LIT( KMethNewL, "NewL" );
     _LIT( KMethNewLC, "NewLC" );
+    _LIT( KMethDownloadAndHandleRoapTriggerL, "DownloadAndHandleRoapTriggerL" );
+    _LIT( KMethDownloadAndHandleRoapTriggerFromPrUrlL,
+        "DownloadAndHandleRoapTriggerFromPrUrlL" );
     _LIT( KMethDoDownloadAndHandleRoapTriggerL,
         "DoDownloadAndHandleRoapTriggerL" );
     _LIT( KFormatDoDlHdlRoapTrigL, "DoDownloadAndHandleRoapTriggerL: %S" );
@@ -102,6 +103,7 @@
     _LIT( KStrDlFinished, "download finished" );
 
     _LIT( KMethSetDefaultAccessPointL, "SetDefaultAccessPointL" );
+    _LIT( KMiIapId, "iIapId" );
 
     _LIT( KMethHandleDMgrEventL, "HandleDMgrEventL" );
     _LIT( KFormatMethHandleDMgrEventL, "HandleDMgrEventL %S" );
@@ -114,7 +116,8 @@
     _LIT( KStrEConnectionFailed, "EConnectionFailed" );
     _LIT( KFormatEDlAttrErrorId, "EDlAttrErrorId = %d" );
 
-    _LIT( KMiState, "iState" );
+    _LIT( KMiDownLoadState, "iDownLoadState" );
+    _LIT( KMiProgressState, "iProgressState" );
 
     }
 
@@ -132,12 +135,41 @@
 //#define LOG2( a, b )
 #endif
 
+#ifndef __SERIES60_NATIVE_BROWSER
+const TUid KCRUidBrowser =
+    {0x10008D39};
+const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
+const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
+const TUint32 KBrowserNGDefaultSnapId = 0x00000053;
+#endif
+
 // CONSTANTS
 #ifndef RD_MULTIPLE_DRIVE
 _LIT( KHelperTriggerFilePath, "d:\\" );
 #endif
 
-using namespace WRT;
+// ============================== LOCAL FUNCTIONS ==============================
+
+// ---------------------------------------------------------------------------
+// DoResetAndDestroy
+// Does RPointerArray< typename >->ResetAndDestroy() for the given array aPtr.
+// ---------------------------------------------------------------------------
+//
+template< typename elemType >
+LOCAL_C void DoResetAndDestroy( TAny* aPtr )
+    {
+    ( reinterpret_cast< RPointerArray< elemType >* >( aPtr ) )->
+        ResetAndDestroy();
+    }
+
+// ---------------------------------------------------------------------------
+// DeleteHttpDowload
+// ---------------------------------------------------------------------------
+//
+LOCAL_C void DeleteHttpDowload( TAny* aDownload )
+    {
+    reinterpret_cast< RHttpDownload* >( aDownload )->Delete();
+    }
 
 // ---------------------------------------------------------------------------
 // UpdateBufferL
@@ -157,6 +189,34 @@
         }
     }
 
+// ---------------------------------------------------------------------------
+// IapIdOfDefaultSnapL
+// for trapping purposes only
+// ---------------------------------------------------------------------------
+//
+LOCAL_C TUint32 IapIdOfDefaultSnapL(
+    RCmManager& aCmManager,
+    const TUint32 aDefaultSnap )
+    {
+    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
+    CleanupClosePushL( dest );
+    TUint32 iapIdOfDest( 0 );
+
+    if ( dest.ConnectionMethodCount() <= 0 )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
+    CleanupClosePushL( cMeth );
+
+    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
+    CleanupStack::PopAndDestroy( &cMeth );
+    CleanupStack::PopAndDestroy( &dest );
+    return iapIdOfDest;
+    }
+
+
 // ============================= MEMBER FUNCTIONS ==============================
 
 // ---------------------------------------------------------------------------
@@ -179,15 +239,7 @@
     DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethConstructL() );
     // Get UID from process
     const TInt KRoHandlerDMgrWrapperUid = 0x101F7B92;
-    try
-		{
-		QString roHandlerDmgrWrapperUid(QString::number(KRoHandlerDMgrWrapperUid));
-		iDlMgr = q_check_ptr(new DownloadManager(roHandlerDmgrWrapperUid));
-		}
-    catch(const std::exception& exception)
-    	{
-		qt_symbian_exception2LeaveL(exception);
-    	}
+    iDlMgr.ConnectL( TUid::Uid( KRoHandlerDMgrWrapperUid ), *this, EFalse );
     User::LeaveIfError( iFs.Connect() );
     User::LeaveIfError( iFs.ShareProtected() );
 
@@ -232,15 +284,24 @@
     delete iFileName;
     delete iRoapEng;
 
-    delete iDlMgr;
-    delete iRoHandlerDMgrEventHandler;
-    
+#ifdef _DEBUG
+
+    if ( iDlMgr.Handle() )
+        {
+        iDlMgr.Close();
+        }
+
+#else
+
+    iDlMgr.Close();
+
+#endif
+
     iFs.Close();
-    
     }
 
 // ---------------------------------------------------------------------------
-// CRoHandlerDMgrWrapper::HandleRoapTriggerL
+// CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerL
 // ---------------------------------------------------------------------------
 //
 void CRoHandlerDMgrWrapper::HandleRoapTriggerL( const TDesC8& aTrigger )
@@ -256,13 +317,50 @@
     }
 
 // ---------------------------------------------------------------------------
+// CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerL
+// ---------------------------------------------------------------------------
+//
+void CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerL( const HBufC8* aUrl )
+    {
+    DRMDEBUGMETHOD(
+        RoHdlrDMgrWrDebugLiterals::KMethDownloadAndHandleRoapTriggerL() );
+    if ( iState != EInit || iWait.IsStarted() )
+        {
+        User::Leave( KErrNotReady );
+        }
+
+    UpdateBufferL< HBufC8, TDesC8 >( iTriggerUrl, *aUrl );
+    Continue( EGetMeteringTrigger, KErrNone );
+    iWait.Start();
+    }
+
+// ---------------------------------------------------------------------------
+// CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerFromPrUrlL
+// ---------------------------------------------------------------------------
+//
+void CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerFromPrUrlL(
+        const HBufC8* aUrl )
+    {
+    DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethDownloadAndHandleRoapTriggerFromPrUrlL() );
+    if ( iState != EInit || iWait.IsStarted() )
+        {
+        User::Leave( KErrNotReady );
+        }
+
+    UpdateBufferL< HBufC8, TDesC8 >( iTriggerUrl, *aUrl );
+    Continue( EGetPrUrlTrigger, KErrNone );
+    iWait.Start();
+    }
+
+// ---------------------------------------------------------------------------
 // CRoHandlerDMgrWrapper::DoDownloadRoapTriggerL
 // ---------------------------------------------------------------------------
 //
 void CRoHandlerDMgrWrapper::DoDownloadRoapTriggerL( TMeterState aNextState )
     {
     RFile roapTrigger;
-    DRM::CFileNameContainer* triggerFileName(NULL);
+    TBool result( EFalse );
+    TFileName triggerFileName;
 
     DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethDoDownloadAndHandleRoapTriggerL() );
     // If no Trigger URL then nothing to download. So finish transaction
@@ -272,11 +370,10 @@
         return;
         }
 
-    triggerFileName=DRM::CFileNameContainer::NewLC();
 #ifndef RD_MULTIPLE_DRIVE
 
     User::LeaveIfError( roapTrigger.Temp(
-            iFs, KHelperTriggerFilePath, triggerFileName->iBuffer, EFileWrite ) );
+            iFs, KHelperTriggerFilePath, triggerFileName, EFileWrite ) );
 
 #else //RD_MULTIPLE_DRIVE
     _LIT( KDrive, "%c:\\" );
@@ -285,69 +382,46 @@
     DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRam, driveNumber );
     iFs.DriveToChar( driveNumber, driveLetter );
 
-    DRM::CFileNameContainer*
-        helperTriggerFilePath( DRM::CFileNameContainer::NewLC() );
-
-    helperTriggerFilePath->iBuffer.Format( KDrive, ( TUint )driveLetter );
+    TFileName helperTriggerFilePath;
 
-    User::LeaveIfError( roapTrigger.Temp( iFs, helperTriggerFilePath->iBuffer,
-                triggerFileName->iBuffer, EFileWrite ) );
-    CleanupStack::PopAndDestroy( helperTriggerFilePath );
-    helperTriggerFilePath=NULL;
+    helperTriggerFilePath.Format( KDrive, ( TUint )driveLetter );
+
+    User::LeaveIfError( roapTrigger.Temp( iFs, helperTriggerFilePath,
+            triggerFileName, EFileWrite ) );
 
 #endif
-    UpdateBufferL< HBufC, TFileName >( iFileName, triggerFileName->iBuffer );
-    CleanupStack::PopAndDestroy( triggerFileName );
-    triggerFileName=NULL;
+    UpdateBufferL< HBufC, TFileName >( iFileName, triggerFileName );
 
-    try
-		{
-		// create and start download
-        QString downloadUrl((QChar*)iTriggerUrl->Des().Ptr(),iTriggerUrl->Length());
-        iDownload = iDlMgr->createDownload( downloadUrl );
-		iRoHandlerDMgrEventHandler = q_check_ptr(new QRoHandlerDMgrEventHandler(*this, *iDownload));
-		}
-    catch(const std::exception& exception)
-		{
-		qt_symbian_exception2LeaveL(exception);
-		}
-    		
+    // create and start download
+    RHttpDownload& download = iDlMgr.CreateDownloadL( *iTriggerUrl, result );
+    // Put download for proper cleanup.
+    TCleanupItem item( DeleteHttpDowload, &download );
+    CleanupStack::PushL( item );
+
     CleanupClosePushL( roapTrigger );
 
-    
-	DRMDEBUG2(
-		RoHdlrDMgrWrDebugLiterals::KFormatDoDlHdlRoapTrigL(),
-		&RoHdlrDMgrWrDebugLiterals::KStrDlCreated() );
-	iDownloadSuccess = EFalse;
-	iConnectionError = EFalse;
+    if ( result )
+        {
+        DRMDEBUG2(
+            RoHdlrDMgrWrDebugLiterals::KFormatDoDlHdlRoapTrigL(),
+            &RoHdlrDMgrWrDebugLiterals::KStrDlCreated() );
+        iDownloadSuccess = EFalse;
+        iConnectionError = EFalse;
 
-	SetDefaultAccessPointL();
-        
-	try
-		{
-		RBuf fileName;
-		User::LeaveIfError(fileName.Create(KMaxFileName));
-		CleanupClosePushL(fileName);
-		roapTrigger.Name(fileName);
-		const QVariant& roapTriggerValue( QString((QChar*) fileName.Ptr(), fileName.Length()) );
-		CleanupStack::PopAndDestroy(&fileName);
-		iDownload->setAttribute(FileName,roapTriggerValue);
-		const QVariant& val(ETrue);
-		iDownload->setAttribute(ContentType, val);
-		iDownload->start();
-		}
-	catch(const std::exception& exception)
-		{
-		qt_symbian_exception2LeaveL(exception);
-		}
-	
-	// wait until download is finished
-	iState = aNextState;
-	TRequestStatus* status( &iStatus );
-	*status = KRequestPending;
-	SetActive();
-        
+        SetDefaultAccessPointL();
+        User::LeaveIfError( download.SetFileHandleAttribute( roapTrigger ) );
+        User::LeaveIfError( download.SetBoolAttribute(
+                EDlAttrNoContentTypeCheck, ETrue ) );
+        User::LeaveIfError( download.Start() );
+
+        // wait until download is finished
+        iState = aNextState;
+        TRequestStatus* status( &iStatus );
+        *status = KRequestPending;
+        SetActive();
+        }
     CleanupStack::PopAndDestroy( &roapTrigger );
+    CleanupStack::Pop( &download ); // Left open for DoSaveRoapTrigger
     }
 // ---------------------------------------------------------------------------
 // CRoHandlerDMgrWrapper::DoSaveRoapTriggerL
@@ -360,23 +434,15 @@
         RoHdlrDMgrWrDebugLiterals::KFormatDoDlHdlRoapTrigL(),
         &RoHdlrDMgrWrDebugLiterals::KStrDlFinished() );
 
-    try
-		{
-		// Fetch download created in DoDownloadRoapTriggerL
-		QString downloadUrl((QChar*)iTriggerUrl->Des().Ptr(),iTriggerUrl->Length());
-		//uncomment
-		iDownload = NULL; //iDlMgr->findDownload( downloadUrl );
-		}
-    catch(const std::exception& exception)
-		{
-		qt_symbian_exception2LeaveL(exception);
-		} 
-    
+    // Fetch download created in DoDownloadRoapTriggerL
+    RHttpDownload* download = iDlMgr.FindDownload( *iTriggerUrl, KNullDesC8() );
     // Delete trigger URL so that it is possible to check
     // whether or not meteringResponse has PrUrl.
     delete iTriggerUrl;
     iTriggerUrl = NULL;
-    
+    // Put download for proper cleanup.
+    TCleanupItem item( DeleteHttpDowload, download );
+    CleanupStack::PushL( item );
     RFile roapTrigger;
 
     if ( !iDownloadSuccess )
@@ -419,7 +485,8 @@
     // And let ROAP handle it...
     CleanupStack::PopAndDestroy( &readBuf );
     CleanupStack::PopAndDestroy( &roapTrigger );
-    
+    CleanupStack::PopAndDestroy( download );
+
     iFs.Delete( *iFileName );
     delete iFileName;
     iFileName=NULL;
@@ -437,7 +504,9 @@
     Roap::TDomainOperation domainOperation;
 
     RPointerArray< HBufC8 > contentIds;
-    CleanupResetAndDestroyPushL( contentIds );
+
+    TCleanupItem cleanup( DoResetAndDestroy< HBufC8 >, &contentIds );
+    CleanupStack::PushL( cleanup );
 
     iRoapEng = Roap::CRoapEng::NewL();
 
@@ -466,12 +535,55 @@
 //
 void CRoHandlerDMgrWrapper::SetDefaultAccessPointL()
     {
+    const TInt KDestinationSelectionMode( 2 );
+    CRepository* repository( NULL );
+    TInt ap( 0 );
+    TInt alwaysAsk( 0 );
+    TUint32 iapd32( 0 );
+    TInt defaultSnap( 0 );
+    TInt err( KErrNone );
+
     DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethSetDefaultAccessPointL() );
 
-    if ( iIapId )
+    if ( !iIapId )
         {
-        QVariant iapId((unsigned long long)iIapId);
-        iDlMgr->setAttribute(DefaultDestinationPath, iapId);
+        repository = CRepository::NewL( KCRUidBrowser );
+        CleanupStack::PushL( repository );
+        repository->Get( KBrowserDefaultAccessPoint, ap );
+        repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
+        repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
+        if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
+            {
+            alwaysAsk = ETrue;
+            }
+        else
+            {
+            RCmManager cmManager;
+            cmManager.OpenLC();
+            if ( !alwaysAsk )
+                {
+                TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
+                        ap, CMManager::ECmIapId ) );
+                }
+            else if ( alwaysAsk == KDestinationSelectionMode )
+                {
+                TRAP( err, iapd32 = IapIdOfDefaultSnapL(
+                        cmManager, defaultSnap ) );
+                }
+            CleanupStack::PopAndDestroy( &cmManager );
+            }
+        if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
+            {
+            iIapId = iapd32;
+            DRMDEBUG3( RoHdlrDMgrWrDebugLiterals::KFormatMembValInt(),
+                &RoHdlrDMgrWrDebugLiterals::KMiIapId(), iIapId );
+            err = iDlMgr.SetIntAttribute( EDlMgrIap, iapd32 );
+            }
+        CleanupStack::PopAndDestroy( repository );
+        }
+    else
+        {
+        err = iDlMgr.SetIntAttribute( EDlMgrIap, iIapId );
         }
     }
 
@@ -496,41 +608,48 @@
 // CRoHandlerDMgrWrapper::HandleDMgrEventL
 // ---------------------------------------------------------------------------
 //
-void CRoHandlerDMgrWrapper::HandleDownloadEventL( WRT::DownloadEvent* aEvent )
+void CRoHandlerDMgrWrapper::HandleDMgrEventL( RHttpDownload& aDownload,
+        THttpDownloadEvent aEvent )
     {
-    QString KDRMHelperMimeTypeROAPTrigger("application/vnd.oma.drm.roap-trigger+xml" );
+    _LIT8( KDRMHelperMimeTypeROAPTrigger, "application/vnd.oma.drm.roap-trigger+xml" );
 
     DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethHandleDMgrEventL() );
     DRMDEBUG3( RoHdlrDMgrWrDebugLiterals::KFormatMembValInt(),
-            &RoHdlrDMgrWrDebugLiterals::KMiState(), aEvent->type() );
-    
-    if ( aEvent->type() == DownloadEvent::HeadersReceived )
+            &RoHdlrDMgrWrDebugLiterals::KMiDownLoadState(), aEvent.iDownloadState );
+    DRMDEBUG3( RoHdlrDMgrWrDebugLiterals::KFormatMembValInt(),
+            &RoHdlrDMgrWrDebugLiterals::KMiProgressState(), aEvent.iProgressState );
+
+    if ( aEvent.iProgressState == EHttpContentTypeReceived )
         {
         DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
                 &RoHdlrDMgrWrDebugLiterals::KStrEHttpContentTypeReceived() );
         // check received mimetype
-        QString contentType = iDownload->attribute( ContentType).toString();
-        if ( contentType.contains( KDRMHelperMimeTypeROAPTrigger )  == EFalse )
+        RBuf8 contentType;
+        contentType.CleanupClosePushL();
+        contentType.CreateL( KMaxContentTypeLength );
+        User::LeaveIfError( aDownload.GetStringAttribute( EDlAttrContentType,
+                contentType ) );
+        if ( !contentType.FindF( KDRMHelperMimeTypeROAPTrigger ) )
             {
             // ROAP trigger found, continue download
-            iDownload->start();
+            User::LeaveIfError( aDownload.Start() );
             }
         else
             {
             // wrong MIME type?, stop download
             iDownloadSuccess = EFalse;
-            iDownload->cancel();
+            User::LeaveIfError( aDownload.Delete() );
             }
         CleanupStack::PopAndDestroy( &contentType );
         }
 
-    if ( aEvent->type() == DownloadEvent::Created )
+    if ( aEvent.iDownloadState == EHttpDlCreated )
         {
         DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
                 &RoHdlrDMgrWrDebugLiterals::KStrEHttpDlCreated() );
         }
     else
-        if ( aEvent->type() == DownloadEvent::NetworkLoss )
+        if ( aEvent.iProgressState == EHttpProgDisconnected )
             {
             DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
                     &RoHdlrDMgrWrDebugLiterals::KStrEHttpProgDisconnected() );
@@ -541,47 +660,49 @@
             TRequestStatus* status( &iStatus );
             User::RequestComplete( status, KErrCancel );
             }
-	else
-		if ( aEvent->type() == DownloadEvent::InProgress )
-			{
-			DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
-					&RoHdlrDMgrWrDebugLiterals::KStrEHttpDlInprogress() );
-			}
-	else
-		if ( aEvent->type() == DownloadEvent::Completed )
-			{
-			// store success
-			DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
-					&RoHdlrDMgrWrDebugLiterals::KStrEHttpDlCompleted() );
-			iDownloadSuccess = ETrue;
+        else
+            if ( aEvent.iDownloadState == EHttpDlInprogress )
+                {
+                DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
+                        &RoHdlrDMgrWrDebugLiterals::KStrEHttpDlInprogress() );
+                }
+            else
+                if ( aEvent.iDownloadState == EHttpDlCompleted )
+                    {
+                    // store success
+                    DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
+                            &RoHdlrDMgrWrDebugLiterals::KStrEHttpDlCompleted() );
+                    iDownloadSuccess = ETrue;
 
-			// finished
-			TRequestStatus* status( &iStatus );
-			User::RequestComplete( status, KErrNone );
-			}
-	else
-		if ( aEvent->type() == DownloadEvent::Failed )
-			{
-			TInt32 err;
+                    // finished
+                    TRequestStatus* status( &iStatus );
+                    User::RequestComplete( status, KErrNone );
+                    }
+                else
+                    if ( aEvent.iDownloadState == EHttpDlFailed )
+                        {
+                        TInt32 err;
 
-			DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
-					&RoHdlrDMgrWrDebugLiterals::KStrEHttpDlFailed() );
-			// store failure
-			iDownloadSuccess = EFalse;
-			err = iDownload->attribute(LastError ).toInt();
-			DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatEDlAttrErrorId(), err );
+                        DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
+                                &RoHdlrDMgrWrDebugLiterals::KStrEHttpDlFailed() );
+                        // store failure
+                        iDownloadSuccess = EFalse;
+                        User::LeaveIfError( aDownload.GetIntAttribute(
+                                EDlAttrErrorId, err ) );
+                        DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatEDlAttrErrorId(), err );
 
-			if ( err == ConnectionFailed || err == TransactionFailed )
-				{
-				DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
-						&RoHdlrDMgrWrDebugLiterals::KStrEConnectionFailed() );
-				iConnectionError = ETrue;
-				}
+                        if ( err == EConnectionFailed || err
+                                == ETransactionFailed )
+                            {
+                            DRMDEBUG2( RoHdlrDMgrWrDebugLiterals::KFormatMethHandleDMgrEventL(),
+                                    &RoHdlrDMgrWrDebugLiterals::KStrEConnectionFailed() );
+                            iConnectionError = ETrue;
+                            }
 
-			// finished
-			TRequestStatus* status( &iStatus );
-			User::RequestComplete( status, KErrCancel );
-			}
+                        // finished
+                        TRequestStatus* status( &iStatus );
+                        User::RequestComplete( status, KErrCancel );
+                        }
     }
 
 
@@ -760,4 +881,3 @@
         }
     return KErrNone;
     }
-
--- a/omadrm/drmplugins/drmromtm/group/RoMtmDat.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmromtm/group/RoMtmDat.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -46,7 +46,7 @@
 USERINCLUDE     ../../../../inc   // ADo level inc dir
 
 // Default system include paths for middleware layer modules.
-MW_LAYER_SYSTEMINCLUDE
+APP_LAYER_SYSTEMINCLUDE
 
 LIBRARY   euser.lib
 LIBRARY   mtur.lib
--- a/omadrm/drmplugins/drmromtm/loc/RoMtmUi.loc	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmromtm/loc/RoMtmUi.loc	Wed Sep 01 12:21:16 2010 +0100
@@ -406,7 +406,7 @@
 //w:
 //r:3.0
 //
-#define qtn_drm_query_rights_acq_msg   "Connect to server to get a licence?"
+#define qtn_drm_query_rights_acq_msg   "Connect to server to get a license?"
 
 //d:Confirmation query text used when triggering registration to a domain
 //l:popup_note_window
--- a/omadrm/drmplugins/drmromtm/uiData/inc/RoMtmCommands.hrh	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmromtm/uiData/inc/RoMtmCommands.hrh	Wed Sep 01 12:21:16 2010 +0100
@@ -22,6 +22,8 @@
 
 // INCLUDE FILES
 
+#include <MtmExtendedCapabilities.hrh>
+
 /**
 * The following enum constants define those Ro MTM specific commands that 
 * are supported by the client or the UI MTM components.
--- a/omadrm/drmplugins/drmromtm/uiData/src/RoMtmDat.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmromtm/uiData/src/RoMtmDat.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -40,6 +40,7 @@
 
 #include <msvapi.h>
 #include <RoMtmUi.rsg>
+#include <muiu.mbg>
 #include <mtmuids.h>
 #include <mtmuidef.hrh>
 #include <stringresourcereader.h>
@@ -560,8 +561,8 @@
     {
     MAknsSkinInstance* skins = AknsUtils::SkinInstance();
     TAknsItemID id;
-    //CFbsBitmap* bitmap;
-    //CFbsBitmap* bitmapMask;
+    CFbsBitmap* bitmap;
+    CFbsBitmap* bitmapMask;
     CBitmapArray* array = NULL;
     TParse tp;
     tp.Set( KRoMtmUiDataBitmapFile, &KDC_APP_BITMAP_DIR, NULL );
@@ -571,6 +572,14 @@
     
     id.Set( KAknsIIDQgnPropMcePushUnread );
 
+    AknsUtils::CreateIconL( skins, id, bitmap,
+        bitmapMask, tp.FullName(), EMbmMuiuQgn_prop_mce_push_unread,
+        EMbmMuiuQgn_prop_mce_push_unread_mask );
+             
+    array->AppendL( bitmap );
+    bitmap = 0;
+    array->AppendL( bitmapMask );
+    bitmapMask = 0;
     iIconArrays->AppendL( array );
     CleanupStack::Pop(); //array
     
@@ -579,6 +588,14 @@
     
     id.Set( KAknsIIDQgnPropMcePushRead );
 
+    AknsUtils::CreateIconL( skins, id, bitmap,
+        bitmapMask, tp.FullName(), EMbmMuiuQgn_prop_mce_push_read,
+        EMbmMuiuQgn_prop_mce_push_read_mask );
+             
+    array->AppendL( bitmap );
+    bitmap = 0;
+    array->AppendL( bitmapMask );
+    bitmapMask = 0;
     iIconArrays->AppendL( array );
     CleanupStack::Pop(); //array
     }
--- a/omadrm/drmplugins/drmromtm/uiData/src/RoMtmUi.rss	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/drmplugins/drmromtm/uiData/src/RoMtmUi.rss	Wed Sep 01 12:21:16 2010 +0100
@@ -29,6 +29,8 @@
 #include <avkon.rsg>
 #include <avkon.loc>
 #include <mtud.rh>
+#include <MtmExtendedCapabilities.hrh>
+#include <muiu.mbg>
 #include <data_caging_paths_strings.hrh>
 
 #include "RoMtmCommands.hrh"
@@ -53,6 +55,17 @@
 RESOURCE TBUF80 r_roud_not_supported  {buf="This action is not supported";}
 
 
+RESOURCE AKN_ICON_ARRAY r_ronsm_icons
+    {
+    bmpfile = APP_BITMAP_DIR"\\Muiu.mbm";
+
+    icons =
+        {
+        AKN_ICON { iconId = EMbmMuiuQgn_prop_mce_push_unread;
+                   maskId = EMbmMuiuQgn_prop_mce_push_unread_mask; }
+        };
+    }
+
 // -----------------------------------------------------------------------------
 //
 // r_romtmui_trigger_confirmation_query
--- a/omadrm/group/bld.inf	Tue Aug 31 15:29:38 2010 +0300
+++ b/omadrm/group/bld.inf	Wed Sep 01 12:21:16 2010 +0100
@@ -111,9 +111,17 @@
 // Recognizer
 ../drmplugins/drmrecognizer/group/RecDRM.mmp
 
+// Ro Handler (only used if OMA DRM 1.0 Full is enabled)
+#ifdef __DRM_FULL
+../drmplugins/drmrohandler/group/crohandler.mmp
+#endif
+
 // DRMFilter
 ../drmplugins/drmfilter/group/HTTPFilterDRM.mmp
 
+// DRMHelper
+../drmhelper/group/Drmhelper.mmp
+
 #ifdef SBSV2
 PRJ_EXTENSIONS
 
--- a/omadrm/omadrm.pro	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#
-# 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: qt changes for OMADRM 
-#
-
-TEMPLATE = subdirs
-
-CONFIG += ordered
-DEFINES += __DRM_FULL
-
-contains(DEFINES, __DRM_FULL): SUBDIRS += drmplugins/drmrohandler/group/rohandler.pro
-SUBDIRS += drmhelper/group/drmhelper.pro
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdef_1_4_0.dtd	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,86 @@
+ <!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>  
--- a/sysdef_1_5_1.dtd	Tue Aug 31 15:29:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +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
-  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>  
--- a/wmdrm/camese/cameseutility/group/CameseUtility.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/cameseutility/group/CameseUtility.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -33,7 +33,7 @@
 USERINCLUDE             ../../inc
 
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE           /epoc32/include/ecom
 
 LIBRARY                 euser.lib
 LIBRARY                 flogger.lib
--- a/wmdrm/camese/httpfiltercamese/Src/httpfiltercamesedrmheader.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/httpfiltercamese/Src/httpfiltercamesedrmheader.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -21,6 +21,7 @@
 #include <es_enum.h>
 #include <utf.h>
 #include <centralrepository.h> // - Album Download
+#include <featdiscovery.h>
 
 #include "httpfiltercamesedrmheader.h"
 #include "httpfiltercamesedatasupplier.h"
@@ -263,10 +264,23 @@
     	{	    
         if ( contentTypeVal.StrF().DesC().MatchF( KDataTypeCameseDRM ) != 
             KErrNotFound )
-	    	{
-	    	CAMESE_LOG( "CHttpFilterCameseDrmHeader::CheckResponseHeaders Found Drm Header" );            
-            StartDrmHeaderCaptureL( aTrans );
-	    	}
+			    	{
+			    	CAMESE_LOG( "CHttpFilterCameseDrmHeader::CheckResponseHeaders Found Drm Header" );
+	
+						TUid u = TUid::Uid( KFeatureIdFfWmdrmDlaSupport );
+						TBool wmDrmDlaSupportOn = ETrue;
+						TRAPD(err, wmDrmDlaSupportOn = CFeatureDiscovery::IsFeatureSupportedL( u ));
+												
+						if(wmDrmDlaSupportOn)
+								{
+				    		StartDrmHeaderCaptureL( aTrans );
+				    		}
+			    	else if(!err)
+			    			{
+			    			aTrans.Response().SetStatusCode( KErrCompletion );
+			    			aTrans.Fail();
+			    			}
+		        }
     	}
     }
     
--- a/wmdrm/camese/httpfiltercamese/group/httpfiltercamese.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/httpfiltercamese/group/httpfiltercamese.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -53,8 +53,9 @@
 LIBRARY                 inetprotutil.lib
 LIBRARY                 esock.lib
 LIBRARY                 ecom.lib
-LIBRARY         		charconv.lib
-LIBRARY					wmdrmdla.lib
+LIBRARY         				charconv.lib
+LIBRARY									wmdrmdla.lib
 LIBRARY                 centralrepository.lib // central repository
+LIBRARY									featdiscovery.lib 
 
 SMPSAFE
--- a/wmdrm/camese/wmdrmdla/group/wmdrmdla.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/wmdrmdla/group/wmdrmdla.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -43,7 +43,7 @@
 USERINCLUDE			    ../../../inc
 
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE           /epoc32/include/ecom
 
 LIBRARY                 euser.lib
 LIBRARY					efsrv.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/camese/wmdrmdla/inc/wmdrmdlahandler.h	Wed Sep 01 12:21:16 2010 +0100
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or 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:  Interface class for WMDRM DLA functionality
+*
+*/
+
+
+#ifndef C_WMDRMDLAHANDLER_H
+#define C_WMDRMDLAHANDLER_H
+
+#include <e32base.h>
+#include <f32file.h>
+
+class CWmDrmDlaHandlerImpl;
+
+/**
+ *  WMDRM DLA Interface
+ *
+ *  @lib wmdrmdla.lib
+ *  @since S60 v9.1
+ */
+NONSHARABLE_CLASS( CWmDrmDlaHandler ) : public CBase
+    {
+
+public:
+
+    IMPORT_C static CWmDrmDlaHandler* NewL();
+    IMPORT_C static CWmDrmDlaHandler* NewLC();
+
+    /**
+    * Destructor.
+    */
+    virtual ~CWmDrmDlaHandler();
+
+    /**
+     * Checks if license acquisition for file is silent
+     *
+     * @param   aFile wmdrm file
+     * @return  ETrue if license acquisition is silent
+     * @leave   KErrNotFound if there is no handler for the file
+     */
+    IMPORT_C TBool SilentL( const RFile& aFile );
+
+    /**
+     * Acquire license based on the file handle
+     *
+     * @param   aFile wmdrm file
+     * @param   aContentUrl contains content URL on return. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @param   aHtmlData contains HTML data returned by license server on
+     *                    return. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @leave   KErrNotFound if there is no handler for the file
+     */
+    IMPORT_C void AcquireLicenseL( const RFile& aFile, HBufC*& aContentUrl, 
+                                   HBufC*& aHtmlData );
+
+    /**
+     * Acquire license based on the file handle, asynchronous version
+     *
+     * @param   aFile wmdrm file
+     * @param   aContentUrl contains content URL on completion. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @param   aHtmlData contains HTML data returned by license server on 
+     *                    completion. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @param   aStatus Request status. On completion contains the error code.
+     */
+    IMPORT_C void AcquireLicense( const RFile& aFile, HBufC*& aContentUrl, 
+                                  HBufC*& aHtmlData, TRequestStatus& aStatus );
+
+    /**
+     * Acquire license based on the DRM Header
+     *
+     * @param   aDrmHeader DRM Header
+     * @param   aErrorUrl   URL where error code is sent. Can be NULL.
+     * @param   aContentUrl contains content URL on return. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @param   aHtmlData contains HTML data returned by license server on 
+     *                    return. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @leave   KErrNotFound if there is no handler for the file
+     */
+    IMPORT_C void AcquireLicenseFromDrmHeaderL( const TDesC8& aDrmHeader,
+                                                HBufC* aErrorUrl,
+                                                HBufC*& aContentUrl, 
+                                                HBufC*& aHtmlData );
+
+    /**
+     * Acquire license based on the DRM Header, asynchronous version
+     *
+     * @param   aDrmHeader DRM Header
+     * @param   aErrorUrl   URL where error code is sent. Can be NULL.
+     * @param   aContentUrl contains content URL on completion. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @param   aHtmlData contains HTML data returned by license server on
+     *                    completion. Can be NULL.
+     * If it's not NULL, it must be freed by caller.  
+     * @param   aStatus Request status. On completion contains the error code.
+     */
+    IMPORT_C void AcquireLicenseFromDrmHeader( const TDesC8& aDrmHeader, 
+                                               HBufC* aErrorUrl,
+                                               HBufC*& aContentUrl, 
+                                               HBufC*& aHtmlData, 
+                                               TRequestStatus& aStatus );
+
+    /**
+     * Cancels ongoing license acquisition
+     *
+     */
+    IMPORT_C void CancelLicenseAcquisition();
+
+    /**
+     * Handles metering certificate OTA
+     *
+     * @param   aCertificate metering certificate
+     */
+    IMPORT_C void ProcessMeteringCertificateL( const TDesC8& aCertificate );
+
+    /**
+     * Handles metering certificate OTA, asynchronous version
+     *
+     * @param   aCertificate metering certificate
+     * @param   aStatus Request status. On completion contains the error code.
+     */
+    IMPORT_C void ProcessMeteringCertificate( const TDesC8& aCertificate, 
+                                              TRequestStatus& aStatus );
+
+    /**
+     * Cancels ongoing metering
+     *
+     */
+    IMPORT_C void CancelMetering();
+
+    /**
+     * Sets the IAP to be used in the HTTP transactions
+     *
+     * @param   aIapId  Internet Access Point id
+     */
+    IMPORT_C void SetIapId( TInt aIapId );
+
+protected:
+
+private:
+
+    CWmDrmDlaHandler();
+
+    void ConstructL();
+
+private: // data
+
+    /**
+     * Implementation class
+     * Own.
+     */
+    CWmDrmDlaHandlerImpl* iImpl;
+
+    };
+
+#endif // C_WMDRMDLAHANDLER_H
--- a/wmdrm/camese/wmdrmdla/inc/wmdrmdlahttpfwpluginresolver.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/wmdrmdla/inc/wmdrmdlahttpfwpluginresolver.h	Wed Sep 01 12:21:16 2010 +0100
@@ -20,7 +20,7 @@
 #define WMDRMDLAHTTPFWPLUGINRESOLVER_H
 
 #include <e32base.h>
-#include <ecom/implementationinformation.h>
+#include <implementationinformation.h>
 
 class CWmDrmDlaPluginContainer;
 class CAknIconArray;
--- a/wmdrm/camese/wmdrmdlaapp/inc/wmdrmdlabrowsercontainer.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/wmdrmdlaapp/inc/wmdrmdlabrowsercontainer.h	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -22,22 +22,56 @@
 #include <coecntrl.h>
 
 class CAknView;
+class MBrCtlSpecialLoadObserver;
+class CBrCtlInterface;
 
 class CWmDrmDlaBrowserContainer : public CCoeControl
     {
 
     public:
 
+        static CWmDrmDlaBrowserContainer* NewL( CAknView* aView, 
+                                                MBrCtlSpecialLoadObserver* aObserver );
+        static CWmDrmDlaBrowserContainer* NewLC( CAknView* aView, 
+                                                 MBrCtlSpecialLoadObserver* aObserver );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CWmDrmDlaBrowserContainer();
+        
+        /**
+         * Returns pointer to the CBrCtlInterface owned by the container.
+         * @return A pointer to CBrCtlInterface
+         */        
+        CBrCtlInterface* BrCtlInterface();
+    
+        
     public: // From CCoeControl
 
         /**
          * @see CCoeControl
          */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+        
+        /**
+         * @see CCoeControl
+         */
+        TInt CountComponentControls() const;
+
+        /**
+         * @see CCoeControl
+         */
         CCoeControl* ComponentControl( TInt aIndex ) const;
 
         /**
          * @see CCoeControl
          */
+        void SizeChanged();
+
+        /**
+         * @see CCoeControl
+         */
         void FocusChanged( TDrawNow aDrawNow );
         
         /**
@@ -48,12 +82,15 @@
     private:
 
         CWmDrmDlaBrowserContainer( CAknView* aView );
+        void ConstructL( MBrCtlSpecialLoadObserver* aObserver );
 
     private: // data
    
         //Not owned
         CAknView* iView;
         
+        CBrCtlInterface* iBrCtlInterface;
+        
     };
 
 #endif // C_WMDRMDLABROWSERCONTAINER_H
--- a/wmdrm/camese/wmdrmdlaapp/inc/wmdrmdlabrowserview.h	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/wmdrmdlaapp/inc/wmdrmdlabrowserview.h	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -20,6 +20,7 @@
 #define C_WMDRMDLABROWSERVIEW_H
 
 #include <aknview.h>
+#include <brctlspecialloadobserver.h>
 
 class CWmDrmDlaBrowserContainer;
 class CInternetConnectionManager;
@@ -29,13 +30,14 @@
  */
 class MBrowserViewLicenseReceivedCallback
     {
-    public:
-
+    public: 
+        
         virtual void LicenseReceived() = 0;
 
     };
 
-class CWmDrmDlaBrowserView : public CAknView
+class CWmDrmDlaBrowserView : public CAknView, 
+                             public MBrCtlSpecialLoadObserver
     {
 
     public:
@@ -47,6 +49,33 @@
          * Destructor.
          */
         virtual ~CWmDrmDlaBrowserView();
+        
+        /**
+         * Set the IAP that is used in network connection
+         * @param aIap - IAP to be used 
+         */
+        void SetIAP( TInt aIap );
+        
+        /**
+         * Make a POST-request
+         * @param aCallback - Callback used to inform when license 
+         *                    response is received
+         * @param aPostUrl - Post URL
+         * @param aPostContentType - Post content type
+         * @param aPostData - Post data
+         * @param aPostContentBoundary - Post content boundary
+         */
+        void PostL( MBrowserViewLicenseReceivedCallback* aCallback,
+                    const TDesC& aPostUrl,
+                    const TDesC8& aPostContentType,
+                    const TDesC8& aPostData,
+                    const TDesC8& aPostContentBoundary );
+        
+        /**
+         * Get the license response
+         * @return License response or NULL
+         */
+        HBufC8* LicenseResponse();
 
     public: // From CAknView
 
@@ -58,6 +87,11 @@
         /**
         * @see CAknView
         */
+        void HandleCommandL( TInt aCommand );
+
+        /** 
+        * @see CAknView
+        */
         void DoActivateL( const TVwsViewId& aPrevViewId,
                           TUid aCustomMessageId,
                           const TDesC8& aCustomMessage );
@@ -69,15 +103,26 @@
         /**
         * @see CAknView
         */
-        void HandleClientRectChange();
-
+        void HandleClientRectChange();    
+    
     public: // From MBrCtlSpecialLoadObserver
 
+        void NetworkConnectionNeededL( TInt* aConnectionPtr, 
+                                       TInt* aSockSvrHandle, 
+                                       TBool* aNewConn, 
+                                       TApBearerType* aBearerType );
+
+        TBool HandleRequestL( RArray<TUint>* aTypeArray, 
+                              CDesCArrayFlat* aDesArray );
+
+        TBool HandleDownloadL( RArray<TUint>* aTypeArray, 
+                               CDesCArrayFlat* aDesArray );    
+        
     private:
 
         CWmDrmDlaBrowserView();
         void ConstructL();
-
+        
         void CreateContainerL();
         void RemoveContainer();
         void BrCtlHandleCommandL( TInt aCommand );
@@ -86,7 +131,7 @@
 
         //Not Owned
         MBrowserViewLicenseReceivedCallback* iCallback;
-
+        
         CWmDrmDlaBrowserContainer* iContainer;
         HBufC8* iLicenseResponse;
         CInternetConnectionManager* iConMgr;
--- a/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlaappservicesession.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlaappservicesession.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -121,6 +121,8 @@
         }
     aMessage.ReadL( 0, iapPckg );
     
+    BrowserView()->SetIAP( iap );
+    
     CompleteMessage( aMessage, KErrNone );
     }
 
@@ -157,6 +159,12 @@
     ptr8.Set( postContentBoundary->Des() );
     aMessage.ReadL( 3, ptr8 );
     
+    BrowserView()->PostL( this, 
+                          *postUrl, 
+                          *postContentType, 
+                          *postData, 
+                          *postContentBoundary );
+    
     CleanupStack::PopAndDestroy( 4, postUrl ); //postContentBoundary, postData,
                                                //postContentType, postUrl
     
@@ -179,7 +187,16 @@
     {
     TInt err( KErrNone );
     
+    HBufC8* licenseResponse( BrowserView()->LicenseResponse() );
+    if ( licenseResponse )
+        {
+        TInt licenseSize( licenseResponse->Size() );
+        aMessage.WriteL( 0, TPckg<TInt>( licenseSize ) );
+        }
+    else
+        {
         err = KErrArgument;
+        }
     
     CompleteMessage( aMessage, err );
     }
@@ -192,8 +209,16 @@
     {
     TInt err( KErrNone );
     
+    HBufC8* licenseResponse( BrowserView()->LicenseResponse() );
+    if ( licenseResponse )
+        {
+        aMessage.WriteL( 0, *licenseResponse );
+        }
+    else
+        {
         err = KErrArgument;
-   
+        }
+    
     CompleteMessage( aMessage, err );
     }
 
--- a/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -19,12 +19,49 @@
 // INCLUDE FILES
 #include <AknDef.h>
 #include <aknview.h>
+#include <brctlinterface.h>
 #include "wmdrmdlabrowserview.h"
 #include "wmdrmdlabrowsercontainer.h"
 
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaBrowserContainer::ConstructL(
+    MBrCtlSpecialLoadObserver* aObserver )
+    {
+    CreateWindowL();
+    SetRect( iView->ClientRect() );
+    
+    iBrCtlInterface = CreateBrowserControlL(
+            this,                                      // parent control
+            iView->ClientRect(),                       // client rect
+            TBrCtlDefs::ECapabilityLoadHttpFw |
+            TBrCtlDefs::ECapabilityDisplayScrollBar |
+            TBrCtlDefs::ECapabilityUseDlMgr |
+            TBrCtlDefs::ECapabilityCursorNavigation,   // Capabilities
+            TBrCtlDefs::ECommandIdBase,                // command base
+            NULL,                                      // Softkeys observer
+            NULL,                                      // LinkResolver
+            aObserver,                                 // Special load observer
+            NULL,                                      // Layout Observer
+            NULL,                                      // Dialog provider
+            NULL,                                      // window observer
+            NULL                                       // Download observer
+            );
+
+    iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsAutoLoadImages,
+                                         ETrue );
+    iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsCookiesEnabled,
+                                         ETrue );
+    iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsEmbedded,
+                                         ETrue );
+    ActivateL();
+    }
+
+// ---------------------------------------------------------------------------
 // CWmDrmDlaBrowserContainer::CWmDrmDlaBrowserContainer
 // ---------------------------------------------------------------------------
 //
@@ -34,6 +71,84 @@
     }
 
 // ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::NewL
+// ---------------------------------------------------------------------------
+//
+CWmDrmDlaBrowserContainer* CWmDrmDlaBrowserContainer::NewL(
+    CAknView* aView,
+    MBrCtlSpecialLoadObserver* aObserver )
+    {
+    CWmDrmDlaBrowserContainer* self
+        = CWmDrmDlaBrowserContainer::NewLC( aView, aObserver );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::NewLC
+// ---------------------------------------------------------------------------
+//
+CWmDrmDlaBrowserContainer* CWmDrmDlaBrowserContainer::NewLC(
+    CAknView* aView,
+    MBrCtlSpecialLoadObserver* aObserver )
+    {
+    CWmDrmDlaBrowserContainer* self
+        = new( ELeave ) CWmDrmDlaBrowserContainer( aView );
+    CleanupStack::PushL( self );
+    self->ConstructL( aObserver );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::~CWmDrmDlaBrowserContainer
+// ---------------------------------------------------------------------------
+//
+CWmDrmDlaBrowserContainer::~CWmDrmDlaBrowserContainer()
+    {
+    if(iBrCtlInterface != NULL)
+    {
+    TRAP_IGNORE( iBrCtlInterface->HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase ));	
+    }	
+    delete iBrCtlInterface;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::BrCtlInterface
+// ---------------------------------------------------------------------------
+//
+CBrCtlInterface* CWmDrmDlaBrowserContainer::BrCtlInterface()
+    {
+    return iBrCtlInterface;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::CountComponentControls
+// ---------------------------------------------------------------------------
+//
+TInt CWmDrmDlaBrowserContainer::CountComponentControls() const
+    {
+    if ( iBrCtlInterface )
+        {
+        return 1;
+        }
+    return 0;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::SizeChanged
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaBrowserContainer::SizeChanged()
+    {
+    if ( iBrCtlInterface )
+        {
+        iBrCtlInterface->SetRect( Rect() );
+        }
+    }
+
+// ---------------------------------------------------------------------------
 // CWmDrmDlaBrowserContainer::ComponentControl
 // ---------------------------------------------------------------------------
 //
@@ -42,18 +157,37 @@
     {
     switch ( aIndex )
         {
+        case 0:
+            return iBrCtlInterface;
+
         default:
             return NULL;
         }
     }
 
 // ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserContainer::OfferKeyEventL
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CWmDrmDlaBrowserContainer::OfferKeyEventL(
+    const TKeyEvent& aKeyEvent,
+    TEventCode aType )
+    {
+    if ( iBrCtlInterface )
+        {
+        return iBrCtlInterface->OfferKeyEventL( aKeyEvent, aType );
+        }
+    return EKeyWasNotConsumed;
+    }
+
+// ---------------------------------------------------------------------------
 // CWmDrmDlaBrowserContainer::FocusChanged
 // ---------------------------------------------------------------------------
 //
 void CWmDrmDlaBrowserContainer::FocusChanged(
     TDrawNow aDrawNow )
     {
+    iBrCtlInterface->SetFocus( IsFocused() );
     CCoeControl::FocusChanged( aDrawNow );
     }
 
@@ -64,6 +198,10 @@
 void CWmDrmDlaBrowserContainer::HandleResourceChange(
     TInt aType )
     {
+    if ( iBrCtlInterface )
+        {
+        iBrCtlInterface->HandleResourceChange( aType );
+        }
     CCoeControl::HandleResourceChange( aType );
     if ( aType == KEikDynamicLayoutVariantSwitch )
         {
--- a/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowserview.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowserview.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -22,13 +22,15 @@
 #include <aknViewAppUi.h>
 #include <coeaui.h>
 #include <coecntrl.h>
-#include <InternetConnectionManager.h>
+#include <brctlinterface.h>
+#include <internetconnectionmanager.h>
 #include <wmdrmdlaapp.rsg>
 #include "wmdrmdlabrowserview.h"
 #include "wmdrmdlabrowsercontainer.h"
 #include "wmdrmdlaappconstants.h"
 
 // CONTANTS
+_LIT( KDataTypeLicenseResponse, "application/vnd.ms-wmdrm.lic-resp" );
 
 // ======== LOCAL FUNCTIONS ========
 
@@ -89,6 +91,46 @@
     }
 
 // ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::SetIAP
+// ---------------------------------------------------------------------------
+//
+
+void CWmDrmDlaBrowserView::SetIAP( TInt aIap )
+    {
+    iIap = aIap;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::PostL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaBrowserView::PostL(
+    MBrowserViewLicenseReceivedCallback* aCallback,
+    const TDesC& aPostUrl,
+    const TDesC8& aPostContentType,
+    const TDesC8& aPostData,
+    const TDesC8& aPostContentBoundary )
+    {
+    iCallback = aCallback;
+    iContainer->BrCtlInterface()->PostUrlL( aPostUrl,
+                                            aPostContentType,
+                                            aPostData,
+                                            &aPostContentBoundary,
+                                            (TAny*)iContainer );
+    iContainer->BrCtlInterface()->SetFocus( ETrue, EDrawNow );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::LicenseResponse
+// ---------------------------------------------------------------------------
+//
+
+HBufC8* CWmDrmDlaBrowserView::LicenseResponse()
+    {
+    return iLicenseResponse;
+    }
+
+// ---------------------------------------------------------------------------
 // CWmDrmDlaBrowserView::Id
 // ---------------------------------------------------------------------------
 //
@@ -98,6 +140,28 @@
     }
 
 // ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::HandleCommandL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaBrowserView::HandleCommandL(
+    TInt aCommand )
+    {
+    if ( aCommand >= TBrCtlDefs::ECommandIdBase +
+                     TBrCtlDefs::ECommandIdWMLBase &&
+         aCommand <= TBrCtlDefs::ECommandIdBase +
+                     TBrCtlDefs::ECommandIdRange )
+        {
+        BrCtlHandleCommandL( aCommand );
+        }
+    else
+        {
+        iContainer->BrCtlInterface()->HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + 
+                                                      (TInt)TBrCtlDefs::ECommandIdBase );            
+        AppUi()->HandleCommandL( aCommand );
+        }
+    }
+
+// ---------------------------------------------------------------------------
 // CWmDrmDlaBrowserView::DoActivateL
 // ---------------------------------------------------------------------------
 //
@@ -139,6 +203,8 @@
 void CWmDrmDlaBrowserView::CreateContainerL()
     {
     RemoveContainer();
+    iContainer = CWmDrmDlaBrowserContainer::NewL( this, this );
+    iContainer->SetMopParent( this );
     }
 
 // ---------------------------------------------------------------------------
@@ -154,3 +220,105 @@
         iContainer = NULL;
         }
     }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::BrCtlHandleCommandL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaBrowserView::BrCtlHandleCommandL( TInt aCommand )
+    {
+    iContainer->BrCtlInterface()->HandleCommandL( aCommand );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::NetworkConnectionNeededL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaBrowserView::NetworkConnectionNeededL(
+    TInt* aConnectionPtr,
+    TInt* aSockSvrHandle,
+    TBool* aNewConn,
+    TApBearerType* aBearerType )
+    {
+    TInt ret( 0 );
+    // If not connected, try to start a new connection
+    if ( !iConMgr->Connected() )
+        {
+        iConMgr->SetRequestedAP( iIap );
+        ret = iConMgr->StartConnectionL( ETrue );
+        }
+
+    // If connected, return needed info to framework
+    if ( !ret )
+        {
+        *aConnectionPtr =  reinterpret_cast<TInt>(&iConMgr->Connection() );
+        *aSockSvrHandle =  iConMgr->SocketServer().Handle();
+        *aNewConn = EFalse;
+        *aBearerType = EApBearerTypeAllBearers;
+        }
+    else
+        {
+        User::Leave( KErrCancel );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::HandleRequestL
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaBrowserView::HandleRequestL(
+    RArray<TUint>* /*aTypeArray*/,
+    CDesCArrayFlat* /*aDesArray*/ )
+    {
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaBrowserView::HandleDownloadL
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaBrowserView::HandleDownloadL(
+    RArray<TUint>* aTypeArray,
+    CDesCArrayFlat* aDesArray )
+    {
+    //Check that content type and local file name exists
+    //There must be both, because download manager downloads POST-content
+    //in advance calling this function
+    TInt contentTypeIndex( aTypeArray->Find( EParamReceivedContentType ) );
+    TInt fileNameIndex( aTypeArray->Find( EParamLocalFileName ) );
+    if ( contentTypeIndex != KErrNotFound &&
+         fileNameIndex != KErrNotFound &&
+         contentTypeIndex < aDesArray->Count() &&
+         fileNameIndex < aDesArray->Count() )
+        {
+        //Check that the downloaded content is license response
+        TPtrC16 dataTypePtr( (*aDesArray)[contentTypeIndex] );
+        if ( dataTypePtr.CompareF( KDataTypeLicenseResponse ) == 0 )
+            {
+            //Get the path to the license response,
+            //read the response, delete the file and
+            //make a license received - callback
+            TPtrC16 filePathPtr( (*aDesArray)[fileNameIndex] );
+            RFs fs;
+            User::LeaveIfError( fs.Connect() );
+            CleanupClosePushL( fs );
+            RFile file;
+            TInt size( 0 );
+            User::LeaveIfError( file.Open( fs, filePathPtr, EFileRead ) );
+            CleanupClosePushL( file );
+            User::LeaveIfError( file.Size( size ) );
+            delete iLicenseResponse;
+            iLicenseResponse = NULL;
+            iLicenseResponse = HBufC8::NewL( size );
+            TPtr8 licensePtr( iLicenseResponse->Des() );
+            User::LeaveIfError( file.Read( 0, licensePtr, size ) );
+            CleanupStack::PopAndDestroy( &file );
+            User::LeaveIfError( fs.Delete( filePathPtr ) );
+            CleanupStack::PopAndDestroy( &fs );
+            iCallback->LicenseReceived();
+            return ETrue;
+            }
+        }
+    return EFalse;
+    }
+
--- a/wmdrm/wmdrmengine/wmdrmaccess/group/wmdrmaccess.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/wmdrmengine/wmdrmaccess/group/wmdrmaccess.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -30,7 +30,7 @@
 SOURCE          wmdrmaccess.cpp
 
 MW_LAYER_SYSTEMINCLUDE
-
+SYSTEMINCLUDE   /epoc32/include/ecom
 
 USERINCLUDE     ../inc
 
--- a/wmdrm/wmdrmengine/wmdrmaccess/src/wmdrmaccess.cpp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/wmdrmengine/wmdrmaccess/src/wmdrmaccess.cpp	Wed Sep 01 12:21:16 2010 +0100
@@ -17,7 +17,7 @@
 */
 
 #include <e32base.h>
-#include <ecom/ecom.h>
+#include <ecom.h>
 
 #include <wmdrmaccess.h>
 #include <wmdrmaccessecominterface.h>
--- a/wmdrm/wmdrmengine/wmdrmagent/group/wmdrmagent.mmp	Tue Aug 31 15:29:38 2010 +0300
+++ b/wmdrm/wmdrmengine/wmdrmagent/group/wmdrmagent.mmp	Wed Sep 01 12:21:16 2010 +0100
@@ -31,6 +31,10 @@
 // Generic MW include paths
 MW_LAYER_SYSTEMINCLUDE
 
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/caf
+SYSTEMINCLUDE   /epoc32/include/Ecom
+
 USERINCLUDE     ../inc
 USERINCLUDE     ../../../inc
 USERINCLUDE     ../../asf/inc