Re-merge fixes for bug 1993 and bug 2121 RCL_3 PDK_3.0.1
authorDario Sestito <darios@symbian.org>
Tue, 13 Jul 2010 13:57:53 +0100
branchRCL_3
changeset 58 5816b2634c8a
parent 55 ad2863178d17 (diff)
parent 37 bd9b181e836a (current diff)
child 68 c027dc8514da
Re-merge fixes for bug 1993 and bug 2121
omadrm/drmengine/group/CryptoPrep.flm
--- a/commondrm/drmrightsmanagerui/data/DRMRightsManager.rss	Fri May 28 13:54:35 2010 +0100
+++ b/commondrm/drmrightsmanagerui/data/DRMRightsManager.rss	Tue Jul 13 13:57:53 2010 +0100
@@ -74,7 +74,7 @@
     caption_and_icon =
     CAPTION_AND_ICON_INFO
         {
-        caption = qtn_drm_mgr;
+        caption = " ";
 
 #ifdef __SCALABLE_ICONS
         number_of_icons = 1;
--- a/commondrm/drmrightsmanagerui/inc/DRMRightsMgrAppUi.h	Fri May 28 13:54:35 2010 +0100
+++ b/commondrm/drmrightsmanagerui/inc/DRMRightsMgrAppUi.h	Tue Jul 13 13:57:53 2010 +0100
@@ -25,9 +25,9 @@
 #include <AknProgressDialog.h>
 #include <apparc.h>
 #include <DRMRightsClient.h>
-#include <drmconstraint.h>
+#include <DrmConstraint.h>
 
-#include "drmclockclient.h"
+#include "DRMClockClient.h"
 #include "DrmViewItems.h"
 
 #include "DRMRightsManager.hrh"
--- a/commondrm/drmrightsmanagerui/loc/DRMRightsManager.loc	Fri May 28 13:54:35 2010 +0100
+++ b/commondrm/drmrightsmanagerui/loc/DRMRightsManager.loc	Tue Jul 13 13:57:53 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.
--- a/commondrm/drmutility/inc/DrmUiHandlingImpl.h	Fri May 28 13:54:35 2010 +0100
+++ b/commondrm/drmutility/inc/DrmUiHandlingImpl.h	Tue Jul 13 13:57:53 2010 +0100
@@ -817,7 +817,7 @@
     * CallSilentAvailble after right
     * @return Etrue, if silent RO rerieval led to usable content
     */
-    TBool CDrmUiHandlingImpl::GetSilentAndCallL(
+    TBool GetSilentAndCallL(
         MDrmHandleErrorObserver* aObserver,
         TInt aOperationId,
         const ContentAccess::TIntent aIntent,
@@ -830,7 +830,7 @@
     * checks status if launched embedded.
     * CallRightsAvailable, if launched embedded or righsUrl not present
     */
-    void CDrmUiHandlingImpl::GetRightsAndCallL(
+    void GetRightsAndCallL(
         MDrmHandleErrorObserver* aObserver,
         TInt aOperationId,
         const ContentAccess::TIntent aIntent,
--- a/commondrm/drmutility/loc/DRMUtility.loc	Fri May 28 13:54:35 2010 +0100
+++ b/commondrm/drmutility/loc/DRMUtility.loc	Tue Jul 13 13:57:53 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
@@ -166,4 +166,4 @@
 //w:
 //r: 9.2
 //
-#define qtn_drm_sync_with_pc "You must have valid license to play %U. Please sync your phone with your PC to update license."
+#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/drm_plat/dcf_repository_api/inc/DcfRep.h	Fri May 28 13:54:35 2010 +0100
+++ b/drm_plat/dcf_repository_api/inc/DcfRep.h	Tue Jul 13 13:57:53 2010 +0100
@@ -23,8 +23,8 @@
 //  INCLUDES
 #include <e32base.h>
 #include <f32file.h>
-#include <D32DBMS.H>
-#include "dcfrepcli.h"
+#include <d32dbms.h>
+#include "DcfRepCli.h"
 // CONSTANTS
 // MACROS
 // DATA TYPES
--- a/drm_plat/drm_common_api/inc/DRMCommon.h	Fri May 28 13:54:35 2010 +0100
+++ b/drm_plat/drm_common_api/inc/DRMCommon.h	Tue Jul 13 13:57:53 2010 +0100
@@ -21,7 +21,7 @@
 #define DRMCOMMON_H
 
 #include <e32base.h>
-#include <DrmRights.h>
+#include <DRMRights.h>
 #include <caf/caf.h>
 
 const TUint KDrmMaxContentInfoSize = 512;
--- a/drm_plat/drm_rights_api/inc/DcfCommon.h	Fri May 28 13:54:35 2010 +0100
+++ b/drm_plat/drm_rights_api/inc/DcfCommon.h	Tue Jul 13 13:57:53 2010 +0100
@@ -23,8 +23,8 @@
 //  INCLUDES
 #include <apmstd.h>
 #include <f32file.h>
-#include <oma2agent.h>
-#include <drmtypes.h>
+#include <Oma2Agent.h>
+#include <DRMTypes.h>
 
 using namespace ContentAccess;
 // CONSTANTS
--- a/drm_plat/drm_service_api/inc/drmserviceapi.h	Fri May 28 13:54:35 2010 +0100
+++ b/drm_plat/drm_service_api/inc/drmserviceapi.h	Tue Jul 13 13:57:53 2010 +0100
@@ -21,7 +21,7 @@
 #define C_CDRMSERVICEAPI_H
 
 #include <e32base.h>
-#include "drmtypes.h"
+#include "DRMTypes.h"
 
 // Forward declarations
 class RDRMClockClient;
--- a/drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccess.h	Fri May 28 13:54:35 2010 +0100
+++ b/drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccess.h	Tue Jul 13 13:57:53 2010 +0100
@@ -28,7 +28,9 @@
 *  Functionality
 *
 *  @code
-*  // Way to use CWmDrmOtaAccess
+*  Only one asynchronous operation can be happening at a time.
+*  If another call for async operation is received, this will result in
+*  KErrInUse leave code.
 *
 *  CWmDrmOtaAccess* access( CWmDrmOtaAccess::NewL() );
 *  delete access;
@@ -104,6 +106,17 @@
     */
     IMPORT_C void HandleLicenseResponseL( const TDesC8& aResponse, 
                                           TRequestStatus& aStatus );
+                                          
+                                          
+    /**
+    *  CancelAllAsync
+    *
+    *  Cancel all async methods        
+    *
+    *  @return  None    
+    */
+    IMPORT_C void CancelAllAsync();                              
+                                          
 
 private:
     /** Default constructor */
@@ -116,3 +129,4 @@
 
     };
 #endif // _WMDRM_OTA_ACCESS_API_H_
+
--- a/drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccessecominterface.h	Fri May 28 13:54:35 2010 +0100
+++ b/drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccessecominterface.h	Tue Jul 13 13:57:53 2010 +0100
@@ -22,9 +22,9 @@
 #include <e32base.h>
 
 // Class declaration
-// CWmDrmAccessEcomInterface
-// ecom plugin interface for WM DRM access implementation
-// @see CWmDrmAccess
+// CWmDrmOtaAccessEcomInterface
+// ecom plugin interface for WM DRM ota access implementation
+// @see CWmDrmOtaAccess
 NONSHARABLE_CLASS( CWmDrmOtaAccessEcomInterface ) : public CBase
     {
 public:
@@ -94,6 +94,16 @@
     */
     virtual void HandleLicenseResponseL( const TDesC8& aResponse, 
                                          TRequestStatus& aStatus ) = 0;
+                                              
+    /**
+    *  CancelAllAsync
+    *
+    *  Cancel all async methods        
+    *
+    *  @return  None    
+    */
+    virtual void CancelAllAsync() = 0;                                              
+                                         
 
 private:
     // internal variable used on freeing ecom related resources
@@ -101,4 +111,6 @@
     };
 
 #include "wmdrmotaaccessecominterface.inl"
+
 #endif _WMDRMOTAACCESSECOMINTERFACE_H_
+
--- a/drm_pub/drm_helper_api/loc/DRMCommon.loc	Fri May 28 13:54:35 2010 +0100
+++ b/drm_pub/drm_helper_api/loc/DRMCommon.loc	Tue Jul 13 13:57:53 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/inc/drmrightsdb.h	Fri May 28 13:54:35 2010 +0100
+++ b/inc/drmrightsdb.h	Tue Jul 13 13:57:53 2010 +0100
@@ -57,6 +57,7 @@
 class CDRMRightsCleaner;
 class CDRMRightsServer;
 class CDcfRep;
+class CDRMRightsServer;
 
 // FUNCTION PROTOTYPES
 
@@ -91,7 +92,8 @@
         static CDRMRightsDB* NewLC( RFs& aFs,
                                     const TDesC& aDatabasePath,
                                     const TDesC8& aKey,
-                                    const TDesC& aImei );
+                                    const TDesC& aImei,
+                                    CDRMRightsServer* aServer );
         
         /**
         * NewL
@@ -110,7 +112,8 @@
         static CDRMRightsDB* NewL( RFs& aFs,
                                    const TDesC& aDatabasePath,
                                     const TDesC8& aKey,
-                                    const TDesC& aImei );
+                                    const TDesC& aImei,
+                                    CDRMRightsServer* aServer );
           
         /**
         * Destructor
@@ -327,6 +330,7 @@
         */      
         CDRMRightsCleaner* DeleteExpiredPermissionsL( const TTime& aTime,
                                                       TRequestStatus& aStatus );
+
         
         /**
         * NameContentL
@@ -369,6 +373,21 @@
         */         
         TBool DeleteExpiredL( const TFileName& aFileName,
                              const TTime& aTime );     
+
+        /**
+        * DeleteExpiredL
+        * 
+        * Delete expired from the current file store
+        *
+        * @since    3.0
+        * @param    aFileName : name of the permission file store
+        * @param    aTime : current time.
+        * @return   TBool : ETrue if the file can be deleted
+        *                   EFalse if the file can't be deleted
+        */         
+        TBool DeleteExpiredL( const TFileName& aFileName,
+                             const TTime& aTime,
+                             const TDesC8& aContentId );  
   
         /**
         * GetUdtDataL
@@ -507,7 +526,7 @@
         /**
         * Default Constructor - First phase.
         */
-        CDRMRightsDB( RFs& aFs ); 
+        CDRMRightsDB( RFs& aFs, CDRMRightsServer* aServer ); 
         
         /**
         * ConstructL
@@ -675,6 +694,8 @@
         
         // Time stamp of the last update operation
         TTime iLastUpdate;
+        
+        CDRMRightsServer* iRightsServer;
     };
 
 #endif      // DRMRIGHTSDB_H   
--- a/inc/wmdrmclient.h	Fri May 28 13:54:35 2010 +0100
+++ b/inc/wmdrmclient.h	Tue Jul 13 13:57:53 2010 +0100
@@ -384,6 +384,18 @@
     */
         
     IMPORT_C TInt GetTime( TTime& aTime, TBool& aValid );
+    
+    /**
+    * CommitData
+    * Commits any cached data to storage
+    *
+    * @return KErrNone if successful
+    *         Otherwise Symbian OS error code
+    */
+       
+    IMPORT_C TInt CommitData();    
+    
+    
 	};
 
 #endif
--- a/omadrm/drmengine/agentv2/src/Oma2AgentManager.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/agentv2/src/Oma2AgentManager.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -981,27 +981,7 @@
 //
 void COma2AgentManager::DisplayManagementInfoL()
     {
-    TUid KRightsManagerUid = TUid::Uid(0x101F85C7);
-    RWsSession wsSession;
-    RApaLsSession appArcSession;
-    TThreadId id;
-
-    User::LeaveIfError(wsSession.Connect());
-    CleanupClosePushL(wsSession);
-    TApaTaskList tasklist(wsSession);
-    TApaTask task = tasklist.FindApp(KRightsManagerUid);
-    if (task.Exists())
-        {
-        task.SendMessage(TUid::Uid(KUidApaMessageSwitchOpenFileValue),
-            KNullDesC8);
-        }
-    else
-        {
-        User::LeaveIfError(appArcSession.Connect());
-        appArcSession.StartDocument(_L("0"), KRightsManagerUid, id);
-        appArcSession.Close();
-        }
-    CleanupStack::PopAndDestroy();
-    }
+    User::Leave(KErrCANotSupported);
+  	}
 
 //  End of File
--- a/omadrm/drmengine/group/CryptoPrep.flm	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/group/CryptoPrep.flm	Tue Jul 13 13:57:53 2010 +0100
@@ -17,11 +17,6 @@
 # first instance of this FLM
 _CRYPTOPREP_FLM_:= 1
 
-# darios: changing the value of EPOCROOT while make is running
-# messes up the target dependecies
-# also these two lines are not needed for this flm
-#TMPROOT:=$(subst \,/,$(EPOCROOT))
-#EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
 
 # NB: abspath doesn't like Windows drive letters
 CRYPTO_SOURCE_DRIVE:=$(firstword $(subst :, ,$(EXTENSION_ROOT)))
--- a/omadrm/drmengine/ro/inc/DRMProtectedRoParser.h	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/ro/inc/DRMProtectedRoParser.h	Tue Jul 13 13:57:53 2010 +0100
@@ -278,9 +278,8 @@
         * @since Series 60 3.0
         * @param aProtectedRo protected RO element
         * @return protected RO element, if namespace was not added NULL
-        */
-        HBufC8* CDrmProtectedRoParser::AddRoapNamespaceL(
-            TDesC8& aProtectedRo ) const;
+        */    
+        HBufC8* AddRoapNamespaceL( TDesC8& aProtectedRo ) const;
 
     private:
 
--- a/omadrm/drmengine/server/inc/DRMRightsServer.h	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/server/inc/DRMRightsServer.h	Tue Jul 13 13:57:53 2010 +0100
@@ -40,7 +40,20 @@
 class CDRMBackup;
 class RMobilePhone;
 
-// CLASS DECLARATION
+// CLASS DECLARATIONS
+
+// Data Class:
+NONSHARABLE_CLASS( CUsageUrl ) : public CBase
+    {
+    public:
+        CUsageUrl();
+        virtual ~CUsageUrl();   
+                
+    public: // Data    
+        HBufC8* iUrl;
+        TInt    iRefCounter;        
+    };     
+
 
 /**
 *  This class implements the DRM5 Rights Server functionality.
@@ -49,7 +62,7 @@
 *  @since S60Rel2.5
 */
 NONSHARABLE_CLASS( CDRMRightsServer ) : public CServer2, public MWatcherObserver
-    {
+    {    
     public:  // Constructors and destructor
 
         /**
@@ -162,6 +175,34 @@
         */
         void AddActiveCountConstraintL( const TDesC8& aContentId );
 
+
+        /**
+        * Checks if a content ID is in the list of currently consumed contents
+        *
+        * @since 5.2
+        * @param aContentId content ID to search for
+        * @return Index or the Url if the content ID is in the list
+        *         KErrNotFound if the content ID is not in the list
+        */
+        TInt IsAccessingUrl( const TDesC8& aContentId );
+
+        /**
+        * Removes a content ID from the list of currently consumed contents
+        *
+        * @since 5.2
+        * @param aContentId content ID to remove
+        */
+        void RemoveAccessingUrl( const TDesC8& aContentId );
+
+        /**
+        * Adds a content ID to the list of currently consumed contents
+        *
+        * @since 5.2
+        * @param aContentId content ID to add
+        */
+        void AddAccessingUrlL( const TDesC8& aContentId );
+
+
         /**
         * Import rights objects on startup
         *
@@ -275,6 +316,7 @@
         RDRMClockClient iClock;
         RPointerArray<CDRMXOma>* iXOmaHeaders;
         RPointerArray<HBufC8> iActiveCountConstraints;
+        RPointerArray<class CUsageUrl> iActiveUrls;
 
         HBufC* iIMEI;
 
@@ -307,6 +349,7 @@
 
 };
 
+
 #endif      // CDRMRIGHTSSERVER_H
 
 // End of File
--- a/omadrm/drmengine/server/src/DRMDbSession.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/server/src/DRMDbSession.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -1743,7 +1743,8 @@
         // Count constraints are valid for the duration of the
         // session after they have been consumed earlier
         if ( !( iConsume && iConsume->CountConstraintActive() ||
-                SERVER->HasActiveCountConstraint( *CID ) ) )
+                SERVER->HasActiveCountConstraint( *CID ) ||
+                SERVER->IsAccessingUrl( *CID ) != KErrNotFound ) )
             {
             CDRMPermission* child( NULL );
             HBufC8* uri( NULL );
--- a/omadrm/drmengine/server/src/DRMRightsServer.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/server/src/DRMRightsServer.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -294,6 +294,29 @@
 
 // ============================ MEMBER FUNCTIONS ===============================
 
+// CUsageUrl:
+
+//--------------------------------------------------------------------------
+// CUsageUrl::CUsageUrl
+// Storage class default constructor
+//--------------------------------------------------------------------------
+//
+CUsageUrl::CUsageUrl()
+    {
+    }
+
+//--------------------------------------------------------------------------
+// CUsageUrl::~CUsageUrl
+// Storage class destructor
+//--------------------------------------------------------------------------
+//
+CUsageUrl::~CUsageUrl()
+    {
+    delete iUrl;    
+    }
+
+// CDRMRightsServer:
+
 // -----------------------------------------------------------------------------
 // CDRMRightsServer::NewLC
 // Two-phased constructor.
@@ -354,6 +377,8 @@
         delete iNotifier; iNotifier = NULL;
         }
 
+    iActiveUrls.ResetAndDestroy();
+
     //An empty semaphore
     RSemaphore semaphore;
     }
@@ -599,13 +624,13 @@
 
 #ifndef RD_MULTIPLE_DRIVE
 
-    iDb = CDRMRightsDB::NewL( iFs, KRightsDir, key, *iIMEI );
+    iDb = CDRMRightsDB::NewL( iFs, KRightsDir, key, *iIMEI, const_cast<CDRMRightsServer*>(this) );
 
 #else //RD_MULTIPLE_DRIVE
 
     tempPath.Format( KRightsDir, (TUint)driveLetter );
 
-    iDb = CDRMRightsDB::NewL( iFs, tempPath, key, *iIMEI );
+    iDb = CDRMRightsDB::NewL( iFs, tempPath, key, *iIMEI, const_cast<CDRMRightsServer*>(this) );
 
 #endif
 
@@ -1337,6 +1362,85 @@
         }
     }
 
+
+
+// -----------------------------------------------------------------------------
+// CDRMRightsServer::IsAccessingUrl
+// Add ID to count constraint list
+// -----------------------------------------------------------------------------
+//
+TInt CDRMRightsServer::IsAccessingUrl( const TDesC8& aContentId )
+    {
+    for( TInt i = 0; i < iActiveUrls.Count(); i++ )
+        {
+        if( !iActiveUrls[i]->iUrl->Compare( aContentId ) ) 
+            {
+            return i;
+            }    
+        }
+    return KErrNotFound;        
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMRightsServer::RemoveAccessingUrl
+// Add ID to count constraint list
+// -----------------------------------------------------------------------------
+//
+void CDRMRightsServer::RemoveAccessingUrl( const TDesC8& aContentId )
+    {
+    CUsageUrl* usage = NULL;    
+    TInt index = KErrNotFound;
+    
+    index = IsAccessingUrl( aContentId );
+    
+    if( index != KErrNotFound )
+        {
+        // If there are negative or 0 values in the list for some reason
+        // remove them    
+        if( iActiveUrls[index]->iRefCounter <= 1 )
+            {
+            usage = iActiveUrls[index];    
+            iActiveUrls.Remove( index );    
+            delete usage;
+            }
+        else
+            {
+            iActiveUrls[index]->iRefCounter--;
+            }           
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CDRMRightsServer::AddAccessingUrlL
+// Add ID to count constraint list
+// -----------------------------------------------------------------------------
+//
+void CDRMRightsServer::AddAccessingUrlL( const TDesC8& aContentId )
+    {
+    CUsageUrl* usage = NULL;
+    TInt index = KErrNotFound;
+    
+    index = IsAccessingUrl( aContentId );
+    
+    if( index == KErrNotFound )
+        {
+        usage = new ( ELeave ) CUsageUrl();
+        CleanupStack::PushL( usage );
+        usage->iUrl = aContentId.AllocL();
+        usage->iRefCounter = 1;
+        iActiveUrls.AppendL( usage );
+        CleanupStack::Pop( usage );
+        }
+    else
+        {
+        usage = iActiveUrls[index];
+        usage->iRefCounter++;    
+        }           
+    }
+
+
+
+
 // -----------------------------------------------------------------------------
 // CDRMRightsServer::StopWatchingL
 // Delete the watchers
@@ -1425,6 +1529,8 @@
     }
 #endif
 
+
+
 // ========================== OTHER EXPORTED FUNCTIONS =========================
 
 
--- a/omadrm/drmengine/server/src/drmconsume.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/server/src/drmconsume.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -140,6 +140,12 @@
 CDRMConsume::~CDRMConsume()
     {
     DRMLOG( _L( "CDRMConsume::~" ) );
+        
+    if( iURI )
+        {
+        SERVER->RemoveAccessingUrl( *iURI );   
+        }    
+        
     TInt error( KErrNone );
 
     if( IsActive() )
@@ -203,6 +209,8 @@
         {
         iParentId = aParentId->AllocL();
         }
+        
+    SERVER->AddAccessingUrlL( aURI );
     }
 
 // ------------------------------------------------------------------------
--- a/omadrm/drmengine/server/src/drmrightsdb.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmengine/server/src/drmrightsdb.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -46,6 +46,7 @@
 #include "DrmKeyStorage.h"
 #include "utf.h" // charconv, ConvertFromUnicodeToUtf8L
 #include "drmlog.h"
+#include "DRMRightsServer.h"
 
 #ifdef RD_DRM_RIGHTS_MANAGER_REMOVAL
 #include "DRMClockClient.h"
@@ -159,10 +160,11 @@
 // might leave.
 // -----------------------------------------------------------------------------
 //
-CDRMRightsDB::CDRMRightsDB( RFs& aFs ) :
+CDRMRightsDB::CDRMRightsDB( RFs& aFs, CDRMRightsServer* aServer ) :
     iFileServer( aFs ),
     iImei( NULL ),
-    iLastUpdate( Time::NullTTime() )
+    iLastUpdate( Time::NullTTime() ),
+    iRightsServer( aServer )    
     {
     };
 
@@ -216,9 +218,10 @@
 CDRMRightsDB* CDRMRightsDB::NewLC( RFs& aFs,
                                    const TDesC& aDatabasePath,
                                    const TDesC8& aKey,
-                                   const TDesC& aImei )
+                                   const TDesC& aImei,
+                                   CDRMRightsServer* aServer )
     {
-    CDRMRightsDB* self = new( ELeave ) CDRMRightsDB( aFs );
+    CDRMRightsDB* self = new( ELeave ) CDRMRightsDB( aFs, aServer );
     CleanupStack::PushL( self );
     self->ConstructL( aDatabasePath, aKey, aImei );
 
@@ -233,9 +236,10 @@
 CDRMRightsDB* CDRMRightsDB::NewL( RFs& aFs,
                                   const TDesC& aDatabaseFile,
                                   const TDesC8& aKey,
-                                  const TDesC& aImei )
+                                  const TDesC& aImei,
+                                  CDRMRightsServer* aServer )
     {
-    CDRMRightsDB* self = NewLC( aFs, aDatabaseFile, aKey, aImei );
+    CDRMRightsDB* self = NewLC( aFs, aDatabaseFile, aKey, aImei, aServer );
     CleanupStack::Pop();
 
     return self;
@@ -318,7 +322,7 @@
         }
 
     // Delete expired:
-    TRAP_IGNORE( deleteAllowed = DeleteExpiredL( path, time ) );
+    TRAP_IGNORE( deleteAllowed = DeleteExpiredL( path, time, aContentID ) );
 
     // Check if it's possible to delete the file as well
     if( deleteAllowed )
@@ -1077,6 +1081,77 @@
 
 
 // -----------------------------------------------------------------------------
+// CDRMRightsDB::DeleteExpiredL
+// -----------------------------------------------------------------------------
+//
+TBool CDRMRightsDB::DeleteExpiredL( const TFileName& aFileName,
+                                   const TTime& aTime,
+                                   const TDesC8& aContentId )
+    {
+    CDRMRightsData* rights = NULL;
+    TInt amountLeft = -1;
+    TBool retVal = EFalse;
+    TBool parents = EFalse;
+
+    DRMLOG( _L( "CDRMRightsDB::DeleteExpiredL(2) ->" ) );
+
+    // if there is a consumption session ongoing, we can't delete it at all
+    // or the decryption will not function properly after pause etc
+    if( iRightsServer->IsAccessingUrl( aContentId ) != KErrNotFound )
+        {
+        return EFalse;    
+        }
+
+    // Indicate that the DB is updated
+    iLastUpdate.HomeTime();
+
+    // Open the rights file
+    DRMLOG( _L("Opening the file"));
+    rights = CDRMRightsData::OpenLC( aFileName, iFileServer );
+
+    DRMLOG( _L("Running Delete"));
+    amountLeft = rights->DeleteExpiredPermissionsL( aTime, parents );
+
+    DRMLOG2( _L("Checking for left RO:s %d"), amountLeft );
+
+    // See if any permissions are left if not check if the whole file
+    // can be proposed to be deleted or not, Java files require uninstallation
+    // so those need to be checked
+    if( !amountLeft && !parents )
+        {
+        // get the common data
+        const CDRMCommonData* common= rights->GetCommonDataL();
+
+        // If it is a java file, dont allow deletion
+        if( !common->ContentName().Right(4).CompareF(KJavaExtension) )
+            {
+            DRMLOG( _L("Is java file, do not delete"));
+            retVal = EFalse;
+            }
+        else if( !common->ContentName().Right(4).CompareF(KSISExtension) )
+            {
+            DRMLOG( _L("Is an installation package, do not delete"));
+            retVal = EFalse;
+            }
+        else
+            {
+            retVal = ETrue;
+            }
+        }
+    CleanupStack::PopAndDestroy(); // rights
+
+    DRMLOG( _L( "CDRMRightsDB::DeleteExpiredL <-" ) );
+
+    if( iRightsServer->HasActiveCountConstraint( aContentId ))
+        {
+        retVal = EFalse;    
+        }
+
+    return retVal;
+    }
+
+
+// -----------------------------------------------------------------------------
 // CDRMRightsDB::GetUdtDataLC
 // -----------------------------------------------------------------------------
 //
--- a/omadrm/drmplugins/drmromtm/loc/RoMtmUi.loc	Fri May 28 13:54:35 2010 +0100
+++ b/omadrm/drmplugins/drmromtm/loc/RoMtmUi.loc	Tue Jul 13 13:57:53 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/wmdrm/camese/httpfiltercamese/Src/httpfiltercamesedrmheader.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/camese/httpfiltercamese/Src/httpfiltercamesedrmheader.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -32,7 +32,7 @@
 // Filter position: DRM Header needs to be positioned below the client.
 const TInt KCameseDrmHeaderFilterPosition = MHTTPFilter::EClient - 10;
 
-const TUid KCRUidMusicShopSettings = {0x10207BF5}; // copied from MusicWapCenRepKeys.h - Album Download
+const TUid KCRUidMusicShopSettings = {0x101FFB51}; // copied from MusicWapCenRepKeys.h - Album Download
 const TUint32 KSupportOmaDownloadDescriptor   = 0x00000004; // copied from MusicWapCenRepKeys.h - Album Download
 const TUint32 KMusicServiceFeatureFlagSupport = 0x00000012; // referred from 5.0 MusicWapCenRepKeys.h - Album Download
 
--- a/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -107,6 +107,10 @@
 //
 CWmDrmDlaBrowserContainer::~CWmDrmDlaBrowserContainer()
     {
+    if(iBrCtlInterface != NULL)
+    {
+    TRAP_IGNORE( iBrCtlInterface->HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase ));	
+    }	
     delete iBrCtlInterface;
     }
 
--- a/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowserview.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowserview.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -155,6 +155,8 @@
         }
     else
         {
+        iContainer->BrCtlInterface()->HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + 
+                                                      (TInt)TBrCtlDefs::ECommandIdBase );            
         AppUi()->HandleCommandL( aCommand );
         }
     }
--- a/wmdrm/camese/wmdrmdladefaulthttpplugin/src/wmdrmdladefaulthttpmanager.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/camese/wmdrmdladefaulthttpplugin/src/wmdrmdladefaulthttpmanager.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -162,6 +162,8 @@
             HandleDownloadComplete( KErrCancel );
             }
         }
+	// Close the HTTP session in use
+    iHttpSession.Close();
 
     CleanupConnection();
     DeleteUsernamePassword();
@@ -565,6 +567,9 @@
     GetConnectionInfoL( info );
     iIapNumber = info.iIapId;
 
+    // Close old session:
+    iHttpSession.Close();    
+
     // Open session
     iHttpSession.OpenL();
     RStringPool pool = iHttpSession.StringPool();
@@ -730,7 +735,6 @@
     iHdrFields.Reset();
 
     iHttpTransaction.Close();
-    iHttpSession.Close();
 
     if ( !iKeepAlive )
         {
--- a/wmdrm/wmdrmengine/wmdrmotaaccess/bwins/wmdrmotaaccessu.def	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/bwins/wmdrmotaaccessu.def	Tue Jul 13 13:57:53 2010 +0100
@@ -6,4 +6,5 @@
 	?GetLicenseChallengeL@CWmDrmOtaAccess@@QAEXABVTDesC8@@AAPAVHBufC8@@AAVTRequestStatus@@@Z @ 5 NONAME ; void CWmDrmOtaAccess::GetLicenseChallengeL(class TDesC8 const &, class HBufC8 * &, class TRequestStatus &)
 	?HandleLicenseResponseL@CWmDrmOtaAccess@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 6 NONAME ; void CWmDrmOtaAccess::HandleLicenseResponseL(class TDesC8 const &, class TRequestStatus &)
 	?GetLicenseChallengeL@CWmDrmOtaAccess@@QAEXABVTDesC8@@AAPAVHBufC8@@@Z @ 7 NONAME ; void CWmDrmOtaAccess::GetLicenseChallengeL(class TDesC8 const &, class HBufC8 * &)
+	?CancelAllAsync@CWmDrmOtaAccess@@QAEXXZ @ 8 NONAME ; void CWmDrmOtaAccess::CancelAllAsync(void)
 
--- a/wmdrm/wmdrmengine/wmdrmotaaccess/eabi/wmdrmotaaccessu.def	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/eabi/wmdrmotaaccessu.def	Tue Jul 13 13:57:53 2010 +0100
@@ -8,4 +8,5 @@
 	_ZN15CWmDrmOtaAccess20GetLicenseChallengeLERK6TDesC8RP6HBufC8R14TRequestStatus @ 7 NONAME
 	_ZN15CWmDrmOtaAccess22HandleLicenseResponseLERK6TDesC8 @ 8 NONAME
 	_ZN15CWmDrmOtaAccess22HandleLicenseResponseLERK6TDesC8R14TRequestStatus @ 9 NONAME
+	_ZN15CWmDrmOtaAccess14CancelAllAsyncEv @ 10 NONAME
 
--- a/wmdrm/wmdrmengine/wmdrmotaaccess/src/wmdrmotaaccess.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/src/wmdrmotaaccess.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -121,6 +121,7 @@
     
     iWmDrmOtaAccessEcomInterface->HandleLicenseResponseL( aResponse );                                
     }    
+    
 // ---------------------------------------------------------------------------
 // CWmDrmOtaAccess::HandleLicenseResponseL
 // ---------------------------------------------------------------------------
@@ -137,7 +138,19 @@
                                                           aStatus );                                 
     }                                                           
 
-
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::CancelAllAsync
+// ---------------------------------------------------------------------------
+EXPORT_C void CWmDrmOtaAccess::CancelAllAsync()
+    {
+    // Ecom interface not available    
+    if( !iWmDrmOtaAccessEcomInterface )
+        {
+        return;   
+        }   
+    
+    iWmDrmOtaAccessEcomInterface->CancelAllAsync();                                 
+    } 
 
     
 // End of file
--- a/wmdrm/wmdrmengine/wmdrmserver/client/BWINS/wmdrmclientU.DEF	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/client/BWINS/wmdrmclientU.DEF	Tue Jul 13 13:57:53 2010 +0100
@@ -24,4 +24,5 @@
 	?DeleteRights@RWmDrmClient@@QAEHXZ @ 23 NONAME ; int RWmDrmClient::DeleteRights(void)
 	?StoreState@RWmDrmClient@@QAEHAAW4TWmDrmStoreState@@@Z @ 24 NONAME ; int RWmDrmClient::StoreState(enum TWmDrmStoreState &)
 	?GetTime@RWmDrmClient@@QAEHAAVTTime@@AAH@Z @ 25 NONAME ; int RWmDrmClient::GetTime(class TTime &, int &)
+	?CommitData@RWmDrmClient@@QAEHXZ @ 26 NONAME ; int RWmDrmClient::CommitData(void)
 
--- a/wmdrm/wmdrmengine/wmdrmserver/client/EABI/wmdrmclientU.DEF	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/client/EABI/wmdrmclientU.DEF	Tue Jul 13 13:57:53 2010 +0100
@@ -24,4 +24,5 @@
 	_ZN12RWmDrmClient12DeleteRightsEv @ 23 NONAME
 	_ZN12RWmDrmClient10StoreStateER16TWmDrmStoreState @ 24 NONAME
 	_ZN12RWmDrmClient7GetTimeER5TTimeRi @ 25 NONAME
+	_ZN12RWmDrmClient10CommitDataEv @ 26 NONAME
 
--- a/wmdrm/wmdrmengine/wmdrmserver/client/src/wmdrmclient.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/client/src/wmdrmclient.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -542,4 +542,17 @@
     return r;    
     };
     
+//---------------------------------------------------------------------------
+// RWmDrmClient::CommitData
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt RWmDrmClient::CommitData()
+    {
+    TInt r = KErrNone;
     
+	LOGFNR( "RWmDrmClient::CommitData", r );    
+    r = SendReceive( ECommitData );
+    return r;    
+    };
+
+    
--- a/wmdrm/wmdrmengine/wmdrmserver/server/inc/clock.h	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/server/inc/clock.h	Tue Jul 13 13:57:53 2010 +0100
@@ -35,7 +35,7 @@
 public:
 	static const TInt KClockInterval = 15 * 60 * 1000000;
 
-    static CClock* CClock::NewL( CWmDrmServer* aServer );
+    static CClock* NewL( CWmDrmServer* aServer );
 	~CClock();
 	CClock( CWmDrmServer* aServer );
 
--- a/wmdrm/wmdrmengine/wmdrmserver/server/inc/wmdrmclientserver.h	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/server/inc/wmdrmclientserver.h	Tue Jul 13 13:57:53 2010 +0100
@@ -47,7 +47,8 @@
     ESetTimeAsValid,
     EDeleteRights,
     EStoreState,
-    EGetTime
+    EGetTime,
+    ECommitData
 	};
 
 #endif //  __WMDRMCLIENTSERVER_H
--- a/wmdrm/wmdrmengine/wmdrmserver/server/inc/wmdrmdb.h	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/server/inc/wmdrmdb.h	Tue Jul 13 13:57:53 2010 +0100
@@ -109,6 +109,12 @@
 
     TInt DataBaseSize( TBool aConfiguredDrive );
 
+    // Checks how many SQL statements are prepared (buffered) currently and if either the maximum 
+    // amount of buffered statements is exceeded or an enforced commit is needed, COMMITs the 
+    // statements. The method also starts a new BEGIN statement after the commit operation to 
+    // start a new buffering round of SQL statements. This method also controls a timer for 
+    // triggering enforced commit after a predefined idle period without any prepared SQL statements. 
+    void CheckDatabaseCommitL( TBool aEnforcedCommit );
 
 protected: // from base class CActive
     void RunL();
@@ -131,12 +137,7 @@
     
     void ConvertOldLicenseStoreL();
     
-    // Checks how many SQL statements are prepared (buffered) currently and if either the maximum 
-    // amount of buffered statements is exceeded or an enforced commit is needed, COMMITs the 
-    // statements. The method also starts a new BEGIN statement after the commit operation to 
-    // start a new buffering round of SQL statements. This method also controls a timer for 
-    // triggering enforced commit after a predefined idle period without any prepared SQL statements. 
-    void CheckDatabaseCommitL( TBool aEnforcedCommit );
+
     void Activate();
 
 private: // data
--- a/wmdrm/wmdrmengine/wmdrmserver/server/inc/wmdrmsession.h	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/server/inc/wmdrmsession.h	Tue Jul 13 13:57:53 2010 +0100
@@ -224,6 +224,13 @@
      */
     void GetTimeL( const RMessage2& aMessage );    
     
+    
+    /* Commits the database
+     *
+     * @param aMessage  IPC message (not used)
+     */
+    void CommitDataL( const RMessage2& aMessage );    
+    
 private:
     /* Desctructor.
      */
--- a/wmdrm/wmdrmengine/wmdrmserver/server/src/wmdrmsession.cpp	Fri May 28 13:54:35 2010 +0100
+++ b/wmdrm/wmdrmengine/wmdrmserver/server/src/wmdrmsession.cpp	Tue Jul 13 13:57:53 2010 +0100
@@ -686,6 +686,21 @@
     aMessage.WriteL(1, validityPckg);
     }
 
+
+//---------------------------------------------------------------------------
+// CWmDrmSession::CommitDataL
+//---------------------------------------------------------------------------
+//
+void CWmDrmSession::CommitDataL( const RMessage2& aMessage )
+    {
+    
+    LOGFN( "CWmDrmSession::CommitDataL" );
+    
+    // Force a commit on the database
+    Server().Db()->CheckDatabaseCommitL( ETrue );
+    }
+
+
  
 //---------------------------------------------------------------------------
 // CWmDrmSession::ServiceL
@@ -787,7 +802,10 @@
                 break;
             case EGetTime:
                 TRAP( trap, GetTimeL( aMessage ) );
-                break;              
+                break;      
+            case ECommitData:
+                TRAP( trap, CommitDataL( aMessage ) );
+                break;            
             default:
                 r = KErrArgument;
                 break;