diff -r 7ec726f93df1 -r 489cf6208544 cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp --- a/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Fri May 14 16:15:46 2010 +0300 +++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Thu May 27 13:17:01 2010 +0300 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include "ccmpluginbaseengtextresolver.h" @@ -94,8 +94,6 @@ // void CCmClientPluginInstance::ConstructL() { - OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_CONSTRUCTL_ENTRY ); - OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_CONSTRUCTL_EXIT ); } @@ -331,31 +329,31 @@ User::Leave( KErrAlreadyExists ); } - // optional record is disabled in default + // Optional record, disabled by default. iLocationEnabled = EFalse; - // create mandatory records - iIapRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); - iNetworkRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord)); - iProxyRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord)); + // Create mandatory records. + iIapRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); + iNetworkRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); + iProxyRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); NewWapRecordL(); iWapIPBearerRecord->iWAPGatewayAddress.SetL( KDefWapGatewayIpAddress ); iMetaDataRecord = NewMetadataRecordL( ETrue ); - // call plugin to create its own records + // Call plugin to create its own records. CreateServiceRecordL(); - // Update iaprecord servicetype name + // Update iaprecord servicetype name. HBufC* servicetypeName( NULL ); ServiceRecordNameLC( servicetypeName ); iIapRecord->iServiceType.SetL( *servicetypeName ); CleanupStack::PopAndDestroy( servicetypeName ); - // Update iaprecord bearertype name + // Update iaprecord bearertype name. HBufC* bearerTypeName( NULL ); BearerRecordNameLC( bearerTypeName ); iIapRecord->iBearerType.SetL( *bearerTypeName ); @@ -365,7 +363,7 @@ EnableProxyL( EFalse ); - _LIT(KDefaultConnNameTextId, "txt_occ_setlabel_connection_name_val_connection"); + _LIT( KDefaultConnNameTextId, "txt_occ_setlabel_connection_name_val_connection" ); HBufC* resolvedText( NULL ); resolvedText = CCmPluginBaseEngTextResolver::ResolveTextL( KDefaultConnNameTextId ); if ( resolvedText != NULL ) @@ -400,23 +398,19 @@ // --------------------------------------------------------------------------- // EXPORT_C CCmPluginBaseEng* CCmPluginBaseEng::CreateCopyL( - CCmClientPluginInstance* /*aClientPluginInstance*/ ) + CCmClientPluginInstance* /*aClientPluginInstance*/ ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_CREATECOPYL_ENTRY ); TCmPluginInitParam params( iSession ); - CCmPluginBaseEng* copyInst = CreateInstanceL( params ); CleanupStack::PushL( copyInst ); PrepareToCopyDataL( copyInst ); - CopyDataL( copyInst ); - CleanupStack::Pop( copyInst ); OstTraceFunctionExit0( CCMPLUGINBASEENG_CREATECOPYL_EXIT ); - return copyInst; } @@ -427,7 +421,7 @@ EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObserved( RArray& aTableIdArray ) const { - // Service and bearer records should be added by plugins + // Service and bearer records should be added by plugins. aTableIdArray.Append( KCDTIdIAPRecord ); aTableIdArray.Append( KCDTIdWAPAccessPointRecord ); @@ -460,17 +454,17 @@ CopyRecordDataL( KIapRecordIndex, aCopyInstance ); - // Ensure that iap's name is set by the rules(Naming Method) - SetNameL( iIapRecord->iRecordName.GetL(), - aCopyInstance->iIapRecord, - aCopyInstance->iNamingMethod ); + // Ensure that IAP's name is set by the rules (Naming Method). + SetNameL( + iIapRecord->iRecordName.GetL(), + aCopyInstance->iIapRecord, + aCopyInstance->iNamingMethod ); CopyRecordDataL( KServiceRecordIndex, aCopyInstance ); CopyRecordDataL( KNetworkRecordIndex, aCopyInstance ); CopyRecordDataL( KWAPAPRecordIndex, aCopyInstance ); CopyRecordDataL( KWAPBearerRecordIndex, aCopyInstance ); CopyRecordDataL( KMetaDataRecordIndex, aCopyInstance ); - CopyRecordDataL( KLocationRecordIndex, aCopyInstance ); CopyRecordDataL( KProxyRecordIndex, aCopyInstance ); CopyBearerRecordsL( aCopyInstance ); @@ -499,6 +493,8 @@ case KServiceRecordIndex: { aCopyInstance->iServiceRecord = CopyServiceRecordL(); + // The name of the service record copy is changed during update + // process, in PrepareToUpdateRecordsL()-method. } break; case KNetworkRecordIndex: @@ -521,18 +517,12 @@ break; case KMetaDataRecordIndex: { - aCopyInstance->iMetaDataRecord = + CCDIAPMetadataRecord* metadataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); - aCopyInstance->iMetaDataRecord->iIAP = IAPRecordElementId(); - aCopyInstance->iMetaDataRecord->iMetadata.SetL( iMetaDataRecord->iMetadata ); - aCopyInstance->iMetaDataRecord->iSeamlessness.SetL( iMetaDataRecord->iSeamlessness ); - } - break; - case KLocationRecordIndex: - { - aCopyInstance->iWapIPBearerRecord = - static_cast - ( CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) ); + CleanupStack::PushL( metadataRecord ); + CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord ); + CleanupStack::Pop( metadataRecord ); + aCopyInstance->iMetaDataRecord = metadataRecord; } break; case KProxyRecordIndex: @@ -555,6 +545,87 @@ } // --------------------------------------------------------------------------- +// CCmPluginBaseEng:: CopyRecordFieldsL +// --------------------------------------------------------------------------- +// +void CCmPluginBaseEng::CopyRecordFieldsL( + CommsDat::CMDBRecordBase& aSource, + CommsDat::CMDBRecordBase& aDestination ) + { + OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_ENTRY ); + + const SRecordTypeInfo* recordInfo = aSource.GetRecordInfo(); + if ( recordInfo == NULL ) + { + User::Leave( KErrCorrupt ); + } + + CMDBElement* ptrSource( NULL ); + CMDBElement* ptrDest( NULL ); + + while ( recordInfo != NULL && recordInfo->iTypeId != 0 ) + { + ptrSource = aSource.GetFieldByIdL( recordInfo->iTypeId ); + ptrDest = aDestination.GetFieldByIdL( recordInfo->iTypeId ); + + // Make sure we see only basic type info. Masks out any additional info + // on links (CommsDat internal stuff). + switch ( recordInfo->iValType & 0x000000ff ) + { + case CommsDat::EInt: + case CommsDat::EBool: + { + if ( !( ptrSource->IsNull() ) ) + { + static_cast&>( *ptrDest ).SetL( + static_cast&>( *ptrSource ) ); + } + } + break; + case CommsDat::EUint32: + case CommsDat::ELink: + { + if ( !( ptrSource->IsNull() ) ) + { + static_cast&>( *ptrDest ).SetL( + static_cast&>( *ptrSource ) ); + } + } + break; + case CommsDat::EDesC8: + { + if ( !( ptrSource->IsNull() ) ) + { + static_cast&>( *ptrDest ).SetL( + static_cast&>( *ptrSource ) ); + } + } + break; + case CommsDat::EText: + case CommsDat::EMedText: + case CommsDat::ELongText: + { + if ( !( ptrSource->IsNull() ) ) + { + static_cast&>( *ptrDest ).SetL( + static_cast&>( *ptrSource ) ); + } + } + break; + default: + { + User::Leave( KErrCorrupt ); + } + break; + } + ptrDest->SetAttributes( ptrSource->Attributes() ); + recordInfo++; + } + + OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_EXIT ); + } + +// --------------------------------------------------------------------------- // CCmPluginBaseEng::DoLoadL // --------------------------------------------------------------------------- // @@ -568,7 +639,6 @@ LoadWapRecordL(); LoadMetadataRecordL(); LoadNetworkRecordL(); - LoadLocationRecordL(); // This is a connectionmethodinfo instance, that has no // service and proxy setting. @@ -637,7 +707,7 @@ // Now try to find the linked proxy record // create new record - CCDProxiesRecord* proxyRecord = static_cast( + CCDProxiesRecord* proxyRecord = static_cast( CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); CleanupStack::PushL( proxyRecord ); @@ -653,7 +723,7 @@ if ( proxieRS->FindL(iSession) ) { TInt i( 0 ); - while( i < proxieRS->iRecords.Count() ) + while ( i < proxieRS->iRecords.Count() ) // Now that we have a list of services with the proper service type // search for our proxy record and remove it from the array, // then destroy the array. @@ -726,27 +796,6 @@ void CCmPluginBaseEng::LoadLocationRecordL() { OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_ENTRY ); - - CCDLocationRecord* locationRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord)); - - CleanupStack::PushL( locationRecord ); - - locationRecord->SetRecordId( iIapRecord->iLocation ); - if ( locationRecord->FindL(iSession) ) - { - iLocationEnabled = ETrue; - - iLocationRecord = locationRecord; - - CleanupStack::Pop( locationRecord ); - } - else - { - iLocationEnabled = EFalse; - - CleanupStack::PopAndDestroy( locationRecord ); - } OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_EXIT ); } @@ -755,24 +804,28 @@ // --------------------------------------------------------------------------- // void CCmPluginBaseEng::PrepareToUpdateRecordsL( - CCmClientPluginInstance* aClientPluginInstance ) + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_ENTRY ); - // Set the record attributes to bearer specific records - CCDIAPRecord* iapRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + //TODO, Add null checks for mandatory generic record pointers. + // + + // Set the record attributes to bearer specific records. + CCDIAPRecord* iapRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); for ( TInt i = 0; i < aClientPluginInstance->iBearerSpecRecordArray.Count(); i++ ) { - CCDRecordBase* record = - static_cast( aClientPluginInstance->iBearerSpecRecordArray[i] ); + CCDRecordBase* record = static_cast( + aClientPluginInstance->iBearerSpecRecordArray[i] ); CopyAttributes( iapRecord, record ); } - PreparePluginToUpdateRecordsL( aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ); + PreparePluginToUpdateRecordsL( + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); OstTraceFunctionExit0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_EXIT ); } @@ -782,16 +835,16 @@ // --------------------------------------------------------------------------- // void CCmPluginBaseEng::UpdateIAPRecordL( - CCmClientPluginInstance* aClientPluginInstance ) + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_ENTRY ); - CCDIAPRecord* iapRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + CCDIAPRecord* iapRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); if ( iIapId == 0 ) { - // Otherwise predefined iapid + // Otherwise predefined iapid. if ( !iIapRecord->RecordId() ) { iIapRecord->SetRecordId( KCDNewRecordRequest ); @@ -814,14 +867,7 @@ iIapRecord->iNetwork = iNetworkRecord->RecordId(); - if ( iLocationRecord ) - { - iIapRecord->iLocation = iLocationRecord->RecordId(); - } - else - { - iIapRecord->iLocation = GetLocationIdL(); - } + iIapRecord->iLocation = GetLocationIdL(); CopyAttributes( iapRecord, iIapRecord ); CheckIfNameModifiedL( iapRecord, iIapRecord ); @@ -840,24 +886,24 @@ CleanupStack::PushL( iapRecord ); aClientPluginInstance->iGenRecordArray.InsertL( - static_cast( tempIapRecord ), KIapRecordIndex ); + static_cast( tempIapRecord ), + KIapRecordIndex ); CleanupStack::PopAndDestroy( iapRecord ); CleanupStack::Pop( tempIapRecord ); - } else { delete iIapRecord; iIapRecord = NULL; - iIapRecord = static_cast - ( CCDRecordBase::CreateCopyRecordL( *iapRecord ) ); + iIapRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iapRecord ) ); iIapRecord->SetElementId( iapRecord->ElementId() ); - iIapRecord->ModifyL( iSession ); } + OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_EXIT ); } @@ -876,6 +922,11 @@ CCDProxiesRecord* proxyRecord = static_cast( aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); + if ( !iapRecord || !proxyRecord ) + { + User::Leave( KErrCorrupt ); + } + CopyAttributes( iapRecord, proxyRecord ); CheckIfNameModifiedL( iapRecord, proxyRecord ); @@ -884,17 +935,17 @@ delete iProxyRecord; iProxyRecord = NULL; - iProxyRecord = static_cast - ( CCDRecordBase::CreateCopyRecordL( *proxyRecord ) ); + iProxyRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *proxyRecord ) ); iProxyRecord->SetElementId( proxyRecord->ElementId() ); if ( !iProxyRecord->RecordId() ) - // new proxy setting -> create new record { + // New proxy setting -> create new record. iProxyRecord->iService = iServiceRecord->RecordId(); iProxyRecord->iServiceType.SetL( iIapRecord->iServiceType ); - // By default protocol is set to "http" + // By default protocol is set to "http". if ( TPtrC( proxyRecord->iProtocolName ).Length() == 0 ) { iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName ); @@ -907,7 +958,7 @@ proxyRecord->iServiceType.SetL( iIapRecord->iServiceType ); } else - // already existing record -> update only + // Already existing record -> update only. { iProxyRecord->ModifyL( iSession ); } @@ -919,6 +970,7 @@ iProxyRecord->DeleteL( iSession ); } } + OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT ); } @@ -931,32 +983,29 @@ { OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_ENTRY ); - CCDIAPRecord* iapRecord = static_cast( + CCDIAPRecord* clientIapRecord = static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); - CCDIAPMetadataRecord* metadataRecord = static_cast( + CCDIAPMetadataRecord* clientMetadataRecord = static_cast( aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); - CopyAttributes( iapRecord, metadataRecord ); - CheckIfNameModifiedL( iapRecord, metadataRecord ); - + // Adjust client side metadata record attributes and name if needed. + CopyAttributes( clientIapRecord, clientMetadataRecord ); + CheckIfNameModifiedL( clientIapRecord, clientMetadataRecord ); + + // Make a copy of client's metadata record and save to database. delete iMetaDataRecord; iMetaDataRecord = NULL; - - // Get a new blank IAP metadata record. - iMetaDataRecord = NewMetadataRecordL( EFalse ); - - iMetaDataRecord->SetElementId( metadataRecord->ElementId() ); - iMetaDataRecord->iRecordName.SetL( metadataRecord->iRecordName ); - iMetaDataRecord->iMetadata.SetL( metadataRecord->iMetadata ); - iMetaDataRecord->iSeamlessness.SetL( metadataRecord->iSeamlessness ); + iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); + CopyRecordFieldsL( *clientMetadataRecord, *iMetaDataRecord ); + iMetaDataRecord->SetElementId( clientMetadataRecord->ElementId() ); if ( !iMetaDataRecord->RecordId() ) { iMetaDataRecord->iIAP = IAPRecordElementId(); iMetaDataRecord->SetRecordId( KCDNewRecordRequest ); iMetaDataRecord->StoreL( iSession ); - metadataRecord->SetElementId( iMetaDataRecord->ElementId() ); + clientMetadataRecord->SetElementId( iMetaDataRecord->ElementId() ); } else { @@ -975,16 +1024,17 @@ { OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_ENTRY ); - CCDIAPRecord* iapRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); - - CCDRecordBase* serviceRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KServiceRecordIndex] ); + CCDIAPRecord* iapRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + + CCDRecordBase* serviceRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KServiceRecordIndex] ); CopyAttributes( iapRecord, serviceRecord ); - UpdateServiceRecordL( aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ); + UpdateServiceRecordL( + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_EXIT ); } @@ -994,15 +1044,15 @@ // --------------------------------------------------------------------------- // void CCmPluginBaseEng::UpdateNetworkRecordL( - CCmClientPluginInstance* aClientPluginInstance ) + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_ENTRY ); - CCDIAPRecord* iapRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); - - CCDNetworkRecord* networkRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KNetworkRecordIndex] ); + CCDIAPRecord* iapRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + + CCDNetworkRecord* networkRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KNetworkRecordIndex] ); CopyAttributes( iapRecord, networkRecord ); @@ -1011,8 +1061,8 @@ CheckIfNameModifiedL( iapRecord, networkRecord ); - iNetworkRecord = static_cast - ( CCDRecordBase::CreateCopyRecordL( *networkRecord ) ); + iNetworkRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *networkRecord ) ); iNetworkRecord->SetElementId( networkRecord->ElementId() ); @@ -1026,6 +1076,7 @@ { iNetworkRecord->ModifyL( iSession ); } + OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT ); } @@ -1034,49 +1085,9 @@ // --------------------------------------------------------------------------- // void CCmPluginBaseEng::UpdateLocationRecordL( - CCmClientPluginInstance* aClientPluginInstance ) + CCmClientPluginInstance* /*aClientPluginInstance*/ ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_ENTRY ); - - if ( iLocationEnabled ) - { - CCDIAPRecord* iapRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); - - CCDLocationRecord* locationRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KLocationRecordIndex] ); - - // location record is not set as hidden because it can be shared between iaps - CopyAttributes( iapRecord, locationRecord ); - locationRecord->ClearAttributes( ECDHidden ); - - delete iLocationRecord; - iLocationRecord = NULL; - - iLocationRecord = static_cast - ( CCDRecordBase::CreateCopyRecordL( *locationRecord ) ); - - iLocationRecord->SetElementId( locationRecord->ElementId() ); - - CheckIfNameModifiedL( iapRecord, locationRecord ); - - if ( !iLocationRecord->RecordId() ) - { - iLocationRecord->SetRecordId( KCDNewRecordRequest ); - iLocationRecord->StoreL( iSession ); - } - else - { - iLocationRecord->ModifyL( iSession ); - } - } - else - { - if ( iLocationRecord ) - { - iLocationRecord->DeleteL( iSession ); - } - } OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_EXIT ); } @@ -1105,8 +1116,8 @@ if ( !iProxyRecord ) { - iProxyRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord)); + iProxyRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); } iProxyRecord->iUseProxyServer = aEnable; @@ -1122,15 +1133,7 @@ { OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENABLELOCATIONL_ENTRY ); - if ( aEnable ) - { - if ( !iLocationRecord ) - { - iLocationRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord)); - } - } - + // Not supported anymore iLocationEnabled = aEnable; OstTraceFunctionExit0( CCMPLUGINBASEENG_ENABLELOCATIONL_EXIT ); @@ -1147,8 +1150,8 @@ iWapIPBearerRecord = FindWAPRecordL(); if ( iWapIPBearerRecord ) { - CCDWAPAccessPointRecord *wapApRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord)); + CCDWAPAccessPointRecord *wapApRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); CleanupStack::PushL( wapApRecord ); @@ -1158,8 +1161,8 @@ { CleanupStack::PopAndDestroy( wapApRecord ); - wapApRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord)); + wapApRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); } else { @@ -1175,6 +1178,7 @@ { NewWapRecordL(); } + OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADWAPRECORDL_EXIT ); } @@ -1196,7 +1200,7 @@ // --------------------------------------------------------------------------- // void CCmPluginBaseEng::UpdateWapRecordL( - CCmClientPluginInstance* aClientPluginInstance ) + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEWAPRECORDL_ENTRY ); @@ -1206,14 +1210,14 @@ delete iWapIPBearerRecord; iWapIPBearerRecord = NULL; - CCDIAPRecord* iapRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); - - CCDWAPAccessPointRecord* wapAPRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); - - CCDWAPIPBearerRecord* wapIPBearerRecord = - static_cast( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); + CCDIAPRecord* iapRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + + CCDWAPAccessPointRecord* wapAPRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); + + CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); CopyAttributes( iapRecord, wapAPRecord ); CopyAttributes( iapRecord, wapIPBearerRecord ); @@ -1221,12 +1225,12 @@ CheckIfNameModifiedL( iapRecord, wapAPRecord ); CheckIfNameModifiedL( iapRecord, wapIPBearerRecord ); - iWapAPRecord = static_cast - ( CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) ); + iWapAPRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) ); iWapAPRecord->SetElementId( wapAPRecord->ElementId() ); - iWapIPBearerRecord = static_cast - ( CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) ); + iWapIPBearerRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) ); iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() ); if ( !iWapAPRecord->RecordId() ) @@ -1256,6 +1260,7 @@ { iWapIPBearerRecord->ModifyL( iSession ); } + OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT ); } @@ -1269,8 +1274,8 @@ if ( !iWapIPBearerRecord ) { - iWapIPBearerRecord = static_cast - ( CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); + iWapIPBearerRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); iWapIPBearerRecord->iWAPProxyPort = 0; iWapIPBearerRecord->iWAPWSPOption = ECmWapWspOptionConnectionOriented; iWapIPBearerRecord->iWAPSecurity = EFalse; @@ -1278,11 +1283,12 @@ if ( !iWapAPRecord ) { - iWapAPRecord = static_cast - ( CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); - // SMS bearer is not supported by this version + iWapAPRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); + // SMS bearer is not supported by this version. iWapAPRecord->iWAPCurrentBearer.SetL( TPtrC( KCDTypeNameWAPIPBearer ) ); } + OstTraceFunctionExit0( CCMPLUGINBASEENG_NEWWAPRECORDL_EXIT ); } @@ -1313,9 +1319,10 @@ // CCmPluginBaseEng::SetAttribute // --------------------------------------------------------------------------- // -void CCmPluginBaseEng::SetAttribute( CCDRecordBase* aRecord, - TUint32 aAttribute, - TBool aSet ) +void CCmPluginBaseEng::SetAttribute( + CCDRecordBase* aRecord, + TUint32 aAttribute, + TBool aSet ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETATTRIBUTE_ENTRY ); @@ -1335,22 +1342,23 @@ // CCmPluginBaseEng::CopyAttributes // --------------------------------------------------------------------------- // -void CCmPluginBaseEng::CopyAttributes( CCDRecordBase* aSrcRecord, - CCDRecordBase* aDstRecord ) +void CCmPluginBaseEng::CopyAttributes( + CCDRecordBase* aSrcRecord, + CCDRecordBase* aDstRecord ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYATTRIBUTES_ENTRY ); if ( aSrcRecord == NULL || aDstRecord == NULL ) { + OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT ); return; } - // clear the target record attributes first + // Clear the target record attributes first. aDstRecord->ClearAttributes( aDstRecord->Attributes() ); - aDstRecord->SetAttributes( aSrcRecord->Attributes() ); - OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT ); + OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT ); } // --------------------------------------------------------------------------- @@ -1362,12 +1370,11 @@ OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDWAPRECORDL_ENTRY ); CMDBRecordSet* wapRS = - new(ELeave) - CMDBRecordSet(KCDTIdWAPIPBearerRecord); + new( ELeave ) CMDBRecordSet( KCDTIdWAPIPBearerRecord ); CleanupStack::PushL( wapRS ); - CCDWAPIPBearerRecord* wapBearerRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdWAPIPBearerRecord)); + CCDWAPIPBearerRecord* wapBearerRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); CleanupStack::PushL( wapBearerRecord ); @@ -1377,19 +1384,17 @@ CleanupStack::Pop( wapBearerRecord ); wapBearerRecord = NULL; - if ( wapRS->FindL(iSession) ) + if ( wapRS->FindL( iSession ) ) { - wapBearerRecord = - static_cast(wapRS->iRecords[0]); - - // we take over the ownership of this record + wapBearerRecord = static_cast( wapRS->iRecords[0] ); + + // Take over the ownership of this record. wapRS->iRecords.Remove( 0 ); } CleanupStack::PopAndDestroy( wapRS ); OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDWAPRECORDL_EXIT ); - return wapBearerRecord; } @@ -1402,12 +1407,11 @@ OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_ENTRY ); CMDBRecordSet* metadataRecordSet = - new(ELeave) CMDBRecordSet( iMetadataTableId ); + new( ELeave ) CMDBRecordSet( iMetadataTableId ); CleanupStack::PushL( metadataRecordSet ); CCDIAPMetadataRecord* metadataRecord = - new (ELeave) CCDIAPMetadataRecord( iMetadataTableId ); - + new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); CleanupStack::PushL( metadataRecord ); metadataRecord->iIAP = IAPRecordElementId(); @@ -1434,7 +1438,6 @@ CleanupStack::PopAndDestroy( metadataRecordSet ); OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_EXIT ); - return metadataRecord; } @@ -1442,8 +1445,9 @@ // CCmPluginBaseEng::DoMakeValidNameL // --------------------------------------------------------------------------- // -HBufC* CCmPluginBaseEng::DoMakeValidNameL( const TDesC& aName, - const TUint32& aIapId ) +HBufC* CCmPluginBaseEng::DoMakeValidNameL( + const TDesC& aName, + const TUint32& aIapId ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_ENTRY ); @@ -1469,9 +1473,9 @@ { changed = ETrue; postfix++; - // check the length of postfix, check text length accordingly + // Check the length of postfix, check text length accordingly. pf = postfix; - for (i=1; i<10; i++) + for ( i = 1; i < 10; i++ ) { pf /= 10; if ( !pf ) @@ -1496,7 +1500,7 @@ } if ( postfix ) { - TBuf< KMaxPostfixLength > postfixString; + TBuf postfixString; if ( postfix > 9 ) { postfixString.Format( KFormatLargePostfix, postfix ); @@ -1507,8 +1511,7 @@ postfixString.Format( KFormatPostfix, postfix ); // TODO: AknTextUtils::LanguageSpecificNumberConversion( postfixString ); } - sgdptr.Format( KFormatNameWithPostfix, &sgdptr2, - &postfixString ); + sgdptr.Format( KFormatNameWithPostfix, &sgdptr2, &postfixString ); } else { @@ -1531,7 +1534,6 @@ } OstTraceFunctionExit0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_EXIT ); - return temp; } @@ -1539,8 +1541,9 @@ // CCmPluginBaseEng::EnsureMaxLengthLC // --------------------------------------------------------------------------- // -HBufC* CCmPluginBaseEng::EnsureMaxLengthLC( const TDesC& aName, - TBool& aChanged ) +HBufC* CCmPluginBaseEng::EnsureMaxLengthLC( + const TDesC& aName, + TBool& aChanged ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_ENTRY ); @@ -1556,7 +1559,8 @@ HBufC* corrname; if ( KApMaxConnNameLength < length ) - { // name too long, truncate. + { + // Name too long, truncate. corrname = aName.Left( KApMaxConnNameLength ).AllocLC(); aChanged = ETrue; } @@ -1568,7 +1572,7 @@ { User::Leave( KErrArgument ); } - // comes here only if name is valid + // Comes here only if name is valid. if ( corrname->Length() != aName.Length() ) { aChanged = ETrue; @@ -1576,7 +1580,6 @@ } OstTraceFunctionExit0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_EXIT ); - return corrname; } @@ -1613,8 +1616,8 @@ prefix.Set( aName.Left( lastBrace ) ); } } + OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPREFIX_EXIT ); - return prefix; } @@ -1682,8 +1685,8 @@ } } } + OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPOSTFIX_EXIT ); - return postfix; } @@ -1691,49 +1694,46 @@ // CCmPluginBaseEng::IsValidNameL // --------------------------------------------------------------------------- // -TBool CCmPluginBaseEng::IsValidNameL( const TDesC& aNameText, - const TUint32& aIapId ) +TBool CCmPluginBaseEng::IsValidNameL( + const TDesC& aNameText, + const TUint32& aIapId ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_ISVALIDNAMEL_ENTRY ); TBool retVal( ETrue ); CMDBRecordSet* iapRS = - new(ELeave) CMDBRecordSet(KCDTIdIAPRecord); + new( ELeave ) CMDBRecordSet(KCDTIdIAPRecord); CleanupStack::PushL(iapRS); - CCDIAPRecord* iapRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); - + CCDIAPRecord* iapRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); CleanupStack::PushL( iapRecord ); - // Prime record + // Prime record. iapRecord->iRecordName.SetL( aNameText ); - iapRS->iRecords.AppendL( iapRecord ); - CleanupStack::Pop( iapRecord ); - iapRecord = NULL; - if ( iapRS->FindL(iSession) ) + if ( iapRS->FindL( iSession ) ) { if ( iIapId ) - // this is not a new CM { + // This is not a new CM. for ( TInt i = 0; i < iapRS->iRecords.Count(); ++i ) { if ( iapRS->iRecords[i]->RecordId() != aIapId ) - // duplication because it's not our name { + // Duplication because it's not our name. retVal = EFalse; break; } } } else - // new CM -> any occurence is a duplication { + // New CM -> any occurence is a duplication. retVal = EFalse; } } @@ -1741,7 +1741,6 @@ CleanupStack::PopAndDestroy( iapRS ); OstTraceFunctionExit0( CCMPLUGINBASEENG_ISVALIDNAMEL_EXIT ); - return retVal; } @@ -1760,7 +1759,7 @@ TUint quote( '\'' ); // TChar gives warnings in THUMB & ARMI TInt i( 0 ); - for ( i=0; iiRecordName.SetL( *newName ); @@ -1817,6 +1816,7 @@ { User::Leave( KErrCorrupt ); } + OstTraceFunctionExit0( CCMPLUGINBASEENG_SETDEFAULTNAMEL_EXIT ); } @@ -1841,7 +1841,7 @@ HBufC* newName = DoMakeValidNameL( aName, iapid ); if ( newName ) - // name converted to unique + // Name converted to unique. { CleanupStack::PushL( newName ); aIapRecord->iRecordName.SetL( *newName ); @@ -1880,9 +1880,14 @@ { OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_ENTRY ); + if ( !aSrcRecord || !aDestRecord ) + { + User::Leave( KErrCorrupt ); + } + if ( !TPtrC( aSrcRecord->iRecordName ).CompareF( TPtrC( aDestRecord->iRecordName ) ) ) - // names matche { + // Names match. OstTraceFunctionExit0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT ); return; } @@ -1897,8 +1902,6 @@ // --------------------------------------------------------------------------- TMDBElementId CCmPluginBaseEng::IAPRecordElementId() const { - OstTraceFunctionEntry0( CCMPLUGINBASEENG_IAPRECORDELEMENTID_ENTRY ); - return ( KCDMaskShowField & iIapRecord->ElementId() ); } @@ -1921,45 +1924,43 @@ TUint32 locId( 0 ); CMDBRecordSet* locRS = - new(ELeave) CMDBRecordSet(KCDTIdLocationRecord); + new( ELeave ) CMDBRecordSet( KCDTIdLocationRecord ); CleanupStack::PushL( locRS ); - CCDLocationRecord* locRecord = static_cast - (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord)); - + CCDLocationRecord* locRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdLocationRecord ) ); CleanupStack::PushL( locRecord ); + locRecord->iRecordName.SetL( KLocationName ); locRS->iRecords.AppendL( locRecord ); CleanupStack::Pop( locRecord ); if ( locRS->FindL(iSession) ) { - locRecord = static_cast(locRS->iRecords[0]); - + locRecord = static_cast( locRS->iRecords[0] ); locId = locRecord->RecordId(); } else { - User::Leave( KErrNotFound ); + User::Leave( KErrNotFound ); //TODO, what to do if not found. Can we create it? need study. } CleanupStack::PopAndDestroy( locRS ); OstTraceFunctionExit0( CCMPLUGINBASEENG_GETLOCATIONIDL_EXIT ); - return locId; } // --------------------------------------------------------------------------- // CCmPluginBaseEng::SetProxyServerNameL // --------------------------------------------------------------------------- - void CCmPluginBaseEng::SetProxyServerNameL( const TDesC& aProxyServer, - CCDRecordBase* aProxyRecord ) + void CCmPluginBaseEng::SetProxyServerNameL( + const TDesC& aProxyServer, + CCDRecordBase* aProxyRecord ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_ENTRY ); - CCDProxiesRecord* proxyRecord = - static_cast( aProxyRecord ); + CCDProxiesRecord* proxyRecord = static_cast( aProxyRecord ); proxyRecord->iServerName.SetL( aProxyServer ); if ( !aProxyServer.Length() ) @@ -1979,10 +1980,11 @@ // CCmPluginBaseEng::CheckDNSServerAddressL // --------------------------------------------------------------------------- // -EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL( TBool aIPv6, - CMDBField& aDNS1, - CMDBField& aDNS2, - CMDBField& aDNSFromServer ) +EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL( + TBool aIPv6, + CMDBField& aDNS1, + CMDBField& aDNS2, + CMDBField& aDNSFromServer ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_ENTRY ); @@ -1999,7 +2001,7 @@ } else { - // Both are unspecified + // Both are unspecified. aDNSFromServer = ETrue; } } @@ -2015,7 +2017,7 @@ } else { - // Both are unspecified + // Both are unspecified. aDNSFromServer = ETrue; } } @@ -2046,11 +2048,12 @@ if ( iIapRecord ) { - CCDIAPRecord* iapRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) ); + CCDIAPRecord* iapRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iIapRecord ) ); + iapRecord->SetElementId( iIapRecord->ElementId() ); CleanupStack::PushL( iapRecord ); - iapRecord->SetElementId( iIapRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( iapRecord ) ); + aClientPluginInstance->iGenRecordArray.AppendL( + static_cast( iapRecord ) ); CleanupStack::Pop( iapRecord ); } else @@ -2073,11 +2076,12 @@ if ( iNetworkRecord ) { - CCDNetworkRecord* networkRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) ); + CCDNetworkRecord* networkRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) ); + networkRecord->SetElementId( iNetworkRecord->ElementId() ); CleanupStack::PushL( networkRecord ); - networkRecord->SetElementId( iNetworkRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( networkRecord ) ); + aClientPluginInstance->iGenRecordArray.AppendL( + static_cast( networkRecord ) ); CleanupStack::Pop( networkRecord ); } else @@ -2087,11 +2091,12 @@ if ( iWapAPRecord ) { - CCDWAPAccessPointRecord* wapAPRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) ); + CCDWAPAccessPointRecord* wapAPRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) ); + wapAPRecord->SetElementId( iWapAPRecord->ElementId() ); CleanupStack::PushL( wapAPRecord ); - wapAPRecord->SetElementId( iWapAPRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( wapAPRecord ) ); + aClientPluginInstance->iGenRecordArray.AppendL( + static_cast( wapAPRecord ) ); CleanupStack::Pop( wapAPRecord ); } else @@ -2101,11 +2106,12 @@ if ( iWapIPBearerRecord ) { - CCDWAPIPBearerRecord* wapIPBearerRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) ); + CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) ); + wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() ); CleanupStack::PushL( wapIPBearerRecord ); - wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( wapIPBearerRecord ) ); + aClientPluginInstance->iGenRecordArray.AppendL( + static_cast( wapIPBearerRecord ) ); CleanupStack::Pop( wapIPBearerRecord ); } else @@ -2115,45 +2121,33 @@ if ( iMetaDataRecord ) { - CCDIAPMetadataRecord* metaDataRecord = + CCDIAPMetadataRecord* metadataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); - CleanupStack::PushL( metaDataRecord ); - metaDataRecord->iIAP = IAPRecordElementId(); - metaDataRecord->iMetadata.SetL( iMetaDataRecord->iMetadata ); - metaDataRecord->iSeamlessness.SetL( iMetaDataRecord->iSeamlessness ); - metaDataRecord->SetElementId( iMetaDataRecord->ElementId() ); - // Record name is set during update. + CleanupStack::PushL( metadataRecord ); + CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord ); + metadataRecord->SetElementId( iMetaDataRecord->ElementId() ); + // Record name is set/changed during update. aClientPluginInstance->iGenRecordArray.AppendL( - static_cast( metaDataRecord ) ); - CleanupStack::Pop( metaDataRecord ); + static_cast( metadataRecord ) ); + CleanupStack::Pop( metadataRecord ); } else { aClientPluginInstance->iGenRecordArray.AppendL( NULL ); } - if ( iLocationRecord ) - { - CCDLocationRecord* locationRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iLocationRecord ) ); - CleanupStack::PushL( locationRecord ); - locationRecord->SetElementId( iLocationRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( locationRecord ) ); - CleanupStack::Pop( locationRecord ); - } - else - { - aClientPluginInstance->iGenRecordArray.AppendL( NULL ); - } + // Location record does not need to be loaded + aClientPluginInstance->iGenRecordArray.AppendL( NULL ); if ( iProxyRecord ) { - CCDProxiesRecord* proxyRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + CCDProxiesRecord* proxyRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + proxyRecord->SetElementId( iProxyRecord->ElementId() ); CleanupStack::PushL( proxyRecord ); - proxyRecord->SetElementId( iProxyRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( proxyRecord ) ); + aClientPluginInstance->iGenRecordArray.AppendL( + static_cast( proxyRecord ) ); CleanupStack::Pop( proxyRecord ); } else @@ -2330,9 +2324,10 @@ break; case ECmDestination: { - TRAPD( err, retVal = GetBearerBoolAttributeL( aAttribute, - aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ) ); + TRAPD( err, retVal = GetBearerBoolAttributeL( + aAttribute, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ) ); if ( err ) { if ( err == KErrNotFound ) @@ -2351,12 +2346,18 @@ retVal = EFalse; } break; + case ECmLocationUsageEnabled: + { + retVal = iLocationEnabled; + } + break; case ECmCoverage: // By default the plugin has no network coverage. { - TRAPD( err, retVal = GetBearerBoolAttributeL( aAttribute, - aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ) ); + TRAPD( err, retVal = GetBearerBoolAttributeL( + aAttribute, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ) ); if ( err ) { if ( err == KErrNotFound ) @@ -2372,16 +2373,14 @@ break; case ECmMetaHighlight: { - CCDIAPMetadataRecord* metadataRecord = - static_cast( + CCDIAPMetadataRecord* metadataRecord = static_cast( aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); retVal = metadataRecord->iMetadata & EMetaHighlight; } break; case ECmMetaHiddenAgent: { - CCDIAPMetadataRecord* metadataRecord = - static_cast( + CCDIAPMetadataRecord* metadataRecord = static_cast( aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); retVal = metadataRecord->iMetadata & EMetaHiddenAgent; } @@ -2420,16 +2419,40 @@ { OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_ENTRY ); + if ( !aClientPluginInstance ) + { + User::Leave( KErrCorrupt ); + } + HBufC* retVal = NULL; switch ( aAttribute ) { + case ECmBearerIcon: + { + //TODO, read icon name from metadata record after commsdat changes implemented. + //CCDIAPMetadataRecord* metadataRecord = static_cast( + // aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); + + //if ( !metadataRecord ) + // { + // User::Leave( KErrCorrupt ); + // } + + //retVal = TPtrC( metadataRecord->iIconFileName ).AllocL(); + retVal = KNullDesC().AllocL();//TODO, check this freed + } + break; case ECmStartPage: { - CCDWAPAccessPointRecord* wapAPRecord = - static_cast( + CCDWAPAccessPointRecord* wapAPRecord = static_cast( aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); + if ( !wapAPRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( wapAPRecord->iWAPStartPage ).AllocL(); } break; @@ -2438,84 +2461,89 @@ CCDIAPRecord* iapRecord = static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + if ( !iapRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( iapRecord->iRecordName ).AllocL(); } break; case ECmProxyServerName: { - if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) - { - User::Leave( KErrNotFound ); - } - CCDProxiesRecord* proxyRecord = static_cast( aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); + if ( !proxyRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( proxyRecord->iServerName ).AllocL(); } break; case ECmProxyProtocolName: { - if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) - { - User::Leave( KErrNotFound ); - } - CCDProxiesRecord* proxyRecord = static_cast( aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); + if ( !proxyRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( proxyRecord->iExceptions ).AllocL(); } break; case ECmProxyExceptions: { - if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) - { - User::Leave( KErrNotFound ); - } - CCDProxiesRecord* proxyRecord = static_cast( aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); + if ( !proxyRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( proxyRecord->iProtocolName ).AllocL(); } break; case ECmWapIPGatewayAddress: { - if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ) - { - User::Leave( KErrNotFound ); - } - CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); + if ( !wapIPBearerRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( wapIPBearerRecord->iWAPGatewayAddress ).AllocL(); } break; case ECmWapIPProxyLoginName: { - if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ) - { - User::Leave( KErrNotFound ); - } - CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); + if ( !wapIPBearerRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginName ).AllocL(); } break; case ECmWapIPProxyLoginPass: { - if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ) - { - User::Leave( KErrNotFound ); - } - CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); + if ( !wapIPBearerRecord ) + { + User::Leave( KErrCorrupt ); + } + retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginPass ).AllocL(); } break; @@ -2560,13 +2588,13 @@ return retVal; } -//----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CCmPluginBaseEng::GetIntAttributeL // ----------------------------------------------------------------------------- EXPORT_C void CCmPluginBaseEng::SetIntAttributeL( - TUint32 aAttribute, - TUint32 aValue, - CCmClientPluginInstance* aClientPluginInstance ) + TUint32 aAttribute, + TUint32 aValue, + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_ENTRY ); @@ -2593,7 +2621,7 @@ { static_cast( aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )-> - iSeamlessness.SetL( aValue ); + iSeamlessness.SetL( aValue ); } else { @@ -2611,17 +2639,18 @@ { if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) { - CCDProxiesRecord* proxyRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + CCDProxiesRecord* proxyRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); CleanupStack::PushL( proxyRecord ); proxyRecord->SetElementId( iProxyRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( proxyRecord ) ); + aClientPluginInstance->iGenRecordArray.AppendL( + static_cast( proxyRecord ) ); CleanupStack::Pop( proxyRecord ); } static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) - ->iPortNumber = aValue; + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )-> + iPortNumber = aValue; } break; case ECmWapIPWSPOption: @@ -2633,39 +2662,43 @@ else { static_cast( - aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPWSPOption.SetL( aValue ); + aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )-> + iWAPWSPOption.SetL( aValue ); } } break; case ECmWapIPProxyPort: { static_cast( - aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPProxyPort.SetL( aValue ); + aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )-> + iWAPProxyPort.SetL( aValue ); } break; default: { - SetBearerIntAttributeL( aAttribute, - aValue, - aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ); + SetBearerIntAttributeL( + aAttribute, + aValue, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); } } + OstTraceFunctionExit0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_EXIT ); } -//----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CCmPluginBaseEng::SetBoolAttributeL // ----------------------------------------------------------------------------- EXPORT_C void CCmPluginBaseEng::SetBoolAttributeL( - TUint32 aAttribute, - TBool aValue, - CCmClientPluginInstance* aClientPluginInstance ) + TUint32 aAttribute, + TBool aValue, + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_ENTRY ); CCDIAPRecord* iapRecord = static_cast( - aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); switch ( aAttribute ) { @@ -2707,17 +2740,18 @@ { if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) { - CCDProxiesRecord* proxyRecord = - static_cast( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + CCDProxiesRecord* proxyRecord = static_cast( + CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); CleanupStack::PushL( proxyRecord ); proxyRecord->SetElementId( iProxyRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( static_cast( proxyRecord ) ); + aClientPluginInstance->iGenRecordArray.AppendL( + static_cast( proxyRecord ) ); CleanupStack::Pop( proxyRecord ); } static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) - ->iUseProxyServer = aValue; + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iUseProxyServer = + aValue; } break; case ECmChargeCardUsageEnabled: @@ -2732,9 +2766,8 @@ break; case ECmMetaHighlight: { - CCDIAPMetadataRecord* metadataRecord = - static_cast( - aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); + CCDIAPMetadataRecord* metadataRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); if ( aValue ) { metadataRecord->iMetadata = EMetaHighlight | metadataRecord->iMetadata; @@ -2762,38 +2795,57 @@ case ECmWapIPSecurity: { static_cast( - aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPSecurity.SetL( aValue ); + aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ) + ->iWAPSecurity.SetL( aValue ); } break; default: { - SetBearerBoolAttributeL( aAttribute, - aValue, - aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ); + SetBearerBoolAttributeL( + aAttribute, + aValue, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); } } + OstTraceFunctionExit0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_EXIT ); } -//----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CCmPluginBaseEng::SetStringAttributeL // ----------------------------------------------------------------------------- EXPORT_C void CCmPluginBaseEng::SetStringAttributeL( - TUint32 aAttribute, - const TDesC16& aValue, - CCmClientPluginInstance* aClientPluginInstance ) + TUint32 aAttribute, + const TDesC16& aValue, + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_ENTRY ); switch ( aAttribute ) { + case ECmBearerIcon: + { + //TODO, write icon name to metadata record after commsdat changes implemented. + //CCDIAPMetadataRecord* metadataRecord = static_cast( + // aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); + + //if ( !metadataRecord ) + // { + // User::Leave( KErrCorrupt ); + // } + //metadataRecord->iIconFileName.SetL( aValue ); + } + break; case ECmStartPage: { - CCDWAPAccessPointRecord* wapAPRecord = - static_cast( - aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); - + CCDWAPAccessPointRecord* wapAPRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); + + if ( !wapAPRecord ) + { + User::Leave( KErrCorrupt ); + } wapAPRecord->iWAPStartPage.SetL( aValue ); } break; @@ -2802,23 +2854,25 @@ CCDIAPRecord* iapRecord = static_cast( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + if ( !iapRecord ) + { + User::Leave( KErrCorrupt ); + } SetNameL( aValue, iapRecord, aClientPluginInstance->iNamingMethod ); } break; case ECmProxyServerName: { - CCDProxiesRecord* proxyRecord = - static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); + CCDProxiesRecord* proxyRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); if ( !proxyRecord ) { - proxyRecord = static_cast - ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) ); - - // map proxy record to this iap. - proxyRecord->iService = - static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); + proxyRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); + + // Map proxy record to this iap. + proxyRecord->iService = static_cast( + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex ); } @@ -2828,18 +2882,16 @@ break; case ECmProxyProtocolName: { - CCDProxiesRecord* proxyRecord = - static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); + CCDProxiesRecord* proxyRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); if ( !proxyRecord ) { - proxyRecord = static_cast - ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) ); - - // map proxy record to this iap. - proxyRecord->iService = - static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); + proxyRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); + + // Map proxy record to this iap. + proxyRecord->iService = static_cast( + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex ); } @@ -2849,18 +2901,16 @@ break; case ECmProxyExceptions: { - CCDProxiesRecord* proxyRecord = - static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); + CCDProxiesRecord* proxyRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); if ( !proxyRecord ) { - proxyRecord = static_cast - ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) ); - - // map proxy record to this iap. - proxyRecord->iService = - static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); + proxyRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); + + // Map proxy record to this iap. + proxyRecord->iService = static_cast( + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex ); } @@ -2873,6 +2923,10 @@ CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); + if ( !wapIPBearerRecord ) + { + User::Leave( KErrCorrupt ); + } wapIPBearerRecord->iWAPGatewayAddress.SetL( aValue ); } break; @@ -2881,6 +2935,10 @@ CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); + if ( !wapIPBearerRecord ) + { + User::Leave( KErrCorrupt ); + } wapIPBearerRecord->iWAPProxyLoginName.SetL( aValue ); } break; @@ -2889,27 +2947,33 @@ CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); + if ( !wapIPBearerRecord ) + { + User::Leave( KErrCorrupt ); + } wapIPBearerRecord->iWAPProxyLoginPass.SetL( aValue ); } break; default: { - SetBearerStringAttributeL( aAttribute, - aValue, - aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ); + SetBearerStringAttributeL( + aAttribute, + aValue, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); } } + OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_EXIT ); } -//----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CCmPluginBaseEng::SetString8AttributeL // ----------------------------------------------------------------------------- EXPORT_C void CCmPluginBaseEng::SetString8AttributeL( - TUint32 aAttribute, - const TDesC8& aValue, - CCmClientPluginInstance* aClientPluginInstance ) + TUint32 aAttribute, + const TDesC8& aValue, + CCmClientPluginInstance* aClientPluginInstance ) { OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_ENTRY ); @@ -2917,12 +2981,14 @@ { default: { - SetBearerString8AttributeL( aAttribute, - aValue, - aClientPluginInstance->iGenRecordArray, - aClientPluginInstance->iBearerSpecRecordArray ); + SetBearerString8AttributeL( + aAttribute, + aValue, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); } } + OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_EXIT ); } @@ -2941,7 +3007,6 @@ } OstTraceFunctionExit0( DUP1__ISUNSPECIFIEDIPV4ADDRESS_EXIT ); - return EFalse; } @@ -2968,7 +3033,6 @@ } OstTraceFunctionExit0( DUP2__CLASSIFYIPV6ADDRESS_EXIT ); - return EIPv6UserDefined; }