omadm/omadmextensions/adapters/browseradapter/src/nsmlbrowseradapter.cpp
changeset 0 3ce708148e4d
child 14 4699373c9af8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadm/omadmextensions/adapters/browseradapter/src/nsmlbrowseradapter.cpp	Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,650 @@
+/*
+* Copyright (c) 2007 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:    DM browser Adapter
+*
+*/
+
+
+
+
+
+//INCLUDE FILES
+#include <implementationproxy.h> // For TImplementationProxy definition
+#include "nsmldmimpluids.h"
+
+
+#include "nsmldebug.h"
+#include "nsmlconstants.h"
+#include "nsmldmconst.h"
+#include "nsmlbrowseradapter.h"
+#include "nsmldmiapmatcher.h"
+
+#include <centralrepository.h>
+#include <BrowserUiSDKCRKeys.h>
+#include <commdb.h>
+#include <cdbcols.h>             // CommsDB columname defs
+#include <ApUtils.h>
+
+#ifndef __WINS__
+                                    // This lowers the unnecessary compiler warning (armv5) to remark.
+                                    // "Warning: #174-D: expression has no effect..." is caused by 
+                                    // DBG_ARGS8 macro in no-debug builds.
+#pragma diag_remark 174
+#endif
+const TInt KUserDefined = 0;
+
+
+const TUint KNSmlDMBrowserAdapterImplUid = 0x1028335F;
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewL( )
+// -----------------------------------------------------------------------------
+CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewL(MSmlDmCallback* aDmCallback )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::NewL(): begin");
+    CNSmlDmBrowserAdapter* self = NewLC( aDmCallback );
+    CleanupStack::Pop();
+    _DBG_FILE("CNSmlDmBrowserAdapter::NewL(): end");
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewLC( )
+// -----------------------------------------------------------------------------
+CNSmlDmBrowserAdapter* CNSmlDmBrowserAdapter::NewLC(MSmlDmCallback* aDmCallback )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::NewLC(): begin");
+    CNSmlDmBrowserAdapter* self = new (ELeave) CNSmlDmBrowserAdapter(aDmCallback);
+    CleanupStack::PushL(self);
+    self->iDmCallback = aDmCallback;
+    _DBG_FILE("CNSmlDmBrowserAdapter::NewLC(): end");
+    return self;
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter()
+// -----------------------------------------------------------------------------
+CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter()
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter(): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::~CNSmlDmBrowserAdapter(): end");
+    }
+    
+// -----------------------------------------------------------------------------
+// CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter()
+// -----------------------------------------------------------------------------
+
+CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter(TAny* aEcomArguments):CSmlDmAdapter(aEcomArguments)
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter(aEcomArguments): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::CNSmlDmBrowserAdapter(aEcomArguments): end"); 
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDmBrowserAdapter::SetLeafPropertiesL()
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::SetLeafPropertiesL( MSmlDmDDFObject& aObject, 
+                                                const TSmlDmAccessTypes& aAccessTypes, 
+                                                const TDesC8& aDescription ) const
+    {
+    aObject.SetAccessTypesL( aAccessTypes );
+    aObject.SetScopeL( MSmlDmDDFObject::EPermanent );
+    aObject.SetDFFormatL( MSmlDmDDFObject::EChr );
+    aObject.AddDFTypeMimeTypeL( KNSmlDMBrowserAdapterTextPlain );
+    aObject.SetDescriptionL( aDescription );
+    }
+
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::DDFVersionL()
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::DDFVersionL(CBufBase& aDDFVersion)
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::DDFVersionL(TDes& aDDFVersion): begin");
+    aDDFVersion.InsertL(0,KNSmlDMBrowserAdapterDDFVersion);
+    _DBG_FILE("CNSmlDmBrowserAdapter::DDFVersionL(TDes& aDDFVersion): end");
+    }
+
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::DDFStructureL()
+//
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::DDFStructureL(): begin");
+    
+    TSmlDmAccessTypes accessTypes;
+    accessTypes.SetGet();
+    
+    TSmlDmAccessTypes accessSetTypes;
+    accessSetTypes.SetGet();
+    accessSetTypes.SetAdd();
+    accessSetTypes.SetReplace();
+    
+    MSmlDmDDFObject& dmBrowserAdap = aDDF.AddChildObjectL( KNSmlDMBrowserAdapterNodeName );
+    dmBrowserAdap.SetAccessTypesL( accessTypes ); 
+    dmBrowserAdap.SetScopeL( MSmlDmDDFObject::EPermanent );
+    dmBrowserAdap.SetDescriptionL( KNSmlDMBrowserAdapterDescription );
+  
+    MSmlDmDDFObject& toNapID = dmBrowserAdap.AddChildObjectL(KNSmlDMBrowserAdapterAPNode);
+    toNapID.SetAccessTypesL( accessSetTypes );
+    toNapID.SetScopeL( MSmlDmDDFObject::EDynamic );
+    toNapID.SetDFFormatL( MSmlDmDDFObject::EChr );
+    toNapID.AddDFTypeMimeTypeL( KNSmlDMBrowserAdapterTextPlain );
+    toNapID.SetDescriptionL( KNSmlDMBrowserAdapterAPNodeDescription );
+    
+    MSmlDmDDFObject& startpageURL = dmBrowserAdap.AddChildObjectL(KNSmlDMBrowserAdapterStartpageURL);
+    startpageURL.SetAccessTypesL( accessSetTypes );
+    startpageURL.SetScopeL( MSmlDmDDFObject::EPermanent );
+    startpageURL.SetDFFormatL( MSmlDmDDFObject::EChr );
+    startpageURL.AddDFTypeMimeTypeL( KNSmlDMBrowserAdapterTextPlain );
+    startpageURL.SetDescriptionL( KNSmlDMBrowserStartpageURLDescription );
+    _DBG_FILE("CNSmlDmBrowserAdapter::DDFStructureL(): end");
+    }
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::UpdateLeafObjectL()
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::UpdateLeafObjectL( const TDesC8& aURI, 
+                                               const TDesC8& aLUID, 
+                                               const TDesC8& aObject, 
+                                               const TDesC8& aType, 
+                                               const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): begin");
+    
+     CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
+    TInt ret = aURI.LocateReverse(KNSmlURISeparator()[0]);
+    if ( ret == KErrNotFound ) 
+        {
+        retValue = CSmlDmAdapter::EError;
+        iDmCallback->SetStatusL( aStatusRef, retValue );
+        }
+    else
+        {
+        iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+        TInt len = aURI.Length() - (ret + 1);
+        TPtrC8 segment = aURI.Right( len );
+        
+    	DBG_ARGS8(_S8(" Value being set  URI - <%S> <%S> "), &aURI, &aObject );
+                      
+		if (segment == KNSmlDMBrowserAdapterAPNode )
+            {
+              // Get IAP ID and then set the browser setting 
+            TInt err = KErrNone;  
+            CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() );
+            CleanupStack::PushL(iapmatch);
+            
+            TInt iap = iapmatch->IAPIdFromURIL( aObject );
+
+            CleanupStack::PopAndDestroy(); // iapmatch
+            
+            if ( iap != KErrNotFound )
+                {
+                CCommsDatabase* commDb = CCommsDatabase::NewL();
+                CleanupStack::PushL(commDb);
+                CApUtils* aputils = CApUtils::NewLC(*commDb);
+                TRAP(err, iap = aputils->WapIdFromIapIdL( iap ) );
+                DBG_ARGS(_S("IAP = %d"), iap);
+
+                CleanupStack::PopAndDestroy(2); //commdb,aputils
+
+                if( err == KErrNone)
+                    {
+                    CRepository* repository = CRepository::NewLC( KCRUidBrowser );
+    
+				    // Force the browser to use the User Defined AP selection mode.
+    				User::LeaveIfError( repository->Set( KBrowserAccessPointSelectionMode,
+                                         KUserDefined ) );
+    				// This sets the accesspoint default for browser.
+    				User::LeaveIfError( repository->Set( KBrowserDefaultAccessPoint,
+                                         iap ) );
+				    CleanupStack::PopAndDestroy(); // repository
+    
+                    }
+                else
+                    {
+                    _DBG_FILE("CNSmlDmMMSAdapter::UpdateDataL(): \
+                    err!=KErrNone");
+                    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
+                     
+                    }
+                }
+            else
+                {
+                _DBG_FILE("CNSmlDmMMSAdapter::UpdateDataL(): status = \
+                CSmlDmAdapter::EInvalidObject");
+              	iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
+                }
+            }
+		else if(segment == KNSmlDMBrowserAdapterStartpageURL )
+		    {
+		    	// To Get the Browser Start page URL
+		    TBuf<KMaxLengthStartpageName> aBuf;
+		    TInt aErr;
+		    aBuf.Zero();
+		    aBuf.Copy(aObject);
+
+            if(aBuf.Length() == 0 || aBuf.Length() > KMaxLengthStartpageName)
+                {
+                _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Error Zero Length String");
+                iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject);
+                return;
+                }
+                
+		    
+		    CRepository* repository = CRepository::NewLC( KCRUidBrowser );
+		        
+		    if(repository)
+		        {
+		        _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Before Set for StartPage");
+		        User::LeaveIfError( aErr = repository->Set( KBrowserNGStartpageURL,aBuf));
+		        if(aErr != KErrNone)
+                    {
+                    _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Error in Cenrep Set");
+                    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError);
+					return;
+                    }
+		        _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Before Set for StartPageType");
+		        User::LeaveIfError( aErr = repository->Set( KBrowserNGHomepageType,KBrowserHomePageUDefined));
+                if(aErr != KErrNone)
+                    {
+                    _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Error in Cenrep Set");
+                    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError);
+                    return;
+                    }
+
+		        }
+		    _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): Before Setting status to OK");
+            CleanupStack::PopAndDestroy(); // repository
+            iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+		        
+		    }
+        else
+            {
+            iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            }   
+        }
+        
+    _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): end");
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDmBrowserAdapter::DeleteObjectL()
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::DeleteObjectL( const TDesC8& /*aURI*/, 
+                                           const TDesC8& /*aLUID*/, 
+                                           const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::DeleteLeafObjectL( ): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::DeleteLeafObjectL( ): end");
+    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+    }
+
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID, 
+// const TDesC8& aType, const TInt aResultsRef, const TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::FetchLeafObjectL( const TDesC8& aURI, 
+                                              const TDesC8& /*aLUID*/, 
+                                              const TDesC8& aType, 
+                                              const TInt aResultsRef, 
+                                              const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectL(): begin");
+    
+    CBufBase *object = CBufFlat::NewL( 1 );
+    CleanupStack::PushL( object );
+    
+    CSmlDmAdapter::TError retValue = FetchLeafObjectL( aURI, *object );
+    
+    iDmCallback->SetStatusL( aStatusRef, retValue );
+    iDmCallback->SetResultsL( aResultsRef, *object, aType );
+    CleanupStack::PopAndDestroy(); //object
+    _DBG_FILE("CNSmlDmDevInfoAdapt+er::FetchLeafObjectL(): end");
+    }
+
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::ChildURIListL( const TDesC& aURI, 
+// const TDesC& aParentLUID, const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList, 
+// const TInt aResultsRef, const TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::ChildURIListL( const TDesC8& aURI, 
+                                           const TDesC8& /*aParentLUID*/, 
+                                           const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/, 
+                                           const TInt aResultsRef, 
+                                           const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::ChildURIListL(): begin");
+    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
+    CBufBase* currentURISegmentList = CBufFlat::NewL( 1 );
+    CleanupStack::PushL( currentURISegmentList );
+    TInt ret = aURI.LocateReverse(KNSmlURISeparator()[0]);
+    if ( ret == KErrNotFound ) 
+        {
+        ret = -1;
+        }
+    TInt len = aURI.Length() - ( ret + 1 );
+    TPtrC8 segment = aURI.Right( len );
+
+    if ( segment == KNSmlDMBrowserAdapterNodeName )
+        {
+        currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMBrowserAdapterBrowserNodes() );
+        }
+    
+    else
+        {
+        retValue = CSmlDmAdapter::EError;
+        }
+    iDmCallback->SetStatusL( aStatusRef, retValue );
+    iDmCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
+    CleanupStack::PopAndDestroy(); //currentURISegmentList
+    _DBG_FILE("CNSmlDmBrowserAdapter::ChildURIListL(): end");
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDmBrowserAdapter::AddNodeObjectL( const TDesC8& aURI, 
+// const TDesC8& aParentLUID, const TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::AddNodeObjectL( const TDesC8& /*aURI*/, 
+                                            const TDesC8& /*aParentLUID*/, 
+                                            const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::AddNodeObjectL(): begin");
+    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+    _DBG_FILE("CNSmlDmBrowserAdapter::AddNodeObjectL(): end");
+    }
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::UpdateLeafObjectL()
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::UpdateLeafObjectL( const TDesC8& /*aURI*/, 
+                                               const TDesC8& /*aLUID*/, 
+                                               RWriteStream*& /*aStream*/, 
+                                               const TDesC8& /*aType*/, 
+                                               const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): stream: begin");
+    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+    _DBG_FILE("CNSmlDmBrowserAdapter::UpdateLeafObjectL(): stream: end");
+    }
+
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, 
+//  const TDesC8& aLUID, const TDesC8& aType, TInt aResultsRef, TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, 
+                                                  const TDesC8& /*aLUID*/, 
+                                                  const TDesC8& aType, 
+                                                  const TInt aResultsRef, 
+                                                  const TInt aStatusRef )
+    {
+
+    _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectSizeL(): begin");
+    
+    CBufBase *object = CBufFlat::NewL( 1 );
+    CleanupStack::PushL( object );
+    CSmlDmAdapter::TError retValue = FetchLeafObjectL( aURI, *object );
+        
+    TInt objSizeInBytes = object->Size();
+    TBuf8<2> stringObjSizeInBytes;
+    stringObjSizeInBytes.Num( objSizeInBytes );
+    object->Reset();
+    object->InsertL( 0, stringObjSizeInBytes );
+    
+    iDmCallback->SetStatusL( aStatusRef, retValue );
+    iDmCallback->SetResultsL( aResultsRef, *object, aType );
+    CleanupStack::PopAndDestroy(); //object
+    _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectSizeL(): end");
+    }
+    
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& aURI, 
+//  const TDesC8& aParentLUID, TDesC8& aArgument, const TDesC8& aType, TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aArgument, const TDesC8& aType, const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): begin");
+    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+    _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): end");
+    }
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& aURI, 
+//  const TDesC8& aParentLUID, RWriteStream*& aStream, const TDesC8& aType, 
+//  TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::ExecuteCommandL( const TDesC8& /*aURI*/, 
+                                             const TDesC8& /*aParentLUID*/, 
+                                             RWriteStream*& /*aStream*/, 
+                                             const TDesC8& /*aType*/, 
+                                             const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): stream: begin");
+    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+    _DBG_FILE("CNSmlDmBrowserAdapter::ExecuteCommandL(): stream: end");
+    }
+
+// -----------------------------------------------------------------------------
+//  CNSmlDmBrowserAdapter::CopyCommandL( const TDesC8& aTargetURI, const TDesC8& 
+//  aSourceURI, const TDesC8& aSourceLUID, const TDesC8& /*aType*/, TInt aStatusRef )
+// -----------------------------------------------------------------------------
+void CNSmlDmBrowserAdapter::CopyCommandL( const TDesC8& /*aTargetURI*/, const TDesC8& 
+                                          /*aTargetLUID*/, const TDesC8& /*aSourceURI*/, 
+                                          const TDesC8& /*aSourceLUID*/, 
+                                          const TDesC8& /*aType*/, TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::CopyCommandL(): begin");
+    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+    _DBG_FILE("CNSmlDmBrowserAdapter::CopyCommandL(): end");
+    }
+
+// --------------------------------------
+//  CNSmlDmBrowserAdapter::StartAtomicL()
+// --------------------------------------
+void CNSmlDmBrowserAdapter::StartAtomicL()
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::StartAtomicL(): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::StartAtomicL(): end");
+    }
+    
+// ---------------------------------------
+//  CNSmlDmBrowserAdapter::CommitAtomicL()
+// ---------------------------------------
+void CNSmlDmBrowserAdapter::CommitAtomicL()
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::CommitAtomicL(): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::CommitAtomicL(): end");
+    }
+
+// -----------------------------------------
+//  CNSmlDmBrowserAdapter::RollbackAtomicL()
+// -----------------------------------------
+void CNSmlDmBrowserAdapter::RollbackAtomicL()
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::RollbackAtomicL(): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::RollbackAtomicL(): end");
+    }
+
+// -----------------------------------------------------------
+//  CNSmlDmBrowserAdapter::StreamingSupport( TInt& aItemSize )
+// -----------------------------------------------------------  
+TBool CNSmlDmBrowserAdapter::StreamingSupport( TInt& /*aItemSize*/ )
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::StreamingSupport(): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::StreamingSupport(): end");
+    return EFalse;
+    }
+
+// ------------------------------------------
+//  CNSmlDmBrowserAdapter::StreamCommittedL()
+// ------------------------------------------
+void CNSmlDmBrowserAdapter::StreamCommittedL()
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::StreamCommittedL(): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::StreamCommittedL(): end");
+    }
+
+// --------------------------------------------------
+//  CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL()
+// --------------------------------------------------   
+void CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL()
+    {
+    _DBG_FILE("CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL(): begin");
+    _DBG_FILE("CNSmlDmBrowserAdapter::CompleteOutstandingCmdsL(): end");    
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDmDevDetailAdapter::FetchLeafObjectL()
+// -----------------------------------------------------------------------------
+CSmlDmAdapter::TError CNSmlDmBrowserAdapter::FetchLeafObjectL( const TDesC8& aURI, 
+                                                               CBufBase& aObject )
+    {
+    _DBG_FILE("CNSmlDmInfoAdapter::FetchLeafObjectL(): begin");
+    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
+    TInt ret = aURI.LocateReverse(KNSmlURISeparator()[0]);
+    TInt err = KErrNone;
+    if ( ret == KErrNotFound ) 
+        {
+        retValue = CSmlDmAdapter::EError;
+        }
+    else
+        {
+        TInt len = aURI.Length() - (ret + 1);
+        TPtrC8 segment = aURI.Right( len );
+        
+        if(segment == KNSmlDMBrowserAdapterAPNode)
+            {
+            TInt iap ;
+            CRepository* repository = CRepository::NewLC( KCRUidBrowser );
+    
+		    // Force the browser to use the User Defined AP selection mode.
+    		TInt selectionMode;
+    		User::LeaveIfError( repository->Get( KBrowserAccessPointSelectionMode,
+                                         selectionMode ) );
+    		if (selectionMode != KUserDefined)                                          
+        		{
+         		retValue= CSmlDmAdapter::ENotFound;
+		         
+        		CleanupStack::PopAndDestroy(); // repository
+        		}
+       		else
+        		{
+        		// This sets the accesspoint default for browser.
+    			User::LeaveIfError( repository->Get( KBrowserDefaultAccessPoint,
+                                         iap ) );
+    			CleanupStack::PopAndDestroy(); // repository
+            
+            	CCommsDatabase* commDb = CCommsDatabase::NewL();
+                CleanupStack::PushL(commDb);
+                CApUtils* aputils = CApUtils::NewLC(*commDb);
+                TRAP(err, iap = aputils->IapIdFromWapIdL( iap ) );
+                DBG_ARGS(_S("IAP = %d"), iap);
+
+        
+        	if( iap != -1 && err == KErrNone )
+            	{
+            	CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() );
+            	CleanupStack::PushL(iapmatch);
+    
+            	HBufC8* uri8 = iapmatch->URIFromIAPIdL( iap );
+                
+            if( uri8 )
+                {
+                CleanupStack::PushL(uri8);
+                aObject.InsertL(0,uri8->Des());
+                retValue= CSmlDmAdapter::EOk;
+                
+                CleanupStack::PopAndDestroy(); // uri8
+                }
+            else
+                {
+                retValue= CSmlDmAdapter::ENotFound;
+                
+                }    
+            CleanupStack::PopAndDestroy(); // iapMatch
+            
+            }
+            else
+                {
+                retValue= CSmlDmAdapter::ENotFound;
+                }
+                CleanupStack::PopAndDestroy(); // apUrils
+                CleanupStack::PopAndDestroy(); // commDb
+            }
+        }
+        else if(segment == KNSmlDMBrowserAdapterStartpageURL)
+            {
+            	// To Set the Browser Start page URL
+            TBuf8<KMaxLengthStartpageName> aName;
+            CRepository* centrep( NULL);
+            aName.Zero();
+            centrep = CRepository::NewLC(KCRUidBrowser);
+
+            if ( centrep )
+                {
+                TFullName temp;
+                
+                if (centrep->Get( KBrowserNGStartpageURL, temp )==KErrNone && temp.Length() )
+                    {
+                    _DBG_FILE("CNSmlDmBrowserAdapter::FetchLeafObjectL(): Got the value for start page");
+                    temp.Trim();
+                    aName.Copy(temp);
+                    }
+                CleanupStack::PopAndDestroy(centrep);
+                }
+            aObject.InsertL(0,aName);
+            retValue= CSmlDmAdapter::EOk;   
+            }
+    
+        }
+    _DBG_FILE("CNSmlDmInfoAdapter::FetchLeafObjectL(): end");
+    return retValue;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+#ifndef IMPLEMENTATION_PROXY_ENTRY
+#define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr)  {{aUid},(aFuncPtr)}
+#endif
+
+const TImplementationProxy ImplementationTable[] = 
+    {
+        IMPLEMENTATION_PROXY_ENTRY(KNSmlDMBrowserAdapterImplUid, CNSmlDmBrowserAdapter::NewL)
+    };
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+    {
+    _DBG_FILE("ImplementationGroupProxy() for CNSmlDmBrowserAdapter: begin");
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    _DBG_FILE("ImplementationGroupProxy() for CNSmlDmBrowserAdapter: end");
+    return ImplementationTable;
+    }
+
+// End of file
+