diff -r b2826f67641f -r b5a01337d018 kerneltest/f32test/testfsys/t_tfsys_notify.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/f32test/testfsys/t_tfsys_notify.cpp Mon Nov 01 20:11:36 2010 +0000 @@ -0,0 +1,310 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "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: +// f32test\testfsys\t_tfsys.cpp +// +// + +#include "t_tfsys_notify.h" + + +const TInt KMajorVersionNumber=1; +const TInt KMinorVersionNumber=0; + +void CTestNotificationMountCB::FileOpenL(const TDesC& aName,TUint /*aMode*/,TFileOpen /*anOpen*/,CFileCB* /*aFile*/) + { + RDebug::Print(_L("CTestMountCB::FileOpenL - aName = %S"),&aName); + + if(aName.Match(_L("\\Wellformed_functionReplace.txt"))!= KErrNotFound) //PhantomFile_functionWrite.txt + { + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(*this,EFsFileReplace); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("PhantomFile_functionReplace.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + else if(aName.Match(_L("\\Extended_Replaced.txt"))!= KErrNotFound) //\\Extended_Replaced.txt + { + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(*this,EFsFileReplace); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("PhantomExtended_Replaced.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + else if(aName.Match(_L("\\Extended_RenameMe.txt"))!= KErrNotFound) //\\PhantomExtended_Renamed.txt + { + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(*this,EFsRename); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("PhantomExtended_RenameMe.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + TBuf phantomRename; + phantomRename.Append(_L("\\")); + phantomRename.Append(_L("PhantomExtended_Renamed.txt")); + r = notificationInfo->SetNewName(phantomRename); + User::LeaveIfError(r); + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + + + } + +void CTestNotificationFileCB::RenameL(const TDesC& /*aNewName*/) + { + RDebug::Print(_L("CTestNotificationFileCB::RenameL - aName = %S"),iFileName); + + if(iFileName->Match(_L("\\Wellformed_functionReplace.txt"))!= KErrNotFound) //PhantomFile_functionWrite.txt + { + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(Mount(),EFsFileRename); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("PhantomFile_functionReplace.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + TBuf phantomNewName; + phantomNewName.Append(_L("\\")); + phantomNewName.Append(_L("PhantomFile_functionRename.txt")); + r = notificationInfo->SetNewName(phantomNewName); + User::LeaveIfError(r); + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = Mount().IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + + //MALFORMED + if(iFileName->Match(_L("\\Malformed_functionWrite.txt"))!=KErrNotFound) + { + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(Mount(),EFsFileRename); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("Malformed_functionWrite.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + // Don't set NewName - Should cause error. + // SetNewName(phantomNewName); + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = Mount().IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + } + +void CTestNotificationFileCB::WriteL(TInt /*aPos*/,TInt& /*aLength*/,const TAny* /*aDes*/,const RMessagePtr2& /*aMessage*/) + { + if(iFileName->Match(_L("\\Wellformed_functionWrite.txt"))!= KErrNotFound) //PhantomFile_functionWrite.txt + { + RDebug::Printf("CTestNotificationFileCB::WriteL - wellformed_functionWrite.txt"); + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(Mount(),EFsFileWrite); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("PhantomFile_functionWrite.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + r = notificationInfo->SetFilesize((TInt64)4); + User::LeaveIfError(r); + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = Mount().IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + + //MALFORMED + if(iFileName->Match(_L("\\Malformed_functionWrite.txt"))!=KErrNotFound) + { + RDebug::Printf("CTestNotificationFileCB::WriteL - malformed_functionWrite.txt"); + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(Mount(),EFsFileWrite); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("PhantomFileMalformed_functionWrite.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + //We won't set filesize - which should result in an error. + // SetFilesize((TInt64)4); + // + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = Mount().IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + + } + +void CTestNotificationFileCB::SetEntryL(const TTime& /*aTime*/,TUint /*aSetAttMask*/,TUint /*aClearAttMask*/) + { + if(iFileName->Match(_L("\\Wellformed_functionAttributes.txt"))!= KErrNotFound) //PhantomFile_functionWrite.txt + { + CFsNotificationInfo* notificationInfo = CFsNotificationInfo::Allocate(Mount(),EFsFileSetAtt); + TBuf phantomName; + phantomName.Append(_L("\\")); + phantomName.Append(_L("PhantomFile_functionAttributes.txt")); + TInt r = notificationInfo->SetSourceName(phantomName); + User::LeaveIfError(r); + r = notificationInfo->SetAttributes(KEntryAttSystem,KEntryAttHidden); + User::LeaveIfError(r); + r = notificationInfo->SetUid(TUid::Uid(KErrUnknown)); + User::LeaveIfError(r); + r = Mount().IssueNotification(notificationInfo); + User::LeaveIfError(r); + CFsNotificationInfo::Free(notificationInfo); + return; + } + } + +CTestFileSystem::CTestFileSystem() +// +// Constructor +// + { + __DECLARE_NAME(_S("CNotifyTestFileSystem")); + } + +CTestFileSystem::~CTestFileSystem() +// +// Destructor +// + {} + +TInt CTestFileSystem::Install() +// +// Install the file system +// + { + iVersion=TVersion(KMajorVersionNumber,KMinorVersionNumber,KF32BuildVersionNumber); + TPtrC name=_L("CNotifyTestFileSystem"); + return(SetName(&name)); + } + +CMountCB* CTestFileSystem::NewMountL() const +// +// Create a new mount control block +// + { + return (new(ELeave) CTestNotificationMountCB); + } + +CFileCB* CTestFileSystem::NewFileL() const +// +// Create a new file +// + { + return (new(ELeave) CTestNotificationFileCB); + } + +CDirCB* CTestFileSystem::NewDirL() const +// +// create a new directory lister +// + { + return (new(ELeave) CTestDirCB); + } + +CFormatCB* CTestFileSystem::NewFormatL() const +// +// Create a new media formatter +// + { + return (new(ELeave) CTestFormatCB); + } + +TInt CTestFileSystem::DefaultPath(TDes& aPath) const +// +// Return the intial default path +// + { + aPath=_L("C:\\"); + return (KErrNone); + } + + +/** +Reports whether the specified interface is supported - if it is, +the supplied interface object is modified to it + +@param aInterfaceId The interface of interest +@param aInterface The interface object +@return KErrNone if the interface is supported, otherwise KErrNotFound + +@see CFileSystem::GetInterface() +*/ +TInt CTestFileSystem::GetInterface(TInt aInterfaceId, TAny*& aInterface,TAny* aInput) + { + switch(aInterfaceId) + { + case CFileSystem::EProxyDriveSupport: // The FAT Filesystem supports proxy drives + return KErrNone; + + default: + return(CFileSystem::GetInterface(aInterfaceId, aInterface, aInput)); + } + } + +CFileSystem* CTestFileSystem::NewL() +// +// +// + { + CFileSystem* testFSys = new(ELeave) CTestFileSystem; + return testFSys; + } + + +CTestNotificationMountCB::CTestNotificationMountCB(){}; +CTestNotificationMountCB::~CTestNotificationMountCB(){}; +CTestDirCB::CTestDirCB(){}; +CTestDirCB::~CTestDirCB(){}; +CTestNotificationFileCB::CTestNotificationFileCB(){}; +CTestNotificationFileCB::~CTestNotificationFileCB(){}; +CTestFormatCB::CTestFormatCB(){}; +CTestFormatCB::~CTestFormatCB(){}; + + +extern "C" { + +EXPORT_C CFileSystem* CreateFileSystem() +// +// Create a new file system +// + { + return(CTestFileSystem::NewL()); + } +} +