web_pub/browser_control_api/inc/BrCtlInterface.h
changeset 0 dd21522fd290
child 36 0ed94ceaa377
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web_pub/browser_control_api/inc/BrCtlInterface.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,975 @@
+/*
+* Copyright (c) 2006 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:  Definition of the Browser Control API
+*
+*/
+
+
+#ifndef BRCTLINTERFACE_H
+#define BRCTLINTERFACE_H
+
+//  INCLUDES
+#include <../bidi.h>
+#include <e32std.h>
+#include <e32base.h>
+#include <coecntrl.h>
+#include <eikmenup.h>
+#include <ssl.h>
+
+#include <BrCtlDialogsProvider.h>
+#include <BrCtlLayoutObserver.h>
+#include <BrCtlLinkResolver.h>
+#include <BrCtlSoftkeysObserver.h>
+#include <BrCtlSpecialLoadObserver.h>
+#include <BrCtlWindowObserver.h>
+#include <BrCtlDownloadObserver.h>
+#include <BrCtlDefs.h>
+
+// DATA TYPES
+
+// FORWARD DECLARATIONS
+class MBrCtlDataLoadSupplier;
+class MBrCtlDataLoadConsumer;
+class MBrCtlLoadEventObserver;
+class MBrCtlDialogsProvider;
+class TBrCtlWmlServiceOption;
+class TBrCtlSubscribeTo;
+class MBrCtlStateChangeObserver;
+class MBrCtlCommandObserver;
+class MWidgetCallback;
+class MWidgetExtension;
+class CBrCtlInterface;
+class CPluginInfo;
+class TBrCtlImageCarrier;
+
+/**
+* Creates the browser control.
+*
+* @param aParent                      Parent window of the browser control
+* @param aRect                        Bounding rectangle for the browser control
+* @param aBrCtlCapabilities           Desired capabilities of the browser control.
+* For example, displaying scroll bars, allowing network access for HTTP requests.
+* @see For a complete list of capability options, see TBrCtlCapabilities
+* @param aCommandIdBase               Base values for Command IDs for Browser Control.
+* These are added to ensure that each Command ID is unique; Browser Control command IDs must be different from the host application command IDs.
+* @see For more information, see TBrCtlCommandId
+* @param aBrCtlSoftkeysObserver       Softkeys observer.
+* Default: the host application does not update the softkeys.
+* @see For more information, see MBrCtlSoftkeysObserver class
+* @param aBrCtlLinkResolver           Link Resolver. Must be provided if ECapabilityClient
+* ResolveEmbeddedURL or ECapabilityClientNotifyURL is set.
+* @see For more information, see MBrCtlLinkResolver class.
+* @param aBrCtlSpecialLoadObserver    Special Load Observer.
+* @see MBrCtlSpecialLoadObserver class for more details of special load observer.
+* @param aBrCtlLayoutObserver         Layout Observer.
+* Default:
+* Non-markup pages are not handled by the browser.
+* Non-HTTP(S) schemes are not handled by the browser.
+* Connection is created by the Proxy Filter.
+* @see For more information, see MBrCtlLayoutObserver class
+* @param aBrCtlDialogsProvider        Dialogs Provider.
+* @see For more information, see MBrCtlDialogsProvider class
+* @param aBrCtlWindowObserver         Window Observer.
+* @see For more information, see MBrCtlWindowObserver class
+* @param aBrCtlDownloadObserver       Downlaod observer
+* @see For more information,  MBrCtlDownloadObserver class
+* @return a pointer to CBrCtlInterface class or NULL if this function fails.
+*/
+IMPORT_C CBrCtlInterface* CreateBrowserControlL(CCoeControl* aParent, TRect aRect,
+    TUint aBrCtlCapabilities, TUint aCommandIdBase = TBrCtlDefs::ECommandIdBase,
+    MBrCtlSoftkeysObserver* aBrCtlSoftkeysObserver = NULL,
+    MBrCtlLinkResolver* aBrCtlLinkResolver = NULL,
+    MBrCtlSpecialLoadObserver* aBrCtlSpecialLoadObserver = NULL,
+    MBrCtlLayoutObserver* aBrCtlLayoutObserver = NULL,
+    MBrCtlDialogsProvider* aBrCtlDialogsProvider = NULL,
+    MBrCtlWindowObserver* aBrCtlWindowObserver = NULL,
+  MBrCtlDownloadObserver* aBrCtlDownloadObserver = NULL );
+
+/**
+* The CBrCtlInterface class is the base class of the Browser Control API.
+* All clients of browser control must use this class. The functions defined
+* in the CBrCtlInterface class implement basic Browser Control functionality.
+* You can customize the Browser Control to extend its functionality by
+* implementing additional interface classes in the host application. Examples
+* of such classes are MBrCtlDataLoadSupplier, MBrCtlDialogsProvider,
+* MBrCtlDialogsProvider etc.
+*
+* Usage:
+*
+* @code
+*  #include <BrCtlInterface.h>
+*  // Interface that provides dialogs used by the Browser Control.
+*  #include <BrCtlDialogsProvider.h>
+*  // Interface used to receive scrolling events.
+*  #include <BrCtlLayoutObserver.h>
+*  //Interface that provides a callback mechanism for receiving the
+*  //content of an embedded link or the content of a user-initiated
+*  //load request.
+*  #include <BrCtlLinkResolver.h>
+*  //Interface that handles requests to change the softkeys.
+*  #include <BrCtlSoftkeysObserver.h>
+*  //Interface that handles special load needs.
+*  #include <BrCtlSpecialLoadObserver.h>
+*  //Reserved for future use.
+*  #include <BrCtlWindowObserver.h>
+*  //Interface that passes download events from the
+*  //Download Manager through the Browser Control to the
+*  //host application.
+*  #include <BrCtlDownloadObserver.h>
+*  Enum Definition of the Browser Control API.
+*  #include <BrCtlDefs.h>
+*
+*
+*   The following types of things you can do with the Browser Control API.
+*
+* Creating a basic Browser Control
+* Creating a Browser Control with observer interfaces
+* Loading content
+* Passing content incrementally
+* Receiving load progress events
+* Handling special load requests
+* Customizing dialogs
+* Specifying the softkeys
+* Resolving links
+* Customizing scroll bars
+* Receiving change-of-state events
+*
+* @see S60 Platform: Browser Control API Developer's Guide Version 2.0
+* @lib BrowserEngine.lib
+* @since 2.8
+* @file BrCtlInterface.h
+* @endcode     *
+*/
+class CBrCtlInterface : public CCoeControl
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Destructor.
+        */
+      inline virtual ~CBrCtlInterface() {}
+
+    public: // New functions
+
+        /**
+        * Passes a command to the Browser Control..
+        * @since 2.8
+        * @param aCommand The command that the Browser Control should process
+        * @return void
+        * @see TBrCtlCommands, For a complete list of commands,
+        */
+        IMPORT_C virtual void HandleCommandL(TInt aCommand) = 0;
+
+        /**
+        * Return the display size that would be needed to see all the content
+        * @since 2.8
+        * @return The display size that would be needed to see all the content
+        */
+        IMPORT_C virtual TSize ContentSize() = 0;
+
+        /**
+        * Update a Browser Control setting
+        * @since 2.8
+        * @param aSetting The setting to update
+        * @param aValue The new value of the setting
+        * @leave KErrArgument if the value of aSetting is out of range.
+        * @return void
+        */
+        IMPORT_C virtual void SetBrowserSettingL(TUint aSetting, TUint aValue) = 0;
+
+        /**
+        * Get a setting from the Browser Control
+        * @since 2.8
+        * @param aSetting The setting to get
+        * @leave KErrArgument if the value of aSetting is out of range.
+        * @return The value of the setting
+        */
+        IMPORT_C virtual TUint BrowserSettingL(TUint aSetting) = 0;
+
+        /**
+        * Request the Browser Control to display the content of a buffer
+        * @since 2.8
+        * @param aUrl A url that refers to the data. If a url scheme is used, it must be "data:"
+        * @param aData The content to display. Browser Control does not take ownership
+        * @param aDataType The data type of the data
+        * @param aCharsetUid The UID of the character converter of the content's charset 0 assumed Latin-1
+        * @return void
+        * @attention If you use this function, the Browser Control does not keep
+        * track of the history. If the data is not markup, Browser Control uses
+        * the Special Load Observer to pass the content back to the Host Application.
+        * The Special Load Observer uses the Document Handler to send the content
+        * to the proper application.
+        */
+        IMPORT_C virtual void LoadDataL(const TDesC& aUrl,
+                                const TDesC8& aData,
+                                const TDataType& aDataType,
+                                TUid aCharsetUid) = 0;
+
+        /**
+        * Request the Browser Control to display content incrementaly
+        * @since 2.8
+        * @param aUrl A url that refers to the data. If a url scheme is used, it must be "data:"
+        * @param aDataType The data type of the data
+        * @param aCharsetUid The UID of the character converter of the content's charset 0 assumed Latin-1
+        * @param aContentLength The length of the content.
+        * @param aBrCtlDataLoadSupplier A callback interface to stop passing data if an error occured in the Browser Control
+        * @param aBrCtlDataLoadConsumer A callback interface returned by the browser. Data should be passed to that interface
+        * @return void
+        * @attension If you use this function, the Browser Control does not keep
+        * track of the history.If the content type of the data is not markup, Browser
+        * Control uses the Special Load Observer to pass the content back to the Host
+        * Application. The Special Load Observer uses the Document Handler to send
+        * the content to the proper application.
+        */
+        // The url scheme must be "data:" The url is needed as reference to this load request
+        IMPORT_C virtual void InitLoadDataL(const TDesC& aUrl,
+                                    const TDataType& aDataType,
+                                    TUid aCharsetUid,
+                                    TUint aContentLength,
+                                    MBrCtlDataLoadSupplier* aBrCtlDataLoadSupplier,
+                                    MBrCtlDataLoadConsumer** aBrCtlDataLoadConsumer) = 0;
+
+        /**
+        * Request the Browser Control to load a url
+        * @since 2.8
+        * @param aUrl The url to load
+        * @param aApId The Access Point Id to use
+        * @param aCacheMode The cache mode to use.
+        * Values: One of the following:
+        *            ECacheModeNormal
+        *            ECacheModeHistory
+        *            ECacheModeNoCache
+        *            ECacheModeOnlyCache
+        * @see For a description of each of these values, see TBrCtlCacheMode
+        * @return void
+        */
+        IMPORT_C virtual void LoadUrlL( const TDesC& aUrl,
+                                        TInt aApId = -1,
+                                        TBrCtlDefs::TBrCtlCacheMode aBrCtlCacheMode = TBrCtlDefs::ECacheModeNormal) = 0;
+
+        /**
+        * Request the Browser Control to load and display a file from the file system
+        * @since 2.8
+        * @param aFileName The name of the file
+        * @return void
+        */
+        IMPORT_C virtual void LoadFileL(const TDesC& aFileName) = 0;
+
+        /**
+        * Request the Browser Control to load and display a file from the file system
+        * @since 2.8
+        * @param aFileHandle The handle of the file
+        * @return void
+        */
+        IMPORT_C virtual void LoadFileL(RFile& aFileHandle) = 0;
+
+        /*                                        
+        * Return the WML Options for the current page
+        * @since 2.8
+        * @param
+        * @return The WML Options for the current page
+        */
+        IMPORT_C virtual RPointerArray<TBrCtlWmlServiceOption>* WMLOptionMenuItemsL()  = 0;
+
+        /**
+        * Request the Browser Control to add its own options to the option menu
+        * @since 2.8
+        * @param aMenuPane Handle of the menu that will contain the options
+        * @param aResourceId The resource ID of the menu
+        * @param aAfter WML options should be added after that index
+        * @return void
+        */
+        IMPORT_C virtual void AddOptionMenuItemsL(CEikMenuPane& aMenuPane, TInt aResourceId, TInt aAfter=-1 ) = 0;
+
+        /**
+        * Request the Browser Control to clear the cache
+        * @since 2.8
+        * @return The number of bytes that were freed from cache.
+        */
+        IMPORT_C virtual TUint ClearCache() = 0;
+
+        /**
+        * Ask the Browser Control if a URL is in cache
+        * @since 2.8
+        * @param aUrl The Url
+        * @return ETrue, if a specific Url is in cache
+        * EFalse if the URL is not in the cache
+        */
+        IMPORT_C virtual TBool IsUrlInCache(TDesC& aUrl) = 0;
+
+        /**
+        * Ask the Browser Control to clear a URL from the cache
+        * @since 2.8
+        * @param aUrl The Url
+        * @return KErrNone if the URL is cleared from the cache
+        * Error message is the URL has not been cleared.
+        */
+        IMPORT_C virtual TInt ClearItemInCache(TDesC& aUrl) = 0;
+
+        /**
+        * Request the Browser Control to return info about the page. The info is returned on the Cleanup Stack.
+        * @since 2.8
+        * @param aBrCtlPageInfo The type of requested info
+        * @return A descriptor containing the requested page info
+        * @attention The information is returned on the Cleanup stack.
+        */
+        IMPORT_C virtual HBufC* PageInfoLC(TBrCtlDefs::TBrCtlPageInfo aBrCtlPageInfo ) = 0;
+
+        /**
+        * From CBrCtlInterface Query the Browser Control
+        * if there is a previous or next (depending on aDirection) element in history stack
+        * @param aDirection
+        * ENavigationBack if you wish to query whether there is a previous element
+        * in the history stack.
+        * ENavigationForward if you wish to query whether there is a subsequent
+        * element in the history stack.
+        * @since 2.8
+        * @return ETrue if can go aDirection, EFalse otherwise
+        */
+        IMPORT_C virtual TBool NavigationAvailable( TBrCtlDefs::TBrCtlNavigationDirection aDirection ) = 0;
+
+        /**
+        * Request the Browser Control to save the current content to a file
+        * @since 2.8
+        * @param aFileName The name of the file to use for saving the content
+        * @return The number of bytes in the saved file
+        */
+        IMPORT_C virtual TUint16 SaveToFileL(const TDesC& aFileName) = 0;
+
+        /**
+        * Request the Browser Control to pass the server's certificate info for the current page
+        * @since 2.8
+        * @return Certificate info of the server of the current page
+        */
+        IMPORT_C virtual const TCertInfo* CertInfo() = 0;
+
+        /**
+        * Request the Browser Control to register for load events
+        * @since 2.8
+        * @param aBrCtlLoadEventObserver A load events observer to add
+        * @return void
+        * @attenstion Call this function immediately after creating the Browser Control.
+        * For multiple registrations, the host application may call this function more than once.
+        * Observers must unregister before deleting the Browser Control.
+        */
+        IMPORT_C virtual void AddLoadEventObserverL(MBrCtlLoadEventObserver* aBrCtlLoadEventObserver) = 0;
+
+        /**
+        * Request the Browser Control to unregister for load events
+        * @since 2.8
+        * @param aBrCtlLoadEventObserver A load events observer to remove
+        * @return void
+        * @attenstion Call this function for each Load Observer that was previously registered.
+
+
+        */
+        IMPORT_C virtual void RemoveLoadEventObserver(MBrCtlLoadEventObserver* aBrCtlLoadEventObserver) = 0;
+
+        /**
+        * Return the number of images in the current page
+        * @since 2.8
+        * @param
+        * @return The number of images in the current page
+        */
+        IMPORT_C virtual TInt ImageCountL() = 0;
+
+        /**
+        * Returns the focused element
+        * @since 2.8
+        * @return The type of the focused element
+        * @attension The host application may need to perform special processing,
+        * such as updating the softkeys, when a specific element has the focus.
+        */
+        IMPORT_C virtual TBrCtlDefs::TBrCtlElementType FocusedElementType() = 0;
+
+        /**
+        * Register an observer for state changes
+        * @since 2.8
+        * @param aBrCtlStateChangeObserver The observer to register
+        * @return void
+        * @attenstion The Observer must unregister before deleting the Browser Control.
+        */
+        IMPORT_C virtual void AddStateChangeObserverL(MBrCtlStateChangeObserver* aBrCtlStateChangeObserver) = 0;
+
+        /**
+        * Unregister an observer for state changes
+        * @since 2.8
+        * @param The observer to unregister
+        * @return void
+        */
+        IMPORT_C virtual void RemoveStateChangeObserver(MBrCtlStateChangeObserver* aBrCtlStateChangeObserver) = 0;
+
+        /**
+        * Request the Browser Control to return info about the Browser Control version. The info is returned on the Cleanup Stack.
+        * @since 2.8
+        * @param aVersionInfo The type of requested info
+        * @return A descriptor containing the requested page info
+        * @attention The information is returned on the Cleanup Stack.
+        */
+        IMPORT_C virtual HBufC* VersionInfoLC(TBrCtlDefs::TBrCtlVersionInfo aVersionInfo) = 0;
+
+        /**
+        * Pass a list of content types to the Browser Control.
+        * These content types will not be using the download manager.
+        * The list must be separated by ';' e.g. "text/html;text/wml"
+        * @since 2.8
+        * @param aContentTypes The content types that should not use Download Manager
+        * @return void
+        * @deprecated This function is deprecated. Use the
+        * EParamsSelfDownloadableTypes parameter of the SetParamL function instead.
+        */
+        IMPORT_C virtual void SetSelfDownloadContentTypesL(TDesC& aContentTypes) = 0;
+
+        /**
+        * Update a Browser Control parameter. consequent calls with the
+        * same aParam will replace the value, and not append to it.
+        * @since 2.8
+        * @param aParam The parameter to update
+        * @param aValue The new value of the parameter
+        *        EParamsSelfDownoadableTypes: Pass a list of content types to the
+        *        Browser Control. These content types will not be using the
+        *        download manager. The list must be separated by ';' e.g.
+        *        "text/html;text/wml"
+        *
+        *        EParamsRequestHeaders: Pass a list of headers that the
+        *        Browser Control. These headers will be added to each request.
+        *        The list must be separated by '\r'. The header name and value must be
+        *        separated by ':'  e.g.
+        *        "x-myheader: myvalue\rx-myotherheader: myothervalue"
+        * @return void
+        */
+        IMPORT_C virtual void SetParamL(TBrCtlDefs::TBrCtlParams aParam, const TDesC& aValue) = 0;
+
+        /**
+        * Request the Browser Control to load a saved page.
+        * @since 3.0
+        * @param aUid a unique identifier for the saved page
+        * @param aSavedPageBuffer buffer which contains the content of the saved page
+        * @return void
+        */
+        IMPORT_C virtual void LoadSavedPageL(const TDesC& aUid, TDesC& aSavedPageBuffer) = 0;
+
+        /**
+        * Return the zoom levels index
+        * @since 3.0
+        * @return The zoom levels array.
+        */
+        IMPORT_C virtual RArray<TUint>* ZoomLevels() const = 0;
+
+       /**
+        * Perform the incremental find operation
+        * @param aKeyword String to be find.
+        * @since 3.0
+        * @return TBrCtlFindResponse
+        */
+        IMPORT_C virtual int FindKeyword( const TDesC& aKeyword ) = 0;
+
+        /**
+        * Continue the incremental find operation
+        * @since 3.0
+        * @param aFowardDirection TRUE if search is in forword direction.
+        * For backword direction, it is FALSE.
+        * @return TBrCtlFindResponse
+        * @attention Method that is called when the user searches for the next
+        * keyword in the doc.
+        *
+        */
+        IMPORT_C virtual TBrCtlDefs::TBrCtlFindResponse FindKeywordAgain( TBool aFowardDirection ) = 0;
+
+        /**
+        * Return information about the linked feeds in the current page - used to
+        * build a "Subscribe to" submenu.
+        * @since 3.0
+        * @return Information about the linked feeds in the current page.  The
+        *         caller adopts the result.
+        */
+        IMPORT_C virtual const RPointerArray<TBrCtlSubscribeTo>& SubscribeToMenuItemsL() = 0;
+
+
+
+    public: // Functions from base classes
+
+        // Functions from CCoeControl
+
+        /**
+        * From CCoeControl Return the minimum size the Browser Control can use
+        * @since 2.8
+        * @return The minimum size that the Browser Control can use.
+        * @attention This function is inherited from the Symbian CCoeControl class.
+        */
+        IMPORT_C virtual TSize MinimumSize() = 0;
+
+        /**
+        * From CCoeControl Pass key events to the Browser Control
+        * @since 2.8
+        * @param aKeyEvent The key event
+        * @param aType The key code
+        * @return If the Browser Control consumed the key event or not
+        * @attention This function is inherited from the Symbian CCoeControl class.
+        */
+        IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) = 0;
+
+        /**
+        * From CCoeControl Sets that the Browser Control has keyboard focus.
+        * @since 2.8
+        * @param aFocus If the Browser Control gets or loses focus
+        * @param ENoDrawNow If the Browser Control should redraw itself as result of focus change
+        * @return void
+        * @attention This function is inherited from the Symbian CCoeControl class.
+        */
+        IMPORT_C virtual void SetFocus(TBool aFocus, TDrawNow aDrawNow = ENoDrawNow) = 0;
+
+        /*
+        * This method calls to download manager in order to display query "Cancel
+        * outstanding downloads?" and cancel if it requested by user
+        * @param none
+        * @return ETrue if it is OK to exit; EFalse - if it is not OK to exit
+        */
+        IMPORT_C virtual TBool OkToExit() = 0;
+
+
+        /**
+        * This method calls to download manager in order to send the commands (EDownloadCmdPause,DownloadCmdResume,
+    * EDownloadCmdCancel, EDownloadCmdMarkAsProgressive, EDownloadCmdMarkAsNotProgressive )
+        * @param aCommand The command that the Browser Control should process
+        * @param aTransId The transaction Id associated with this command
+        * @return void
+        */
+    IMPORT_C virtual void HandleDownloadCommandL(TUint16 aTransId, TBrCtlDefs::TBrCtlDownloadCmd aCommand) = 0;
+
+     /**
+        * Request icon for the given url
+        * @since 3.1
+        * @param aUrl url to a favicon or a page
+        * @param aBitmapInfo info on whether to retun a favicon or a page icon
+        * @return favion icon or page icon
+        */
+    IMPORT_C virtual CGulIcon* GetBitmapData(const TDesC& aUrl, TBrCtlDefs::TBrCtlBitmapInfo aBitmapInfo) = 0;
+
+        /**
+        * Register a client command interface for the browser engine
+        * @since 3.1
+        * @param The observer to register
+        * @return void
+        */
+        IMPORT_C virtual void AddCommandObserverL(MBrCtlCommandObserver* aBrCtlCommandObserver) = 0;
+
+        /**
+        * Unregister a client command interface for the browser engine
+        * @since 3.1
+        * @param The observer to unregister
+        * @return void
+        */
+        IMPORT_C virtual void RemoveCommandObserver(MBrCtlCommandObserver* aBrCtlCommandObserver) = 0;
+
+        /**
+        * Unregister a client command interface for the browser engine
+        * @since 3.1
+        * @param The observer to unregister
+        * @return void
+        */
+        IMPORT_C virtual MWidgetExtension* CreateWidgetExtensionL(MWidgetCallback& aWidgetCallback) = 0;
+
+        /**
+        * Get information about the focused image. The function leaves if the focus is not on an image
+        * @since 3.2
+        * @param
+        * @return The requested information
+        */
+        IMPORT_C virtual TBrCtlImageCarrier* FocusedImageLC() = 0;
+
+        /**
+        * Requests the Browser Control to POST to a URL
+        * @since 5.0
+        * @param aUrl URL to which the Browser Control sends the POST request
+        * @param aContentType Content type of the data to be posted
+        * @param aPostData Data to be posted
+        * @param aBoundary Boundary for form-data or multi-part content. 
+        * @param aReserved For future use only
+        * @return void
+        */        
+        IMPORT_C virtual void PostUrlL (const TDesC& aUrl, 
+                                        const TDesC8& aContentType, 
+                                        const TDesC8& aPostData, 
+                                        const TDesC8* aBoundary, 
+                                        TAny* aReserved) = 0;
+        /**
+        * Requests the Browser Control for offscreen bitmap
+        * @since 5.0
+        * @ fills offscreen bitmap.The bitmap memory has to be set and freed by the api calling that function.
+        * @return void. 
+        */
+        IMPORT_C virtual void TakeSnapshotL(CFbsBitmap& snapshot) = 0; 
+    };
+
+
+/**
+* The MBrCtlDataLoadSupplier class is a callback interface that
+* provides the Browser Control with the ability to display content incrementally.
+* It does this by providing a means for the Browser Control to cancel the load operation
+* if an error occurs.
+* For example, if the Browser Control runs out of memory during the
+* load operation, it can cancel that operation by means of this interface.
+*
+* Usage:
+*
+* @code
+*  #include <BrCtlInterface.h>
+* @see S60 Platform: Browser Control API Developer's Guide Version 2.0
+* @lib BrowserEngine.lib
+* @since 2.8
+* @file BrCtlInterface.h
+* @endcode     *
+*/
+class MBrCtlDataLoadSupplier
+    {
+    public: // New functions
+        /**
+        * Cancel the load operation
+        * @since 2.8
+        * @return void
+        */
+    virtual void CancelLoad() = 0;
+    };
+
+
+
+/**
+* The MBrCtlDataLoadConsumer class is a callback interface that provides
+* the Browser Control with the ability to receive content incrementally.
+*
+* @code
+*  #include <BrCtlInterface.h>
+* @see S60 Platform: Browser Control API Developer's Guide Version 2.0
+* @lib BrowserEngine.lib
+* @since 2.8
+* @file BrCtlInterface.h
+* @endcode     *
+*/
+class MBrCtlDataLoadConsumer
+    {
+    public: // New functions
+        /**
+        * Pass the next data chunk
+        * @since 2.8
+        * @param aData The data chunk to process
+        * @return void
+        */
+        virtual void HandleNextDataChunk(const TDesC8& aData) = 0;
+
+        /**
+        * Inform the Browser Control about completion of data load
+        * @since 2.8
+        * @return void
+        */
+        virtual void HandleLoadComplete() = 0;
+
+        /**
+        * Inform the Browser Control that an error occured
+        * if HandleError() is called, then LoadComplete() is infered.
+        * @since 2.8
+        * @param aError The error code
+        * @return void
+        */
+        virtual void HandleError(TInt aError) = 0;
+    };
+
+/**
+* The MBrCtlLoadEventObserver interface receives load progress events.
+* The host application can implement this interface.
+*
+* @code
+*  #include <BrCtlInterface.h>
+* @see S60 Platform: Browser Control API Developer's Guide Version 2.0
+* @lib BrowserEngine.lib
+* @since 2.8
+* @file BrCtlInterface.h
+* @endcode     *
+*/
+class MBrCtlLoadEventObserver
+    {
+    public: // New functions
+        /**
+        * A load events notification
+        * @since 2.8
+        * @param aLoadEvent The load event
+        * @param aSize Size depends on the event
+        * @param aTransactionId The transaction id of the transaction that had this event
+        * @return void
+        */
+        virtual void HandleBrowserLoadEventL(TBrCtlDefs::TBrCtlLoadEvent aLoadEvent, TUint aSize, TUint16 aTransactionId) = 0;
+    };
+
+/**
+* The TBrCtlWmlServiceOption class wraps information about the WML DO elements.
+* For more information about the DO tag, see http://www.w3schools.com/wap/tag_do.asp.
+* @code
+*  #include <BrCtlInterface.h>
+* @lib BrowserEngine.lib
+* @since 2.8
+* @file BrCtlInterface.h
+* @endcode     *
+*/
+class TBrCtlWmlServiceOption
+    {
+    public:
+        /**
+        * Constructor
+        * @since 2.8
+        * @param aText The text to display in the WML service options
+        * @param aElemID The element Id to use when the user selects this command
+        * @param aActualElemID Internal to the Browser Control. The host
+        * application should not modify this parameter.
+        */
+        TBrCtlWmlServiceOption(HBufC* aText, TUint aElemID, TUint aActualElemID);
+        /**
+        * Displays the text for the WML service options
+        * @since 2.8
+        * @return Text to display for the WML service options
+        */
+        inline const TDesC& Text() {return *iText;}
+        /**
+        * Gets the command ID to use when the user selects this command
+        * @since 2.8
+        * @return Element ID employed when the user selects this command
+        */
+        inline TUint ElemID(){return iElemID;}
+        /**
+        * Gets the actual element ID defined in the WML page.
+        * @since 2.8
+        * @return Actual element ID
+        * @attention This parameter is internal to the Browser Control.
+        * The host application should not modify this parameter.
+        */
+        inline TUint ActualElemID(){return iActualElemID;}
+
+        /**
+        * Destructor.
+        */
+        ~TBrCtlWmlServiceOption();
+
+    private:    // Data
+        /**
+        * Default constructor
+        * @since 2.8
+        */
+        TBrCtlWmlServiceOption() {};
+
+        // The text to display in the WML service options
+        HBufC* iText;
+        // The element Id to use when the user selects this command
+        TUint iElemID;
+        // The actual element Id
+        TUint iActualElemID;
+    };
+
+/**
+* The TBrCtlSubscribeTo class provides information of Subscribe to items.
+* @code
+*  #include <BrCtlInterface.h>
+* @lib BrowserEngine.lib
+* @since 2.8
+* @file BrCtlInterface.h
+* @endcode     *
+*/
+class TBrCtlSubscribeTo
+    {
+    public:
+        /**
+        * Constructor
+        * @since 3.0
+        * @param aText The text to display in the subscribe to option.  aText
+        *              is adopted.
+        * @param aCommandID The menu command Id to use when the user selects it.
+        */
+        TBrCtlSubscribeTo(const TPtrC& aTitle, const TPtrC& aUrl, TUint aCommandID);
+
+        /**
+        * Returns the title.
+        * @since 3.0
+        * @return The title.
+        */
+        inline const TPtrC& Title() {return iTitle;}
+
+        /**
+        * Returns the url.
+        * @since 3.0
+        * @return The url.
+        */
+        inline const TPtrC& Url() {return iUrl;}
+
+        /**
+        * Returns the command.
+        * @since 3.0
+        * @return The command.
+        */
+        inline TUint CommandID() {return iCommandID;}
+
+    private:
+        /**
+        * Default constructor
+        * @since 3.0
+        */
+        TBrCtlSubscribeTo();
+
+    private:    // Data
+        const TPtrC iTitle;
+        const TPtrC iUrl;
+
+        TUint iCommandID;
+    };
+
+/**
+* The MBrCtlStateChangeObserver class receives state-changed events.
+* At the present time, there is only one state-changed event.
+* This event is generated when the browser switches to and from
+* the Image Map view. In Image Map view, only an image map is displayed,
+* which enables the user to navigate. The host application can
+* implement this interface in order to find out when the view
+* changes to and from the Image Map view.
+* @code
+*  #include <BrCtlInterface.h>
+* @lib BrowserEngine.lib
+* @since 2.8
+* @file BrCtlInterface.h
+* @endcode     *
+*/
+class MBrCtlStateChangeObserver
+    {
+    public:
+        /**
+        * Notifies the Browser Control of a state-changed event.
+        * @param aState Indicates whether or not the browser is in Image Map view.
+        * Value:EStateImageMapView
+        * @param aValue Indicates the state being changed.
+        * Values:
+        * ETrue indicates entering Image Map view
+        * EFalse indicates exiting Image Map view
+        * @since 2.8
+        * @return void
+        */
+        virtual void StateChanged(TBrCtlDefs::TBrCtlState aState, TInt aValue) = 0;
+    };
+
+// CLASS DECLARATION
+/**
+*  This class provides a mechanism for the browser engine to pass commands to the client
+*
+*  @lib BrowserEngine.lib
+*  @since 3.1
+*/
+class MBrCtlCommandObserver
+    {
+    public: // New functions
+        /**
+        * Method to call client to execute commands
+        * @since 3.1
+        * @param A callback command
+        * @param Array of attribute names
+        * @param Array of attribute values
+        * @return void
+        */
+        virtual void HandleCommandL(TBrCtlDefs::TBrCtlClientCommands aCommand, const CArrayFix<TPtrC>& aAttributesNames,
+                                     const CArrayFix<TPtrC>& aAttributeValues) = 0;
+    };
+
+// CLASS DECLARATION
+/**
+*  This class provides a mechanism for the browser engine to interact with the widget host application
+*
+*  @lib BrowserEngine.lib
+*  @since 3.2
+*/
+class MWidgetCallback
+    {
+    public:
+        /**
+        * Navigates through your file system and selects a file of specific mime type;
+        * analogous to the Browse command in Windows.
+        * @since 3.2
+        * @param aSelectedFileName The selected file name.
+        * @param aMimeType The accepted mime type.
+        * @return ETrue if the user selected a file
+        * EFalse if the user cancelled the transaction and did not select a file.
+        * @attiontion Returned on cleanup stack. Browser control will free the buffer.
+        */
+        virtual TBool DialogMimeFileSelectLC(HBufC*& aSelectedFileName,
+                                 const TDesC& aMimeType) = 0;
+
+       /**
+        * Called to show or hide softkeys
+        * @since 3.1
+        * @param aVisible ETrue to show softkeys, EFalse when full screen is needed
+        */
+        virtual void SetSoftkeysVisible(TBool aVisible) = 0;
+
+        /**
+        * Called to change the display orientation to landscape
+        * @since 3.1
+        */
+        virtual void SetDisplayMode(TBrCtlDefs::TBrCtlOrientation aOrientation) = 0;
+
+        //Reserved for future use
+        virtual TInt Reserved_1(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_2(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_3(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_4(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_5(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_6(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_7(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_8(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_9(TAny*& a0, TAny* a1, TAny* a2) = 0;
+        virtual TInt Reserved_10(TAny*& a0, TAny* a1, TAny* a2) = 0;
+    };
+
+// CLASS DECLARATION
+/**
+*  This class provides an extension mechanism for the widget host app to interact with the browser engine
+*  This class includes the Widget specific extension needed in the browser engine
+*  @lib BrowserEngine.lib
+*  @since 3.2
+*/
+class MWidgetExtension
+    {
+    public: // New functions
+        /**
+        * Method to set parameters in the browser engine
+        * @since 3.2
+        * @param The widget identifier
+        * @param The value for the paramater
+        * @return void
+        */
+        virtual void SetParamL(TBrCtlDefs::TBrCtlWidgetParams aParam, const TDesC& aValue) = 0;
+
+        /**
+        * Method to set parameters in the browser engine
+        * @since 3.2
+        * @param The widget parameter aParam
+        * @param The value for the paramater
+        * @return void
+        */
+        virtual void SetParamL(TBrCtlDefs::TBrCtlWidgetParams aParam, TUint aValue) = 0;
+
+        /**
+        * Method to invoke callback function for right soft key
+        * @since 3.2
+        * @param none
+        * @return ETrue if there is a rightsoftkey callback, else EFalse
+        */
+        virtual TBool HandleCommandL( TInt aCommandId ) = 0;
+
+    };
+#endif      // BRCTLINTERFACE_H
+
+// End of File