diff -r f5050f1da672 -r 04becd199f91 javamanager/javaregistry/legacy/installedappsregistry/src/installedappsregistryentry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javaregistry/legacy/installedappsregistry/src/installedappsregistryentry.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,676 @@ +/* +* Copyright (c) 1997-2002 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: Implementation of CInstalledAppsRegistryEntry class. +* +*/ + + +#include + +#include "installedappsregistryentry.h" +#include "javacommonutils.h" +#include "javaregistryapplicationentry.h" +#include "javaregistrypackageentry.h" +#include "javastoragenames.h" +#include "javasymbianoslayer.h" +#include "logger.h" + +using namespace java::storage; +using namespace java::util; +using namespace std; + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::NewLC +// --------------------------------------------------------------------------- +// +EXPORT_C CInstalledAppsRegistryEntry* CInstalledAppsRegistryEntry::NewLC() +{ + CInstalledAppsRegistryEntry* self = + new(ELeave) CInstalledAppsRegistryEntry; + CleanupReleasePushL(*self); + self->ConstructL(); + return self; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::NewLC +// --------------------------------------------------------------------------- +// +EXPORT_C CInstalledAppsRegistryEntry* CInstalledAppsRegistryEntry::NewLC +(const CInstalledAppsRegistryEntry& aOther) +{ + CInstalledAppsRegistryEntry* self = + new(ELeave) CInstalledAppsRegistryEntry(aOther); + CleanupReleasePushL(*self); + self->ConstructL(aOther); + return self; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::NewLC +// --------------------------------------------------------------------------- +// +EXPORT_C CInstalledAppsRegistryEntry* CInstalledAppsRegistryEntry::NewLC +(RReadStream& aStream) +{ + CInstalledAppsRegistryEntry* self = + new(ELeave) CInstalledAppsRegistryEntry; + CleanupReleasePushL(*self); + self->ConstructL(aStream); + return self; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::NewL +// --------------------------------------------------------------------------- +// +EXPORT_C CInstalledAppsRegistryEntry* CInstalledAppsRegistryEntry::NewL( + Java::CJavaRegistryEntry* aRegistryEntry) +{ + CInstalledAppsRegistryEntry* self = + new(ELeave) CInstalledAppsRegistryEntry; + self->ConstructL(aRegistryEntry); + return self; +} + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CInstalledAppsRegistryEntry::~CInstalledAppsRegistryEntry() +{ + // Oops, someone called delete directly and not release if this fails + ASSERT(!iRefCount); + + if (iRegistryEntry) + { + delete iRegistryEntry; + iRegistryEntry = NULL; + } +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::CInstalledAppsRegistryEntry +// --------------------------------------------------------------------------- +// +CInstalledAppsRegistryEntry::CInstalledAppsRegistryEntry() + : iIsInRom(EFalse) +{ + AddRef(); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::CInstalledAppsRegistryEntry +// --------------------------------------------------------------------------- +// +CInstalledAppsRegistryEntry::CInstalledAppsRegistryEntry +(const CInstalledAppsRegistryEntry& /*aOther*/) +{ + // WARNING - make sure all member variables have been copied - some + // of them (eg RArrays, heap objects) will need to be copied in the + // ConstructL part + AddRef(); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddRef +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddRef() +{ + ++iRefCount; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::Release +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::Release() +{ + // if the ref count goes to zero, then we delete + if (!--iRefCount) + { + delete this; + } +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::ConstructL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::ConstructL() +{ +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::ConstructL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::ConstructL( + Java::CJavaRegistryEntry* aRegistryEntry) +{ + iRegistryEntry = aRegistryEntry; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::ConstructL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::ConstructL +(const CInstalledAppsRegistryEntry& /*aOther*/) +{ +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::ConstructL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::ConstructL(RReadStream& /*aStream*/, + TBool /*aStoreFileList*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::InstalledFilesL +// --------------------------------------------------------------------------- +// +CInstalledAppsRegistryFiles& +CInstalledAppsRegistryEntry::InstalledFilesL() const +{ + User::Leave(KErrNotSupported); + return *iInstalledFiles; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::WriteL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::WriteL +(RWriteStream& /*aStream*/) const +{ + User::Leave(KErrNotSupported); +} + +///////////////////////////////////////////////////////////////////////////// +// Attribute Setters +///////////////////////////////////////////////////////////////////////////// +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::SetUid +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::SetUid(const TUid& /*aUid*/) +{ +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::SetVersion +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::SetVersion +(const TAppVersion& /*aVersion*/) +{ +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::SetType +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::SetType(TInstallType /*aType*/) +{ +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::SetDrive +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::SetDrive(TChar /*aDrive*/) +{ +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddFileL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddFileL(const TDesC& /*aFileName*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddDirectoryL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddDirectoryL +(const TDesC& /*aDirName*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddApparcIdentifierL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddApparcIdentifierL +(const TDesC& /*aApparcIdentifier*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddCertificateChainL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddCertificateChainL +(const TDesC8& /*aCertChain*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddPropertyL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddPropertyL(TUid /*aPropertyId*/, + const TDesC8& /*aValue*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddLanguageL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddLanguageL(TLanguage /*aLang*/, + const TDesC& /*aPackage*/, + const TDesC& /*aVendor*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddDependencyL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddDependencyL(TUid /*aUid*/) +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::AddEmbeddedPackageL +// --------------------------------------------------------------------------- +// +EXPORT_C void CInstalledAppsRegistryEntry::AddEmbeddedPackageL +(TUid /*aUid*/) +{ + User::Leave(KErrNotSupported); +} + +///////////////////////////////////////////////////////////////////////////// +// Attribute Getters +///////////////////////////////////////////////////////////////////////////// +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::UidL +// --------------------------------------------------------------------------- +// +TUid CInstalledAppsRegistryEntry::UidL() const +{ + JELOG2(EJavaStorage); + return iRegistryEntry->Uid(); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::PackageNameL +// --------------------------------------------------------------------------- +// +const TDesC& CInstalledAppsRegistryEntry::PackageNameL +(TLanguage /*aLanguage*/) const +{ + User::Leave(KErrNotSupported); + return KNullDesC; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::VendorNameL +// --------------------------------------------------------------------------- +// +const TDesC& CInstalledAppsRegistryEntry::VendorNameL +(TLanguage /*aLanguage*/) const +{ + User::Leave(KErrNotSupported); + return KNullDesC; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::VersionL +// --------------------------------------------------------------------------- +// +TAppVersion CInstalledAppsRegistryEntry::VersionL() const +{ + JELOG2(EJavaStorage); + + TAppVersion appVersion(0, 0, 0); + + if (Java::EMidp2Midlet == iRegistryEntry->Type()) + { + Java::CJavaRegistryPackageEntry* packageEntry = + ((Java::CJavaRegistryApplicationEntry*) + iRegistryEntry)->PackageEntryL(); + + if (packageEntry) + { + appVersion = packageEntry->Version(); + delete packageEntry; + packageEntry = NULL; + } + } + else // Application suite + { + appVersion = ((Java::CJavaRegistryPackageEntry*) + iRegistryEntry)->Version(); + } + + return appVersion; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::DriveL +// --------------------------------------------------------------------------- +// +TChar CInstalledAppsRegistryEntry::DriveL() const +{ + JELOG2(EJavaStorage); + TChar driveChar; + User::LeaveIfError(RFs::DriveToChar(iRegistryEntry->Drive(), driveChar)); + return driveChar; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::TypeL +// --------------------------------------------------------------------------- +// +TInstallType CInstalledAppsRegistryEntry::TypeL() const +{ + return EMIDLETSuite; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::LanguagesL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::LanguagesL +(RArray& /*aLangArray*/) const +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::LanguageSupportedL +// --------------------------------------------------------------------------- +// +TBool CInstalledAppsRegistryEntry::LanguageSupportedL +(TLanguage /*aLanguage*/) const +{ + User::Leave(KErrNotSupported); + return EFalse; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::ListFilesL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::ListFilesL +(RPointerArray& /*aFileArray*/) const +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::FindFileWithExtL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::FindFileWithExtL +(const TDesC& /*aExtension*/, + TFileName& /*aFileName*/) const +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::UsesFileL +// --------------------------------------------------------------------------- +// +TBool CInstalledAppsRegistryEntry::UsesFileL +(const TDesC& /*aFileName*/) const +{ + User::Leave(KErrNotSupported); + return ETrue; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::IsInRomL +// --------------------------------------------------------------------------- +// +TBool CInstalledAppsRegistryEntry::IsInRomL() const +{ + /* If JAR file is in ROM backup and restore cannot restore application + * JAR file to ROM thus causing restore to fail. Although ROOT_PATH + * point to RAM drive application is marked as ROM application. + */ + TUid packageUid = TUid::Null(); + + if (Java::EMidp2Midlet == iRegistryEntry->Type()) + { + Java::CJavaRegistryPackageEntry* packageEntry = + ((Java::CJavaRegistryApplicationEntry*) + iRegistryEntry)->PackageEntryL(); + + if (packageEntry) + { + packageUid = packageEntry->Uid(); + delete packageEntry; + packageEntry = NULL; + } + } + else + { + packageUid = iRegistryEntry->Uid(); + } + + java::util::Uid uid; + JavaStorageApplicationEntry_t suiteEntry; + + try + { + auto_ptr js(JavaStorage::createInstance()); + js->open(); + js->read(APPLICATION_PACKAGE_TABLE, TUidToUid(packageUid, uid), suiteEntry); + js->close(); + js.reset(0); + } + catch (JavaStorageException& jse) + { + ELOG1(EJavaStorage, "Read failed: %s ", + jse.toString().c_str()); + } + + wstring value = L""; + + JavaStorageEntry attr; + attr.setEntry(JAR_PATH, L""); + + JavaStorageApplicationEntry_t::iterator finder = suiteEntry.find(attr); + + if (finder != suiteEntry.end()) + { + value = (*finder).entryValue(); + } + + if (value.size() == 0) + { + User::Leave(KErrGeneral); + } + + suiteEntry.clear(); + + wstring::size_type start = 0; + wstring::size_type end = 1; + + char* driveLetter = JavaCommonUtils::wstringToUtf8( + value.substr(start, end)); + + TBool isInRom = EFalse; + + if (driveLetter[0] == 'z' || driveLetter[0] == 'Z') + { + isInRom = ETrue; + } + delete[] driveLetter; + + return isInRom; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::ListDirectoriesL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::ListDirectoriesL +(RPointerArray& /*aDirArray*/) const +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::NumberOfCertificateChainsL +// --------------------------------------------------------------------------- +// +TInt CInstalledAppsRegistryEntry::NumberOfCertificateChainsL() const +{ + return iRegistryEntry->NumberOfCertificateChains(); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::CertificateChainL +// --------------------------------------------------------------------------- +// +const TDesC8& CInstalledAppsRegistryEntry::CertificateChainL +(TInt aChain) const +{ + return iRegistryEntry->CertificateChain(aChain); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::SizeL +// --------------------------------------------------------------------------- +// +TInt CInstalledAppsRegistryEntry::SizeL() const +{ + TUid packageUid = TUid::Null(); + + if (Java::EMidp2Midlet == iRegistryEntry->Type()) + { + Java::CJavaRegistryPackageEntry* packageEntry = + ((Java::CJavaRegistryApplicationEntry*) + iRegistryEntry)->PackageEntryL(); + + if (packageEntry) + { + packageUid = packageEntry->Uid(); + delete packageEntry; + packageEntry = NULL; + } + } + else + { + packageUid = iRegistryEntry->Uid(); + } + + std::auto_ptr registry(Java::CJavaRegistry::NewL()); + + std::auto_ptr entry( + (Java::CJavaRegistryPackageEntry*) registry->RegistryEntryL(packageUid)); + + TInt diskSpace = -1; + if (entry.get()) + { + diskSpace = entry->UsedUserDiskSpace(); + } + return diskSpace; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::GetPropertyL +// --------------------------------------------------------------------------- +// +HBufC8* CInstalledAppsRegistryEntry::GetPropertyL(TUid /*aPropertyId*/) const +{ + User::Leave(KErrNotSupported); + return NULL; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::ListApparcIdentifiersL +// --------------------------------------------------------------------------- +// +void CInstalledAppsRegistryEntry::ListApparcIdentifiersL +(RPointerArray& /*aApparcIdentifiersArray*/) const +{ + User::Leave(KErrNotSupported); +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::FindLanguage +// --------------------------------------------------------------------------- +// +const CEntryLangDetails* CInstalledAppsRegistryEntry::FindLanguage +(TLanguage /*aLanguage*/) const +{ + return NULL; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::FindLanguage +// --------------------------------------------------------------------------- +// +const CEntryLangDetails& CInstalledAppsRegistryEntry::FindLanguageL +(TLanguage /*aLanguage*/) const +{ + CEntryLangDetails* temp = NULL; + User::Leave(KErrNotSupported); + return *temp; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::GetProperty +// --------------------------------------------------------------------------- +// +CPropertyValuePair* CInstalledAppsRegistryEntry::GetProperty +(TUid /*aPropertyId*/) const +{ + return NULL; +} + +// --------------------------------------------------------------------------- +// CInstalledAppsRegistryEntry::SizeForStreamingL +// --------------------------------------------------------------------------- +// +TInt CInstalledAppsRegistryEntry::SizeForStreamingL() const +{ + // This is not part of MInstalledAppsRegistryEntry. + User::Leave(KErrNotSupported); + return 0; +}