diff -r 000000000000 -r dd21522fd290 webengine/widgetengine/src/WrtPlatform.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/widgetengine/src/WrtPlatform.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,291 @@ +/* +* Copyright (c) 2004 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: +* +*/ + + + +// INCLUDE FILES + +#include "WrtPlatform.h" +#include +#include +#include +#include +#include + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS +const TUid KBrowserAppUid = { 0x10008d39 }; +_LIT(KNotAvailable, "N/A"); +_LIT(KPlatformId, "S60"); +_LIT(KDefManufacturer, "N/A"); +_LIT(KDefModel, "N/A"); +_LIT(KDefSerialNumber, "N/A"); + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +using namespace KJS; +const ClassInfo JSWrtPlatform::info = { "JSWrtPlatform", 0, &WrtPlatformTable, 0 }; + +// ============================= LOCAL FUNCTIONS =============================== +/* +@begin WrtPlatformTable 4 + id JSWrtPlatform::id DontDelete|ReadOnly + romVersion JSWrtPlatform::romVersion DontDelete|ReadOnly + packageVersion JSWrtPlatform::packageVersion DontDelete|ReadOnly + manufacturer JSWrtPlatform::manufacturer DontDelete|ReadOnly + model JSWrtPlatform::model DontDelete|ReadOnly +@end +*/ + +// ============================ MEMBER FUNCTIONS =============================== + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::JSWrtPlatform +// C++ constructor +// +// +// ---------------------------------------------------------------------------- +JSWrtPlatform::JSWrtPlatform( ExecState* exec ) + : JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()), + pltPriv(new WrtPlatformPrivate()) + { + TRAP_IGNORE( pltPriv->m_sisVersion = SISVersionL() ); + TRAP_IGNORE( GetPhoneInfoL() ); + } + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::~JSWrtPlatform +// Destructor +// +// +// ---------------------------------------------------------------------------- +JSWrtPlatform::~JSWrtPlatform() + { + delete pltPriv; + } + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::type +// +// +// +// ---------------------------------------------------------------------------- +JSType JSWrtPlatform::type() const +{ + return ObjectType; +} + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::toString +// Returns string representation of the object +// +// +// ---------------------------------------------------------------------------- +UString JSWrtPlatform::toString(ExecState *exec) const + { + return "[object JSWrtPlatform]"; + } + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::getValueProperty +// +// +// ---------------------------------------------------------------------------- +JSValue* JSWrtPlatform::getValueProperty(ExecState *exec, int token) const + { + switch( token ) + { + case id: { + TPtrC platformId; + platformId.Set( KPlatformId ); + return jsString( UString((UChar*) platformId.Ptr(), platformId.Length()) ); + } + case romVersion: { + TPtrC versionName; + TBuf version; + if ( SysUtil::GetSWVersion( version ) == KErrNone ) + { + versionName.Set( version ); + } + else + { + versionName.Set( KNotAvailable ); + } + + return jsString( UString((UChar*) versionName.Ptr(), versionName.Length()) ); + } + case packageVersion: { + return jsString( pltPriv->m_sisVersion ); + } + case manufacturer: { + return jsString( pltPriv->m_manufacturer ); + } + case model: { + return jsString( pltPriv->m_model ); + } +/* case revision: { + return jsString( pltPriv->m_revision ); + } + case serialNumber: { + return jsString( pltPriv->m_serialNumber ); + } +*/ + default: + return throwError(exec, GeneralError); + } + } + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::getOwnPropertySlot +// +// +// +// ---------------------------------------------------------------------------- +bool JSWrtPlatform::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) +{ + const HashEntry* entry = Lookup::findEntry(&WrtPlatformTable, propertyName); + if (entry) + { + slot.setStaticEntry(this, entry, staticValueGetter); + return true; + } + + return JSObject::getOwnPropertySlot(exec, propertyName, slot); +} + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::SISVersionL +// +// +// ---------------------------------------------------------------------------- +UString JSWrtPlatform::SISVersionL() +{ + Swi::RSisRegistrySession regSession; + CleanupClosePushL(regSession); + User::LeaveIfError( regSession.Connect() ); + + Swi::RSisRegistryEntry entry; + CleanupClosePushL(entry); + + TPtrC versionName; + TInt err = entry.Open( regSession, KBrowserAppUid ); + if( err == KErrNone ) + { + TVersion version; + version = entry.VersionL(); + versionName.Set( version.Name() ); + } + else + { + versionName.Set( KNotAvailable ); + } + + CleanupStack::PopAndDestroy( &entry ); + CleanupStack::PopAndDestroy( ®Session ); + + return UString( (UChar*) versionName.Ptr(), versionName.Length() ); +} + +// ---------------------------------------------------------------------------- +// JSWrtPlatform::GetPhoneInfoL +// +// +// ---------------------------------------------------------------------------- +void JSWrtPlatform::GetPhoneInfoL() +{ + TPtrC manufacturer; + manufacturer.Set( KDefManufacturer ); + pltPriv->m_manufacturer = UString( (UChar*) manufacturer.Ptr(), manufacturer.Length() ); + + TPtrC model; + model.Set( KDefModel ); + pltPriv->m_model = UString( (UChar*) model.Ptr(), model.Length() ); + +// TPtrC revision; +// revision.Set( KDefRevision ); +// pltPriv->m_revision = UString( (UChar*) revision.Ptr(), revision.Length() ); + +// TPtrC serialNumber; +// serialNumber.Set( KDefSerialNumber ); +// pltPriv->m_serialNumber = UString( (UChar*) serialNumber.Ptr(), serialNumber.Length() ); + + // Read IMEI on HW, use dummy under WINS +#if !defined( __WINS__ ) + RTelServer server; + User::LeaveIfError(server.Connect()); + CleanupClosePushL(server); + TInt numPhones; + User::LeaveIfError(server.EnumeratePhones(numPhones)); + if( numPhones > 0 ) + { + RTelServer::TPhoneInfo phoneInfo; + User::LeaveIfError(server.GetPhoneInfo(0, phoneInfo)); // Query first phone + RMobilePhone phone; + User::LeaveIfError(phone.Open(server, phoneInfo.iName)); + CleanupClosePushL(phone); + User::LeaveIfError(phone.Initialise()); + TUint32 identityCaps; + phone.GetIdentityCaps( identityCaps ); + RMobilePhone::TMobilePhoneIdentityV1 id; + TRequestStatus status; + phone.GetPhoneId( status, id ); + User::WaitForRequest( status ); + User::LeaveIfError( status.Int() ); + if (identityCaps & RMobilePhone::KCapsGetManufacturer) + { + manufacturer.Set( id.iManufacturer ); + pltPriv->m_manufacturer = UString( (UChar*) manufacturer.Ptr(), manufacturer.Length() ); + } + if (identityCaps & RMobilePhone::KCapsGetModel) + { + model.Set( id.iModel ); + pltPriv->m_model = UString( (UChar*) model.Ptr(), model.Length() ); + } +/* if (identityCaps & RMobilePhone::KCapsGetRevision) + { + revision.Set( id.iRevision ); + pltPriv->m_revision = UString( (UChar*) revision.Ptr(), revision.Length() ); + } + if (identityCaps & RMobilePhone::KCapsGetSerialNumber) + { + serialNumber.Set( id.iSerialNumber ); + pltPriv->m_serialNumber = UString( (UChar*) serialNumber.Ptr(), serialNumber.Length() ); + } +*/ + CleanupStack::PopAndDestroy(); // phone + } + CleanupStack::PopAndDestroy(); // server +#else + +#endif +} + +//END OF FILE + + + +