diff -r fe894bb075c2 -r 79f826a55db2 mds_plat/location_manager_api/tsrc/src/RLocationObjectManipulatorTest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mds_plat/location_manager_api/tsrc/src/RLocationObjectManipulatorTest.cpp Wed Oct 06 15:08:08 2010 +0300 @@ -0,0 +1,545 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ +#include "LocationManagerTestScripter.h" +#include "mdeobject.h" +#include "mdenamespacedef.h" +#include "mdeobjectdef.h" +#include "mdepropertydef.h" +#include "mdeconstants.h" +#include "locationdatatype.h" +#include "mdsutils.h" +#include +#include +#include +#include +#include + +using namespace MdeConstants; + +TInt CLocationManagerTestScripter::PrepareSessionL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "PrepareSessionL" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + User::LeaveIfError( iOM.Connect() ); + iMdeSession = CMdESession::NewL( *this ); + + return KErrNone; + } + +TInt CLocationManagerTestScripter::SetupOML( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "Enter SetupOM" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + iSourceObject = CreateMetadataObjectL(); + TLocationData locationData; + TestLocationData( locationData ); + TInt error( KErrNone ); + error = iOM.CreateLocationObject( locationData, iSourceObject->Id() ); + if( error != KErrNone ) + { + return error; + } + iTargetObject = CreateMetadataObjectL(); + + _LIT( KMsg2, "Exit SetupOM" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + } + +TInt CLocationManagerTestScripter::LocationSnapshotL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "Enter LocationSnapshotL" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + iSourceObject = CreateMetadataObjectL(); + TInt error( KErrNone ); + error = iOM.LocationSnapshot( iSourceObject->Id() ); + + _LIT( KMsg2, "Exit LocationSnapshotL" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return error; + } + +TInt CLocationManagerTestScripter::RemoveLocationObjectL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "Enter RemoveLocationObjectL" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + TInt error( KErrNone ); + error = iOM.RemoveLocationObject( iSourceObject->Id() ); + + _LIT( KMsg2, "Exit RemoveLocationObjectL" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return error; + } + +TInt CLocationManagerTestScripter::TearDownOML( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "Enter TearDownOM" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + iOM.Close(); + + if( iSourceObject && iMdeSession ) + { + TRAP_IGNORE( iMdeSession->RemoveObjectL( iSourceObject->Id() ) ); + } + delete iSourceObject; + iSourceObject = NULL; + if( iTargetObject && iMdeSession ) + { + TRAP_IGNORE( iMdeSession->RemoveObjectL( iTargetObject->Id() ) ); + } + delete iTargetObject; + iTargetObject = NULL; + delete iMdeSession; + iMdeSession = NULL; + + _LIT( KMsg2, "Exit TearDownOM" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + } + +TInt CLocationManagerTestScripter::CloseOML( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "CloseOML" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + iOM.Close(); + + return KErrNone; + } + +TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByIDL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "Enter RLocationObjectManipulatorTest_CopyByIDL" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + TRequestStatus status = KRequestPending; + RArray items; + items.Append( iTargetObject->Id() ); + iOM.CopyLocationData( iSourceObject->Id(), items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNone ); + + status = KRequestPending; + iOM.CopyLocationData( TItemId(12345678), items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNotFound ); + + items.Reset(); + items.Append(TItemId(12345678)); + status = KRequestPending; + iOM.CopyLocationData( iSourceObject->Id(), items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNotFound ); + + status = KRequestPending; + iOM.CopyLocationData( TItemId(12345678), items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNotFound ); + + items.Close(); + + _LIT( KMsg2, "Exit RLocationObjectManipulatorTest_CopyByIDL" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + } + +TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByURIL( CStifItemParser& /*aItem*/ ) + { + _LIT(KURIThatDoesNotExist, "qwerty"); + + TRequestStatus status = KRequestPending; + RPointerArray items; + items.AppendL( &iTargetObject->Uri() ); + TBuf<256> source( iSourceObject->Uri() ); + iOM.CopyLocationData( source, items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNone ); + + source.Copy( KURIThatDoesNotExist ); + status = KRequestPending; + iOM.CopyLocationData( source, items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNotFound ); + + items.Reset(); + HBufC* nouri = source.AllocL(); + items.Append( nouri ); + source.Copy( iSourceObject->Uri() ); + status = KRequestPending; + iOM.CopyLocationData( source, items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNotFound ); + + status = KRequestPending; + source.Copy( KURIThatDoesNotExist ); + iOM.CopyLocationData( source, items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrNotFound ); + + items.ResetAndDestroy(); + + return KErrNone; + } + +TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByID_DisconnectedL( + CStifItemParser& /*aItem*/ ) + { + TRequestStatus status = KRequestPending; + RArray items; + items.Append( 97976479 ); + iOM.CopyLocationData( iSourceObject->Id(), items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrDisconnected ); + + return KErrNone; + } + +TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByURI_DisconnectedL( + CStifItemParser& /*aItem*/ ) + { + _LIT(KURIThatDoesNotExist, "notexistinganywhere"); + + TRequestStatus status = KRequestPending; + RPointerArray items; + items.AppendL( &KURIThatDoesNotExist ); + TBuf<256> source( iSourceObject->Uri() ); + iOM.CopyLocationData( source, items, status ); + User::WaitForRequest( status ); + TL( status.Int() == KErrDisconnected ); + + return KErrNone; + } + +CMdEObject* CLocationManagerTestScripter::CreateMetadataObjectL( ) + { + CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL(); + CMdEObjectDef& objectDef = namespaceDef.GetObjectDefL( Image::KImageObject ); + CMdEObject *obj = iMdeSession->NewObjectLC( objectDef, Object::KAutomaticUri ); + + // required object properties + CMdEPropertyDef& creationDef = objectDef.GetPropertyDefL( Object::KCreationDateProperty ); + CMdEPropertyDef& modifiedDef = objectDef.GetPropertyDefL( Object::KLastModifiedDateProperty ); + CMdEPropertyDef& sizeDef = objectDef.GetPropertyDefL( Object::KSizeProperty ); + CMdEPropertyDef& itemTypeDef = objectDef.GetPropertyDefL( Object::KItemTypeProperty ); + + TTime timestamp( 0 ); + timestamp.UniversalTime(); + + // required object properties + obj->AddTimePropertyL( creationDef, timestamp ); + obj->AddTimePropertyL( modifiedDef, timestamp ); + obj->AddUint32PropertyL( sizeDef, 0 ); // always zero size for location objects + obj->AddTextPropertyL( itemTypeDef, Location::KLocationItemType ); + + iMdeSession->AddObjectL( *obj ); + CMdEObject* obj2 = iMdeSession->GetObjectL( obj->Id() ); + CleanupStack::Pop( obj ); + + return obj2; + } + +void CLocationManagerTestScripter::HandleSessionOpened(CMdESession& /*aSession*/, TInt aError) + { + _LIT( KMsg, "CallBck HandleSessionOpened - Error code : %d" ); + TBuf <100> msg; + msg.Format(KMsg, aError); + iLog->Log( msg ); + RDebug::Print(msg); + + // session event + TEventIf event( TEventIf::ESetEvent, _L("Session") ); + TestModuleIf().Event( event ); + } + +void CLocationManagerTestScripter::HandleSessionError(CMdESession& /*aSession*/, TInt aError) + { + _LIT( KMsg, "CallBck HandleSessionError - Error code : %d" ); + TBuf <100> msg; + msg.Format(KMsg, aError); + iLog->Log( msg ); + RDebug::Print(msg); + + // session event + TEventIf event( TEventIf::ESetEvent, _L("Session") ); + TestModuleIf().Event( event ); + } + +void CLocationManagerTestScripter::TestLocationData( TLocationData& aLocationData ) + { + _LIT( temp, "XXX" ); + TBuf<3> countryTxt( temp ); + + TPosition testLocality; + testLocality.SetCoordinate( (TReal64)Math::Random()/KMaxTUint*180.0, (TReal64)Math::Random()/KMaxTUint*90.0, 10.0 ); + testLocality.SetAccuracy( 2.0, 2.0 ); + + CTelephony::TNetworkInfoV1 networkInfo; + networkInfo.iAccess = CTelephony::ENetworkAccessGsm; + networkInfo.iAreaKnown = ETrue; + networkInfo.iBandInfo = CTelephony::E800BandA; + networkInfo.iCellId = 1; + networkInfo.iLocationAreaCode = 1; + networkInfo.iMode = CTelephony::ENetworkModeGsm; + networkInfo.iStatus = CTelephony::ENetworkStatusCurrent; + networkInfo.iCountryCode = countryTxt; + networkInfo.iNetworkId = countryTxt; + + TCourse kurssi; + kurssi.SetCourse( 1.0 ); + kurssi.SetCourseAccuracy( 1.0 ); + kurssi.SetHeading( 10.0 ); + kurssi.SetSpeed( 10.0 ); + + aLocationData.iPosition = testLocality; + aLocationData.iCountry = countryTxt; + aLocationData.iNetworkInfo = networkInfo; + aLocationData.iSatellites = 4; + aLocationData.iCourse = kurssi; + aLocationData.iQuality = 1; + } + + +#ifdef LOC_REVERSEGEOCODE +TInt CLocationManagerTestScripter::ConnectGeoTaggerL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "ConnectGeoTaggerL" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + if(!iLocGeoTaggerConnected) + { + User::LeaveIfError( iLocationGeoTagger.Connect() ); + } + + iLocGeoTaggerConnected = ETrue; + return KErrNone; + } + +TInt CLocationManagerTestScripter::CloseGeoTaggerL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "CloseGeoTaggerL" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + iLocationGeoTagger.Close() ; + iLocGeoTaggerConnected = EFalse; + + return KErrNone; + } + + +TInt CLocationManagerTestScripter::StartGeoTaggingL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "Enter StartGeoTagging" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + //rav + + if(!iLocGeoTaggerConnected) + { + User::LeaveIfError( iLocationGeoTagger.Connect() ); + } + + iLocGeoTaggerConnected = ETrue; + + + + TRequestStatus status(KRequestPending); + TConnectionOption conOption(ESilent); + iLocationGeoTagger.StartGeoTagging(status,conOption); + User::WaitForRequest( status ); + + _LIT( KMsg3, " status.Int() =%d" ); + iLog->Log( KMsg3,status.Int() ); + + TL( status.Int() == KErrNone ); + + + _LIT( KMsg2, "Exit StartGeoTagging" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CLocationManagerTestScripter::TestGeoTagCompleteStatusL +// ----------------------------------------------------------------------------- +// +TInt CLocationManagerTestScripter::TestGeoTagCompleteStatusL( CStifItemParser& /*aItem*/) + { + _LIT( KMsg1, "TestGeoTagCompleteStatusL enter" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + TRequestStatus status = KRequestPending; + TGeoTaggingSatus tagPendingFlag = EGeoTaggingPending; + iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag ); + + User::WaitForRequest( status ); + + TL(status.Int() == KErrNone); + + TL(tagPendingFlag == EGeoTagCmpt); + + _LIT( KMsg2, "TestGeoTagCompleteStatusL exit" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + } + + +// ----------------------------------------------------------------------------- +// CLocationManagerTestScripter::TestGeoTagPendingStatusL +// ----------------------------------------------------------------------------- +// +TInt CLocationManagerTestScripter::TestGeoTagPendingStatusL( CStifItemParser& aItem ) + { + _LIT( KMsg1, "TestGeoTagPendingStatusL enter" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + TInt fntype; + aItem.GetNextInt(fntype); + + TRequestStatus status = KRequestPending; + TGeoTaggingSatus tagPendingFlag = EGeoTagCmpt; + iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag ); + + User::WaitForRequest( status ); + + TL(status.Int() == KErrNone); + + if(fntype == 0 ) + { + //for geotagged photos the tag status will be pending + TL(tagPendingFlag == EGeoTaggingPending); + } + else + { + //for geotagged photos the tag status will be pending + TL(tagPendingFlag == EGeoTagCmpt); + } + + _LIT( KMsg2, "TestGeoTagPendingStatusL exit" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CLocationManagerTestScripter::TestGeoTagGoingOnStatusL +// ----------------------------------------------------------------------------- +// +TInt CLocationManagerTestScripter::TestGeoTagGoingOnStatusL( CStifItemParser& aItem ) + { + _LIT( KMsg1, "TestGeoTagGoingOnStatusL enter" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + TInt fntype; + aItem.GetNextInt(fntype); + + + TRequestStatus status = KRequestPending; + TGeoTaggingSatus tagPendingFlag = EGeoTagCmpt; + iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag ); + + User::WaitForRequest( status ); + + TL(status.Int() == KErrNone); + + if(fntype == 0 ) + { + if(tagPendingFlag == EGeoTaggingPending) + { + TConnectionOption conOption(ESilent); + status = KRequestPending; + iLocationGeoTagger.StartGeoTagging(status,conOption); + iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag ); + + TL(tagPendingFlag == EGeoTaggingGoingOn); + + User::WaitForRequest( status ); + + TL(status.Int() == KErrNone); + } + } + else + { + TL(tagPendingFlag == EGeoTagCmpt); + } + + _LIT( KMsg2, "TestGeoTagGoingOnStatusL exit" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + } + + +TInt CLocationManagerTestScripter::CancelGeoTaggingL( CStifItemParser& /*aItem*/ ) + { + _LIT( KMsg1, "Enter CancelGeoTaggingL" ); + iLog->Log( KMsg1 ); + RDebug::Print( KMsg1 ); + + TRequestStatus status(KRequestPending); + TConnectionOption conOption(ESilent); + iLocationGeoTagger.StartGeoTagging(status,conOption); + iLocationGeoTagger.CancelGeoTaggingRequest(); + + User::WaitForRequest( status ); + + TL(status.Int() == KErrNone); + + + _LIT( KMsg2, "CancelGeoTaggingL exit" ); + iLog->Log( KMsg2 ); + RDebug::Print( KMsg2 ); + + return KErrNone; + + } +#endif //LOC_REVERSEGEOCODE + + // End of file