/*
* Copyright (c) 2002-2006 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: Script interface in CF.
*
*/
#ifndef M_CFSCRIPTINTERFACE_H
#define M_CFSCRIPTINTERFACE_H
class CCFActionSubscription;
class MCFActionSubscriptionListener;
class MCFScriptOwner;
class RThread;
/**
* Interface for registering scripts.
*/
class MCFScriptInterface
{
public:
/**
* Registers a script.
* Possible error codes:
* - KErrNotFound, specified context or action in script not defined
* - KErrAccessDenied, not enough capabilities for context or action
*
* @since S60 5.0
* @param aName Script's name, filename or secure id from client thread.
* @param aScript Script.
* @param aScriptId Reference to script ID return parameter.
* @param aClientThread Client thread.
* @param aOwner Script owner session.
* @return KErrNone if no errors.
*/
virtual TInt RegisterScript(
const TDesC& aName,
const TDesC8& aScript,
TInt& aScriptId,
const RThread& aClientThread,
MCFScriptOwner& aOwner ) = 0;
/**
* Deregister a script.
*
* @since S60 5.0
* @param aScriptId ID of the script to be removed.
* @param aClientThread Client thread which registered the script.
* @return KErrNone if no errors.
*/
virtual TInt DeregisterScript( TInt aScriptId,
const RThread& aClientThread ) = 0;
/**
* Deregister a script.
*
* @since S60 5.0
* @param aScriptName Name of the script to be removed.
* @param aClientThread Client thread which registered the script.
* @return KErrNone if no errors.
*/
virtual TInt DeregisterScript( const TDesC& aScriptName,
const RThread& aClientThread ) = 0;
/**
* Deregister a scripts from a particular Sid.
*
* @since S60 5.0
* @param aClientThread Client thread which registered the script.
* @return KErrNone if no errors.
*/
virtual TInt DeregisterScripts( const RThread& aClientThread ) = 0;
/**
* Deregister scripts by script session. This is used when the client
* session is closed.
* @param aOwner Script owner session being closed.
*/
virtual void DeregisterScriptOwner( MCFScriptOwner& aOwner ) = 0;
/**
* Save script into disk.
*
* @since S60 5.0
* @param aScript Script content to save
* @param aScriptId Id of the script which data is stored.
* @param aClient Client thread.
* @return KErrNone if no errors.
*/
virtual TInt SaveScript( const TDesC8& aScript,
TInt aScriptId,
const RThread& aClient ) = 0;
/**
* Delete script from disk.
*
* @since S60 5.0
* @param aScriptName Script name to delete.
* @param aClientThread Client thread which registered the script.
* @return KErrNone if no errors.
*/
virtual TInt DeleteScript( const TDesC& aScriptName,
RThread& aClientThread ) = 0;
/**
* Delete scripts from disk from a particular Sid.
*
* @since S60 5.0
* @param aScriptName Script name to delete.
* @param aClientThread Client thread which registered the script.
* @return KErrNone if no errors.
*/
virtual TInt DeleteScripts( RThread& aClientThread ) = 0;
/**
* Check if the script name is already reserved.
*
* @since S60 5.0
* @param aScriptName Name of the script.
* @param aClient Client process thread.
* @param aScriptId Id of the script found.
* @return ETrue if the name is reserved.
*/
virtual TBool AlreadyExists( const TDesC& aScriptName,
const RThread& aClient,
TInt& aScriptId ) const = 0;
/**
* Cleanup persistent data from a script identified by name.
*
* @since S60 5.0
* @param aScriptName Name of the script.
* @param aClient Owner of the scripts.
* @return KErrNone if no errors.
*/
virtual void CleanupPersistentDataByName( const TDesC& aScriptName,
const RThread& aClientThread ) = 0;
/**
* Cleanup persistent data from all scripts identified by owner uid.
*
* @since S60 5.0
* @param aClient Owner of the scripts.
* @return KErrNone if no errors.
*/
virtual void CleanupPersistentDataByUid( const RThread& aClient ) = 0;
/**
* Method for updating (by replacing) a script.
*
* @since Series 60 5.0
* @param aScriptId Id of the script to be updated.
* @param aUpdatedScript descriptor containing the new script.
* @param aOwner Script owner session.
* @return KErrnone if successful, system wide error code otherwise.
*/
virtual TInt UpdateScript( TInt aScriptID,
const RThread& aOwnerThread,
const TDesC8& aUpdatedScript,
MCFScriptOwner& aOwner ) = 0;
/**
* Restore upgraded rom based script with the orginal script found
* in rom.
*
* @since S60 5.0
* @param aScriptId Script id of the existing script.
* @return KErrNone if no errors.
*/
virtual TInt RestoreRomScript( TInt aScriptId,
const RThread& aClient ) = 0;
/**
* Parses the script and checks that client is allowed to upgrade
* rom based script. The upgrade must have at least the same
* upgrade capability level and the client must have the same
* capabilities.
* @param aScript The upgrade script.
* @param aClient Client process thread.
* @return KErrNone if upgrade is allowed.
*/
virtual TInt IsUpgradeAllowed( const TDesC& aName,
const TDesC8& aScript,
const RThread& aOwnerThread ) = 0;
protected:
// Deny destruction through this class
virtual ~MCFScriptInterface(){};
};
#endif //M_CFSCRIPTINTERFACE_H