diff -r c68061d56109 -r 69d8e75812b7 commondrm/drmutility/src/DrmUiHandlingImpl.cpp --- a/commondrm/drmutility/src/DrmUiHandlingImpl.cpp Fri Jun 11 15:44:45 2010 +0300 +++ b/commondrm/drmutility/src/DrmUiHandlingImpl.cpp Thu Jun 24 12:39:58 2010 +0300 @@ -38,12 +38,13 @@ #include #include +// DCF repository +#include +#include + // character conversions #include -// handling urls -#include - // resources #include #include @@ -58,6 +59,7 @@ #include #include #include +#include //connectivity logic #include // RCmConnectionMethod @@ -87,6 +89,7 @@ #include "DRMDomainContext.h" #include "DrmUtilityInternalcrkeys.h" // Cenrep extension for OmaBased +#include "drmuidialogids.h" // CONSTANTS const TInt KCommandHandleErrorFile( 1 ); @@ -119,6 +122,8 @@ const TInt KresOmaBasedBuf( 512 ); const TInt KNameBuf( 256 ); +const TInt KNoValue = -1; + #ifdef _DEBUG // debug panic _LIT( KDRMUtilityDebugPanicMessage, "DrmUiHandlingDebugPanic" ); @@ -214,6 +219,69 @@ return found; } +// --------------------------------------------------------- +// UpdateDCFRepositoryL() +// Update saved file to DCFRepository +// --------------------------------------------------------- + +LOCAL_C void UpdateDCFRepositoryL( TDesC& aFullFileName ) + { + CDcfEntry* dcfEntry( NULL ); + CDcfRep* dcfRep( NULL ); + + dcfEntry = CDcfEntry::NewL(); + CleanupStack::PushL( dcfEntry ); + + dcfRep = CDcfRep::NewL(); + CleanupStack::PushL( dcfRep ); + + dcfEntry->SetLocationL( aFullFileName, 0 ); + dcfRep->UpdateL( dcfEntry ); + CleanupStack::PopAndDestroy( dcfRep ); + CleanupStack::PopAndDestroy( dcfEntry ); + } + +// --------------------------------------------------------- +// FindFullFileNameAndUpdateDCFRepositoryL() +// Find full file name for the content and update saved +// file to DCFRepository +// --------------------------------------------------------- + +LOCAL_C void FindFullFileNameAndUpdateDCFRepositoryL( + const RFile& aFileHandle ) + { + HBufC* fullPath( NULL ); + TPtr fullPathPtr( NULL, 0 ); + + fullPath = HBufC::NewLC( KUrlMaxLen ); + fullPathPtr.Set( fullPath->Des() ); + + aFileHandle.FullName( fullPathPtr ); + UpdateDCFRepositoryL( fullPathPtr ); + CleanupStack::PopAndDestroy( fullPath ); + } + +// --------------------------------------------------------- +// FindFullFileNameAndUpdateDCFRepositoryL() +// Find full file name for the content and update saved +// file to DCFRepository +// --------------------------------------------------------- + +LOCAL_C void FindFullFileNameAndUpdateDCFRepositoryL( + const ContentAccess::CData& aFileData ) + { + HBufC* fullPath( NULL ); + TPtr fullPathPtr( NULL, 0 ); + + fullPath = HBufC::NewLC( KUrlMaxLen ); + fullPathPtr.Set( fullPath->Des() ); + + aFileData.GetStringAttribute( DRM::EDrmFullName, + fullPathPtr ); + + UpdateDCFRepositoryL( fullPathPtr ); + CleanupStack::PopAndDestroy( fullPath ); + } // ============================ MEMBER FUNCTIONS =============================== @@ -369,8 +437,6 @@ delete iDrmUtilityUi; - delete iSchemeHandler; - delete iWrapperLoader; delete iOmaBasedAgentName; @@ -1455,6 +1521,9 @@ if ( ( !agent.Compare( DRM::KDrmOmaAgentName ) ) || ( iOmaBasedAgentName && !agent.Compare( *iOmaBasedAgentName ) ) ) { + // To embed Domain RO in superdistribution case, register the content + TRAP_IGNORE( FindFullFileNameAndUpdateDCFRepositoryL( *aData.iFile ) ); + HandleOmaErrorL( *content, aData.iIntent, aData.iError, aData.iErrorObserver, aData.iOperationId ); } @@ -1476,6 +1545,7 @@ void DRM::CDrmUiHandlingImpl::PerformHandleErrorDataL( DRM::CDrmUiHandlingData& aData ) { + DRM::TDrmAgentUid agentUid( DRM::EDrmOmaAgent ); IsProtectedL( aData.iFileData, agentUid ); IsProperErrorL( aData.iError ); @@ -1484,7 +1554,11 @@ switch ( agentUid ) { case DRM::EDrmOmaAgent: - + + // To embed Domain RO in superdistribution case, register the content + TRAP_IGNORE( FindFullFileNameAndUpdateDCFRepositoryL( + *aData.iFileData ) ); + HandleOmaErrorL( *aData.iFileData, aData.iIntent, aData.iError, aData.iErrorObserver, aData.iOperationId ); @@ -1592,7 +1666,10 @@ HBufC* riUrl( NULL ); HBufC* domainRiUrl( NULL ); DRM::TDrmUiUrlType urlType( DRM::EUHRightsIssuerUrl ); - + + // To embed Domain RO in superdistribution case, register the content + TRAP_IGNORE( FindFullFileNameAndUpdateDCFRepositoryL( aContent ) ); + User::LeaveIfError( GetContentIdLC( aContent, contentId ) ); GetOmaSilentRightsUrlLC( aContent, silentUrl ); GetOmaRightsIssuerLC( aContent, riUrl ); @@ -1749,7 +1826,7 @@ TInt previewType( ContentAccess::ENoPreview ); TUint32 reason( 0 ); TBool handled( EFalse ); - + User::LeaveIfError( GetContentIdLC( aContent, contentId ) ); // Check that this really is an error situation @@ -1759,8 +1836,8 @@ TBool onlyMeteringRejection( reason == DRM::EURejectionMetering ); if ( onlyMeteringRejection ) { - iDrmUtilityUi->DisplayQueryWithIdL( R_DRM_QUERY_METERING_DISABLED, - R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfUnableToOpen ); CleanupStack::PopAndDestroy( contentId ); return; @@ -2891,9 +2968,8 @@ if ( RejectReason( aReason ) == DRM::EURejectionMetering ) { // Show that only reason for error was rejected metering. - iDrmUtilityUi->DisplayQueryWithIdL( - R_DRM_QUERY_METERING_DISABLED, - R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfUnableToOpen ); } else { @@ -3414,7 +3490,7 @@ HBufC* etaBuf( NULL ); TBool isRegistered( EFalse ); TBool isJoined( EFalse ); - TInt ret( 0 ); + TInt ret( ECancelled ); TInt err( KErrNone ); TInt eta( 0 ); TFileName fileName; @@ -3440,16 +3516,13 @@ // rights should have come already if ( aRightsUrl ) { - ret = iDrmUtilityUi->DisplayQueryWithIdL( - R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME, - R_DRMUTILITY_CONFIRMATION_QUERY ); + ret = iDrmUtilityUi->DisplayQueryL( EQueryGetNewLicence, KNoValue ); } else { // no rights issuer - iDrmUtilityUi->DisplayQueryWithIdL( - R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME_NO_RI, - R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfLicenceNotReceived ); } } else if ( !eta || err || eta == -1 ) @@ -3463,17 +3536,13 @@ if ( aRightsUrl && isRegistered && !isJoined ) // Domain ro case { - ret = iDrmUtilityUi->DisplayQueryWithIdL( - R_DRMUTILITY_ACTIVATE_ACCOUNT, - R_DRMUTILITY_CONFIRMATION_QUERY ); + ret = iDrmUtilityUi->DisplayQueryL( EQueryAccountUpdate, KNoValue ); } else if ( aRightsUrl ) // Device ro case { if ( aReason & EConstraintIndividual ) { - ret = iDrmUtilityUi->DisplayQueryWithIdL( - R_DRMUTILITY_INVALID_SIM, - R_DRMUTILITY_CONFIRMATION_QUERY ); + ret = iDrmUtilityUi->DisplayQueryL( EQueryFileLockedForSim, KNoValue ); } else { @@ -3481,19 +3550,20 @@ User::LeaveIfError( aContent.GetStringAttribute( EFileName, fileName ) ); - ret = iDrmUtilityUi->DisplayQueryL( - R_DRM_QUERY_EXPIRED_OR_NO_RO, fileName ); + // Qt dialog not implemented yet + ret = iDrmUtilityUi->DisplayQueryL( EQueryFileWithNoRightsObj, fileName ); } } else // no rights issuer { if ( aReason & EConstraintIndividual ) { - iDrmUtilityUi->DisplayNoteL( R_DRM_INFO_SIM_NOT_ALLOWED ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfFileLockedForSim ); } else { - iDrmUtilityUi->DisplayNoteL( R_DRM_INFO_EXPIRED_OR_NO_RO ); + iDrmUtilityUi->DisplayNoteL( EConfLicenceExpired ); } } } @@ -3503,31 +3573,25 @@ if ( eta != KErrCAPendingRights ) { // rights expected to arrive in eta seconds - iDrmUtilityUi->DisplayQueryWithIdL( - R_DRMUTILITY_WAITING_FOR_RIGHTS, - R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY ); + iDrmUtilityUi->DisplayNoteL( EConfWaitingForLicence ); } else { // rights should have come if ( aRightsUrl ) { - ret = iDrmUtilityUi->DisplayQueryWithIdL( - R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME, - R_DRMUTILITY_CONFIRMATION_QUERY ); + ret = iDrmUtilityUi->DisplayQueryL( EQueryGetNewLicence, KNoValue ); } else { // no rights issuer - iDrmUtilityUi->DisplayQueryWithIdL( - R_DRMUTILITY_RIGHTS_SHOULD_HAVE_COME_NO_RI, - R_DRMUTILITY_WAITING_RIGHTS_CONFIRMATION_QUERY ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfLicenceNotReceived ); } } } } - - if ( ret == EAknSoftkeyYes || ret == EAknSoftkeyOk ) + if ( ret == EOk ) { rightsRenewalWanted = ETrue; } @@ -4006,25 +4070,11 @@ ptrc.Set( *newUrl ); } - 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; + CDrmBrowserLauncher* browserLauncher = CDrmBrowserLauncher::NewLC(); + + browserLauncher->LaunchUrlL(ptrc); + + CleanupStack::PopAndDestroy(); // browserLauncher // delete newUrl if needed if ( newUrl ) @@ -4043,31 +4093,29 @@ const TBool aShowNotes ) { TInt r( KErrCancel ); - TInt buttonCode( EAknSoftkeyYes ); + TInt buttonCode( EOk ); HBufC8* url( NULL ); if ( !SilentRightsAllowedL() ) { - buttonCode = EAknSoftkeyNo; + buttonCode = ECancelled; if ( aShowNotes ) { - buttonCode = iDrmUtilityUi->DisplayQueryWithIdL( - R_DRM_QRY_CONNECT_TO_ACTIVATE, - R_DRMUTILITY_CONFIRMATION_QUERY ); + // Qt dialog not implemented yet + buttonCode = iDrmUtilityUi->DisplayQueryL( EQueryConnectToActivate, KNoValue ); } } else if ( !(HasDefConn()) ) { - buttonCode = EAknSoftkeyNo; + buttonCode = ECancelled; if ( aShowNotes ) { - buttonCode = iDrmUtilityUi->DisplayQueryWithIdL( - R_DRM_QRY_CONNECT_TO_ACTIVATE, - R_DRMUTILITY_CONFIRMATION_QUERY ); + // Qt dialog not implemented yet + buttonCode = iDrmUtilityUi->DisplayQueryL( EQueryConnectToActivate, KNoValue ); } } - if ( buttonCode == EAknSoftkeyYes || buttonCode == EAknSoftkeyOk ) + if ( buttonCode == EOk ) { TBool APs( HasAccessPointsL() ); if ( !APs ) @@ -4075,7 +4123,8 @@ // No AP defined if ( aShowNotes ) { - iDrmUtilityUi->DisplayNoteL( R_DRM_WARN_NO_CONN_DEFINED ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfNoAccessPoint ); } r = KErrCANoRights; } @@ -4109,8 +4158,8 @@ // Connection failed with selected AP if ( aShowNotes ) { - iDrmUtilityUi->DisplayNoteL( - R_DRM_WARN_INVALID_OR_NO_AP ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfConnectionFailed ); } r = KErrCANoRights; } @@ -4127,13 +4176,10 @@ if ( errorUrl ) { // ask user whether error url should be opened - buttonCode - = iDrmUtilityUi->DisplayQueryWithIdL( - R_DRM_QUERY_OPEN_ERROR_URL, - R_DRMUTILITY_CONFIRMATION_QUERY ); - - if ( buttonCode == EAknSoftkeyYes - || buttonCode == EAknSoftkeyOk ) + // Qt dialog not implemented yet + buttonCode = iDrmUtilityUi->DisplayQueryL( EQueryOpenErrorUrl, KNoValue ); + + if ( buttonCode == EOk ) { // Launch browser LaunchBrowserL( errorUrl ); @@ -4141,8 +4187,8 @@ } else { - iDrmUtilityUi->DisplayNoteL( - R_DRM_ERR_OPENING_FAIL_PERM ); + // Qt dialog not implemented yet + iDrmUtilityUi->DisplayNoteL( EConfUnableToUnlock ); } CleanupStack::PopAndDestroy( errorUrl ); } @@ -4174,17 +4220,11 @@ // void DRM::CDrmUiHandlingImpl::HandleServerAppExit( TInt aReason ) { - if ( aReason == EAknCmdExit && !iSchemeHandler ) + if ( aReason == EAknCmdExit) { CAknEnv::RunAppShutter(); } - if ( iSchemeHandler ) - { - delete iSchemeHandler; - iSchemeHandler = NULL; - } - if ( iWait.IsStarted() ) { iWait.AsyncStop();