diff -r f5050f1da672 -r 04becd199f91 javacommons/security/legacysupport/midp2userpreferences/src/MIDP2UserPreferences.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/legacysupport/midp2userpreferences/src/MIDP2UserPreferences.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,345 @@ +/* +* 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 "javaosheaders.h" +#include "javasymbianoslayer.h" +#include "javacommonutils.h" +#include "s60commonutils.h" +#include "UserPreferences.h" +#include "UserPreferencesIterator.h" +#include "MIDletSuiteUserPreferences.h" +#include "MIDletSuiteCustomAttributes.h" +#include +#include +#include "SecurityPreferences.h" +#include "javauid.h" + +using namespace MIDP; +using namespace MIDP::DBv2; +using namespace java::security::legacysupport; +using namespace std; +using namespace java::util; + +EXPORT_C MUserPreferences* GetUserPreferencesL(TUint32 /*aFlags*/, + const MSecurityPolicyV2& /*aSecurityPolicy*/) +{ + return CUserPreferences::NewL(); +} + +CUserPreferences* CUserPreferences::NewL() +{ + CUserPreferences* self = new(ELeave) CUserPreferences(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; +} + +CUserPreferences::CUserPreferences() +{ +} + +void CUserPreferences::ConstructL() +{ +} + +CUserPreferences::~CUserPreferences() +{ +} + +MMIDletSuiteUserPreferencesIterator* CUserPreferences::IteratorL() +{ + return CMIDletSuiteUserPreferencesIterator::NewL(); +} + +MMIDletSuiteCustomAttributes* CUserPreferences::CustomAttributesL(TUint32 aSuiteId) +{ + return CMIDletSuiteCustomAttributes::NewL(aSuiteId); +} + +MSecurityPreferences* CUserPreferences::SecurityPreferencesL(const MMIDletSuiteInfo& /*aMIDletSuiteInfo*/) +{ + User::Leave(KErrNotSupported); + return NULL; // this is here to make the compiler happy (it won't throw a warning) +} + +CMIDletSuiteUserPreferencesIterator* CMIDletSuiteUserPreferencesIterator::NewL() +{ + CMIDletSuiteUserPreferencesIterator* self = new(ELeave) CMIDletSuiteUserPreferencesIterator(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; +} + +void CMIDletSuiteUserPreferencesIterator::ConstructL() +{ + StorageUtils* storage = java::security::legacysupport::StorageUtils::NewL(); + CleanupStack::PushL(storage); + storage->readMidletSuitesInfos(iMidletSuites); + CleanupStack::PopAndDestroy(storage); +} + +CMIDletSuiteUserPreferencesIterator::CMIDletSuiteUserPreferencesIterator() + : iCurrentMidletSuite(0) +{ +} + +CMIDletSuiteUserPreferencesIterator::~CMIDletSuiteUserPreferencesIterator() +{ +} + +TBool CMIDletSuiteUserPreferencesIterator::HasNext() +{ + return (iCurrentMidletSuite < iMidletSuites.size()); +} + +MMIDletSuiteUserPreferences* CMIDletSuiteUserPreferencesIterator::NextL() +{ + if (iCurrentMidletSuite >= iMidletSuites.size()) + { + User::Leave(KErrNotFound); + } + CMIDletSuiteUserPreferences* pref = CMIDletSuiteUserPreferences::NewL( + *(iMidletSuites[iCurrentMidletSuite])); + iCurrentMidletSuite++; + return pref; +} + +CMIDletSuiteUserPreferences* CMIDletSuiteUserPreferences::NewL(MidletSuiteInfo& aMidletSuiteInfo) +{ + CMIDletSuiteUserPreferences* self = new(ELeave) CMIDletSuiteUserPreferences(aMidletSuiteInfo); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; +} + +void CMIDletSuiteUserPreferences::ConstructL() +{ +} + +CMIDletSuiteUserPreferences::CMIDletSuiteUserPreferences(MidletSuiteInfo& aMidletSuiteInfo) + :iMidletSuiteInfo(aMidletSuiteInfo) +{ +} + +CMIDletSuiteUserPreferences::~CMIDletSuiteUserPreferences() +{ +} + +TUint32 CMIDletSuiteUserPreferences::Id() const +{ + Uid tmp(iMidletSuiteInfo.iUid); + TUid uid; + TInt err = uidToTUid(tmp, uid); + if (err == KErrNone) + { + return uid.iUid; + } + else + { + return 0; + } +} + +TInt CMIDletSuiteUserPreferences::PropertyL(const TDesC& aName, TPtrC& aValue) const +{ + HBufC* desc = NULL; + if (aName.Compare(KMidletSuiteName) == 0) + { + desc = S60CommonUtils::wstringToDes(iMidletSuiteInfo.iName.c_str()); + } + else if (aName.Compare(KMidletSuiteVendor) == 0) + { + desc = S60CommonUtils::wstringToDes(iMidletSuiteInfo.iVendor.c_str()); + } + else if (aName.Compare(KMidletSuiteVersion) == 0) + { + desc = S60CommonUtils::wstringToDes(iMidletSuiteInfo.iVersion.c_str()); + } + if (desc != NULL) + { + aValue.Set(desc->Des()); + return KErrNone; + } + return KErrNotFound; +} + +MSecurityPreferences& CMIDletSuiteUserPreferences::SecurityPreferencesL() +{ + User::Leave(KErrNotSupported); + return *(reinterpret_cast(new int())); // this is here to make the compiler happy (it won't throw a warning) +} + + +CMIDletSuiteCustomAttributes* CMIDletSuiteCustomAttributes::NewL(TUint32 aSuiteId) +{ + CMIDletSuiteCustomAttributes* self = new(ELeave) CMIDletSuiteCustomAttributes(aSuiteId); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; +} + +void CMIDletSuiteCustomAttributes::ConstructL() +{ +} + +CMIDletSuiteCustomAttributes::~CMIDletSuiteCustomAttributes() +{ +} + + +HBufC* CMIDletSuiteCustomAttributes::GetL(const TDesC& aName, TUint32& aFlag) +{ + if (aName.Compare(KOnScreenKeyboardAttribute) != 0) + { + User::Leave(KErrNotSupported); + } + TUid suiteId = TUid::Uid(iSuiteId); + Uid suiteUid; + TUidToUid(suiteId, suiteUid); + StorageUtils* storage = java::security::legacysupport::StorageUtils::NewL(); + CleanupStack::PushL(storage); + wstring value = L""; + storage->readOnScreenKeyboardAttributeL(suiteUid.toString(), value); + CleanupStack::PopAndDestroy(storage); + aFlag = KFlagUserModifiable; + return mapOnScreenKeyboardToLegacyValueL(value); +} + +void CMIDletSuiteCustomAttributes::AddL(const TDesC& /*aName*/, + const TDesC& /*aValue*/, + const TUint32 /*aFlag*/) +{ + User::Leave(KErrNotSupported); +} + +void CMIDletSuiteCustomAttributes::UpdateL(const TDesC& aName, + const TDesC& aValue, + const TUint32 /*aFlag*/) +{ + if (aName.Compare(KOnScreenKeyboardAttribute) != 0) + { + User::Leave(KErrNotSupported); + } + wstring value = L""; + mapOnScreenKeyboardToOmjValue(aValue, value); + if (value.size() == 0) + { + return; + } + TUid suiteId = TUid::Uid(iSuiteId); + Uid suiteUid; + TUidToUid(suiteId, suiteUid); + StorageUtils* storage = java::security::legacysupport::StorageUtils::NewL(); + CleanupStack::PushL(storage); + storage->writeOnScreenKeyboardAttribute(suiteUid.toString(), value); + CleanupStack::PopAndDestroy(storage); +} + +void CMIDletSuiteCustomAttributes::RemoveAllL() +{ + User::Leave(KErrNotSupported); +} + +CMIDletSuiteCustomAttributes::CMIDletSuiteCustomAttributes(TUint32 aSuiteId) + : iSuiteId(aSuiteId) +{ +} + +HBufC* CMIDletSuiteCustomAttributes::mapOnScreenKeyboardToLegacyValueL(const std::wstring& aOmjValue) +{ + try + { + switch (java::util::JavaCommonUtils::wstringToInt(aOmjValue)) + { + case 0: + return KValueNo().Alloc(); + case 1: + return KValueGameactions().Alloc(); + case 2: + return KValueNavigationkeys().Alloc(); + } + } + catch (ExceptionBase& e) + { + } + User::Leave(KErrNotFound); + return NULL; // this is here to make the compiler happy (it won't throw a warning) +} + +void CMIDletSuiteCustomAttributes::mapOnScreenKeyboardToOmjValue(const TDesC& aLegacyValue, std::wstring& aOmjValue) +{ + if (aLegacyValue.Compare(KValueNo) == 0) + { + aOmjValue += L"0"; + } + else if (aLegacyValue.Compare(KValueGameactions) == 0) + { + aOmjValue += L"1"; + } + else if (aLegacyValue.Compare(KValueNavigationkeys) == 0) + { + aOmjValue += L"2"; + } +} + +CSecurityPreferences* CSecurityPreferences::NewL() +{ + CSecurityPreferences* sp = new(ELeave) CSecurityPreferences(); + CleanupStack::PushL(sp); + sp->ConstructL(); + CleanupStack::Pop(sp); + return sp; +} + + +void CSecurityPreferences::ConstructL() +{ +} + +CSecurityPreferences::CSecurityPreferences() +{ +} + +CSecurityPreferences::~CSecurityPreferences() +{ +} + +MPermission::TMode CSecurityPreferences::InteractionModeL(const MFunctionGroupBinding& /*aBinding*/) +{ + User::Leave(KErrNotSupported); + return MPermission::EDenied; // this is here to make the compiler happy (it won't throw a warning) +} + +void CSecurityPreferences::InteractionModeL(const MFunctionGroupBinding& /*aBinding*/, + MPermission::TMode /*aMode*/) +{ + User::Leave(KErrNotSupported); +} + +TBool CSecurityPreferences::IsFromDefaults(void) const +{ + return EFalse; // this is here to make the compiler happy (it won't throw a warning) +} + +void CSecurityPreferences::SetInteractionMode(const MFunctionGroupBinding& /*aBinding*/, + MPermission::TMode /*aMode*/) +{ +} +