webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/inc/BrCtl.h
changeset 0 dd21522fd290
child 25 0ed94ceaa377
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/inc/BrCtl.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,741 @@
+/*
+* ==============================================================================
+*  Name        : BrCtl.h
+*  Part of     : WebKit \ BrowserControl
+*  Interface   : Browser Control API
+*  Description : Implementation of the Browser Control
+*  Version     : 3.1
+*
+*    Copyright (c) 2006, Nokia Corporation
+*    All rights reserved.
+*
+*   Redistribution and use in source and binary forms, with or without
+*   modification, are permitted provided that the following conditions
+*   are met:
+*
+*      * Redistributions of source code must retain the above copyright
+*        notice, this list of conditions and the following disclaimer.
+*      * Redistributions in binary form must reproduce the above copyright
+*        notice, this list of conditions and the following disclaimer in
+*        the documentation and/or other materials provided with the
+*        distribution.
+*      * Neither the name of the Nokia Corporation nor the names of its
+*        contributors may be used to endorse or promote products derived
+*        from this software without specific prior written permission.
+*
+*   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+*   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+*   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+*   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+*   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+*   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+*   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+*   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+*   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+*   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+*   USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+*   DAMAGE.
+*
+*    Please see file patentlicense.txt for further grants.
+* ==============================================================================
+*/
+
+
+#ifndef BRCTL_H
+#define BRCTL_H
+
+//  INCLUDES
+#include <BrCtlInterface.h>
+
+#include "BrCtlDefs.h"
+#include "HistoryInterface.h"
+
+#include "WmlInterface.h"
+//  CONSTANTS
+
+// DATA TYPES
+enum TBrCtlLoadState
+    {
+    ELoadStateIdle,
+    ELoadStateRequestSent,
+    ELoadStateResponseInProgress,
+    ELoadStateLoadingChildren
+    };
+
+const int KMainScrollbarWidth = 5;
+
+// FORWARD DECLARATIONS
+class CBrCtl;
+class WebView;
+class HistoryHandler;
+class MWmlEngineInterface;
+class MWmlInterface;
+class MWidgetExtension;
+class MWidgetCallback;
+class SettingsContainer;
+//class ScrollingProvider;
+class CPeriodic;
+class WebDataLoadConsumer;
+class HistoryHandler;
+class HttpDownload;
+class CPageScaler;
+class CWmlDispatcher;
+class CWmlContentInterface;
+
+namespace WebCore {
+    class FormData;
+}
+
+
+class HistoryHandler : public HistoryCallback
+{
+public:
+    static HistoryHandler* initWithHandle(CBrCtl* brctl);
+    ~HistoryHandler();
+    void updateGlobalHistoryForStandardLoad(const TPtrC8& url, const TPtrC8& requestUrl,
+        TPtrC& formContentType, WebCore::FormData* formData);
+    void setCurrentEntryTitle(TPtrC title);
+    void updateGlobalHistoryForReload ();
+    HistoryHandler(CBrCtl* brctl) { m_brctl = brctl; m_historyController = NULL; }
+public: // from HistoryCallback
+    virtual CCoeControl* parent();
+    virtual TPoint currentPosition(); 
+    virtual int currentZoomLevel(); 
+    virtual int minZoomLevel(); 
+    virtual bool wmlMode();
+    virtual void setWmlMode(bool aWml);
+    virtual void doHistoryGet(TPtrC8 url, TBrCtlDefs::TBrCtlCacheMode cacheMode);
+    virtual int doHistoryPost(TPtrC8 url, TBrCtlDefs::TBrCtlCacheMode cacheMode, TPtrC contentType, WebCore::FormData* formData);
+    virtual void stateChanged(bool enter);
+    virtual void navigationStateChanged(TBrCtlDefs::TBrCtlState state, bool value);
+    virtual CFbsBitmap* scaledPage() ;
+    virtual void makeVisible(bool visible);
+    virtual WebSurface* surface();
+    virtual void handleWmlBackL();
+    virtual bool dialogSelectOption(SelectArray* historyList);
+    virtual void setUse(bool use, WebCore::FormData* formData);
+    HistoryControllerInterface* historyController() { return m_historyController; }
+    virtual void deferTimers(bool option);
+
+private:
+    CBrCtl* m_brctl;
+    HistoryControllerInterface* m_historyController;
+};
+
+
+/**
+*  Implementation of the Browser Control
+*
+*  @lib webkit.dll
+*  @since 3.0
+*/
+class CBrCtl : public CBrCtlInterface, public MBrCtlLoadEventObserver
+    {
+    public:     // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+          MBrCtlSoftkeysObserver       // Default: browser does not update softkeys
+          MBrCtlLinkResolver           // Must be provided if ECapabilityClientResolveEmbeddedURL or ECapabilityClientNotifyURL is set
+          MBrCtlSpecialLoadObserver    // Default: DocumentHandler and SchemeDispatcher are not called by browser and connection created by Proxy Filter
+          MBrCtlLayoutObserver         // Default: Browser does not update scroll location
+          MBrCtlDialogsProvider        // Default: Use Browser's own dialogs
+          MBrCtlWindowObserver         // Default:
+          MBrCtlDownloadObserver     // Default:
+        */
+        static CBrCtlInterface* NewL(CCoeControl* aParent,
+                                     TRect aRect,
+                                     TUint aBrCtlCapabilities,
+                                     TUint aCommandIdBase,
+                                     MBrCtlSoftkeysObserver* aBrCtlSoftkeysObserver,
+                                     MBrCtlLinkResolver* aBrCtlLinkResolver,
+                                     MBrCtlSpecialLoadObserver* aBrCtlSpecialLoadObserver,
+                                     MBrCtlLayoutObserver* aBrCtlLayoutObserver,
+                                     MBrCtlDialogsProvider* aBrCtlDialogsProvider,
+                                     MBrCtlWindowObserver* aBrCtlWindowObserver,
+                                     MBrCtlDownloadObserver* aBrCtlDownloadObserver );
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CBrCtl();
+
+    public: // Class methods
+
+        /**
+        * Returns the parent CCoeControl
+        * @since 3.0
+        */
+        CCoeControl* CCoeControlParent()        { return m_coectrlparent; }
+        WebView* webView()              const   { return m_webView; } 
+        void LoadDllWmlEngineL(); 
+        void UnloadDllWmlEngine();
+        MWmlEngineInterface* wmlEngineInterface() const { return m_wmlEngineInterface; }
+        void setWmlMode (bool aWml);
+        bool wmlMode() const {return m_wmlMode;}
+        void resetWmlServiceOptions();
+        void wmlServiceOptionsAddItemL( const TText* aText, TUint32 aActualElemID, TInt aIsPrev );
+        void postUrlL(TDesC& aUrl, TDesC8& aPostData, TDesC& aContentType);
+        void setWmlPageScaler( CPageScaler& aPageScaler ) { m_wmlPageScaler = &aPageScaler; }
+        CPageScaler& wmlPageScaler() const { return *m_wmlPageScaler; }
+        CWmlDispatcher* wmlDispatcher() const {return m_wmlDispatcher;}
+        void setWmlDispatcher(CWmlDispatcher* dispatcher){m_wmlDispatcher = dispatcher;}
+        void loadResource(TDesC8& url, CWmlContentInterface* content );
+        TBrCtlWmlServiceOption* firstPrevDoElement() const { return m_firstPrevDoElement; }
+        HBufC* fileNameToUrlLC(const TDesC& aFileName);
+        void SetScriptLogMode(TInt aMode);
+        
+    public: // Methods from CBrCtlInterface
+
+        /**
+        * From CBrCtlInterface
+        * Pass a command to the Browser Control
+        * @since 3.0
+        * @param aCommand The command that the Browser Control should process
+        * @return void
+        */
+        IMPORT_C void HandleCommandL(TInt aCommand);
+
+        /**
+        * From CBrCtlInterface Pass a command to the Browser Control
+        * @since 2.8
+        * @param aCommand The command that the Browser Control should process
+        * @param aTransId The transaction Id associated with this command
+        * @return void
+        */
+        IMPORT_C void HandleDownloadCommandL(TUint16 aTransId, TBrCtlDefs::TBrCtlDownloadCmd aCommand);
+
+        /**
+        * From CBrCtlInterface
+        * Return the display size that would be needed to see all the content
+        * @since 3.0
+        * @return The display size that would be needed to see all the content
+        */
+        IMPORT_C TSize ContentSize();
+
+        /**
+        * From CBrCtlInterface
+        * Update a Browser Control setting
+        * @since 3.0
+        * @param aSetting The setting to update
+        * @param aValue The new value of the setting
+        * @return void
+        */
+        IMPORT_C void SetBrowserSettingL(TUint aSetting, TUint aValue);
+
+        /**
+        * From CBrCtlInterface
+        * Get a setting from the Browser Control
+        * @since 3.0
+        * @param aSetting The setting to get
+        * @return The value of the setting
+        */
+        IMPORT_C TUint BrowserSettingL(TUint aSetting);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to display the content of a buffer
+        * @since 3.0
+        * @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
+        */
+        IMPORT_C void LoadDataL(const TDesC& aUrl,
+                                const TDesC8& aData,
+                                const TDataType& aDataType,
+                                TUid aCharsetUid);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to display content incrementaly
+        * @since 3.0
+        * @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
+        */
+        IMPORT_C void InitLoadDataL(const TDesC& aUrl,
+                                    const TDataType& aDataType,
+                                    TUid aCharsetUid,
+                                    TUint aContentLength,
+                                    MBrCtlDataLoadSupplier* aBrCtlDataLoadSupplier,
+                                    MBrCtlDataLoadConsumer** aBrCtlDataLoadConsumer);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to load a url
+        * @since 3.0
+        * @param aUrl The url to load
+        * @param aApId The Access Point Id to use
+        * @param aBrCtlCacheMode The cache mode to use
+        * @return void
+        */
+        IMPORT_C void LoadUrlL(const TDesC& aUrl,
+                               TInt aApId = -1,
+                               TBrCtlDefs::TBrCtlCacheMode aBrCtlCacheMode = TBrCtlDefs::ECacheModeNormal);
+
+        /**
+        * 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 void PostUrlL (const TDesC& aUrl, 
+                                const TDesC8& aContentType, 
+                                const TDesC8& aPostData, 
+                                const TDesC8* aBoundary, 
+                                TAny* aReserved);
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to load and display a file from the file system
+        * @since 3.0
+        * @param aFileName The name of the file
+        * @return void
+        */
+        IMPORT_C void LoadFileL(const TDesC& aFileName);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to load and display a file from the file system
+        * @since 3.0
+        * @param aFileHandle The handle of the file
+        * @return void
+        */
+        IMPORT_C void LoadFileL(RFile& aFileHandle);
+
+        /**
+        * From CBrCtlInterface
+        * Return the WML Options for the current page
+        * @since 3.0
+        * @param
+        * @return The WML Options for the current page
+        */
+        IMPORT_C RPointerArray<TBrCtlWmlServiceOption>* WMLOptionMenuItemsL();
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to add its own options to the option menu
+        * @since 3.0
+        * @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 void AddOptionMenuItemsL(CEikMenuPane& aMenuPane, TInt aResourceId, TInt aAfter=-1);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to clear the cache
+        * @since 3.0
+        * @return The number of bytes that were freed from cache
+        */
+        IMPORT_C TUint ClearCache();
+
+        /**
+        * From CBrCtlInterface
+        * Ask the Browser Control if a URL is in cache
+        * @since 3.0
+        * @param aUrl The Url
+        * @return ETrue if a specific Url is in cache
+        */
+        IMPORT_C TBool IsUrlInCache(TDesC& aUrl);
+
+        /**
+        * From CBrCtlInterface
+        * Ask the Browser Control to clear a URL from the cache
+        * @since 3.0
+        * @param aUrl The Url
+        * @return KErrNone, or an error code
+        */
+        IMPORT_C TInt ClearItemInCache(TDesC& aUrl);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to return info about the page. The info is returned on the Cleanup Stack.
+        * @since 3.0
+        * @param aBrCtlPageInfo The type of requested info
+        * @return void
+        */
+        IMPORT_C HBufC* PageInfoLC(TBrCtlDefs::TBrCtlPageInfo aBrCtlPageInfo);
+
+        /**
+        * From CBrCtlInterface
+        * Query the Browser Control if there is a previous or next
+        * (depending on aDirection) element in history stack
+        * @since 3.0
+        * @return ETrue if can go aDirection, EFalse otherwise
+        */
+        IMPORT_C TBool NavigationAvailable(TBrCtlDefs::TBrCtlNavigationDirection aDirection);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to save the current content to a file
+        * @since 3.0
+        * @param aFileName The name of the file to use for saving the content
+        * @return The number of bytes in the saved file
+        */
+        IMPORT_C TUint16 SaveToFileL(const TDesC& aFileName);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to pass the server's certificate info for the current page
+        * @since 3.0
+        * @return Certificate info of the server of the current page
+        */
+        IMPORT_C const TCertInfo* CertInfo();
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to register for load events
+        * @since 3.0
+        * @param aBrCtlLoadEventObserver A load events observer to add
+        * @return void
+        */
+        IMPORT_C void AddLoadEventObserverL(MBrCtlLoadEventObserver* aBrCtlLoadEventObserver);
+
+        /**
+        * From CBrCtlInterface
+        * Request the Browser Control to unregister for load events
+        * @since 3.0
+        * @param aBrCtlLoadEventObserver A load events observer to remove
+        * @return void
+        */
+        IMPORT_C void RemoveLoadEventObserver(MBrCtlLoadEventObserver* aBrCtlLoadEventObserver);
+
+        /**
+        * From CBrCtlInterface
+        * Return the number of images in the current page
+        * @since 3.0
+        * @param
+        * @return The number of images in the current page
+        */
+        IMPORT_C TInt ImageCountL();
+
+        /**
+        * From CBrCtlInterface
+        * Returns the focused element
+        * @since 3.0
+        * @return The type of the focused element
+        */
+        IMPORT_C TBrCtlDefs::TBrCtlElementType FocusedElementType();
+
+        /**
+        * From CBrCtlInterface
+        * Register an observer for state change changes
+        * @since 3.0
+        * @param The observer to register
+        * @return void
+        */
+        IMPORT_C void AddStateChangeObserverL(MBrCtlStateChangeObserver* aBrCtlStateChangeObserver);
+
+        /**
+        * From CBrCtlInterface
+        * Unregister an observer for state changes
+        * @since 3.0
+        * @param The observer to unregister
+        * @return void
+        */
+        IMPORT_C void RemoveStateChangeObserver(MBrCtlStateChangeObserver* aBrCtlStateChangeObserver);
+
+        /**
+        * From CBrCtlInterface
+        * Returns the version info requested
+        * @since 3.0
+        * @param The observer to unregister
+        * @return The version control info
+        */
+        IMPORT_C HBufC* VersionInfoLC(TBrCtlDefs::TBrCtlVersionInfo aVersionInfo);
+
+        /**
+        * 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
+        */
+        IMPORT_C void SetSelfDownloadContentTypesL(TDesC& aContentTypes);
+
+        /**
+        * Update a Browser Control parameter.
+        * @since 2.8
+        * @param aParam The parameter to update
+        * @param aValue The new value of the parameter
+        * @return void
+        */
+        IMPORT_C void SetParamL(TBrCtlDefs::TBrCtlParams aParam, const TDesC& aValue);
+
+        /**
+        * 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 void LoadSavedPageL(const TDesC& aUid, TDesC& aSavedPageBuffer);
+
+        /**
+        * Return the zoom levels index
+        * @since 3.0
+        * @return const RArray<TUint>&
+        */
+        IMPORT_C RArray<TUint>* ZoomLevels() const;
+
+        /**
+        * Return information about the linked feeds in the current page - used to
+        * build a "Subscribe to" submenu.
+        * @since 3.0
+        * @param aItems Information about the linked feeds in the current page.
+        * @return void
+        */
+        IMPORT_C const RPointerArray<TBrCtlSubscribeTo>& SubscribeToMenuItemsL();
+
+        /**
+        * 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 thumbnail
+        * @return favion icon or page icon
+        */
+        IMPORT_C CGulIcon* GetBitmapData(const TDesC& aUrl, TBrCtlDefs::TBrCtlBitmapInfo aBitmapInfo);
+
+        /**
+        * Register a client interface for the browser engine
+        * @since 2.8
+        * @param The observer to register
+        * @return void
+        */
+        IMPORT_C void AddCommandObserverL(MBrCtlCommandObserver* aBrCtlCommandObserver);
+
+        /**
+        * Unregister a client interface for the browser engine
+        * @since 2.8
+        * @param The observer to unregister
+        * @return void
+        */
+        IMPORT_C void RemoveCommandObserver(MBrCtlCommandObserver* aBrCtlCommandObserver);
+
+
+   public: // Methods from CCoeControl
+
+        /**
+        * From CCoeControl
+        * Return the minimum size the Browser Control can use
+        * @since 3.0
+        * @return The minimum size that the Browser Control can use
+        */
+        IMPORT_C TSize MinimumSize();
+
+        /**
+        * From CCoeControl
+        * Pass key events to the Browser Control
+        * @since 3.0
+        * @param aKeyEvent The key event
+        * @param aType The key code
+        * @return If the Browser Control consumed the key event or not
+        */
+        IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode);
+
+        /**
+        * From CCoeControl
+        * Sets that the Browser Control has keyboard focus.
+        * @since 3.0
+        * @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
+        */
+        IMPORT_C void SetFocus(TBool aFocus, TDrawNow aDrawNow = ENoDrawNow);
+        
+        /*
+        * 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 TBool OkToExit();
+
+        /**
+        * Perform the incremental find operation
+        * @since 3.0
+        * @return TBrCtlFindResponse
+        */
+        IMPORT_C int FindKeyword( const TDesC& aKeyword );
+
+        /**
+        * Continue the incremental find operation
+        * @since 3.0
+        * @return TBrCtlFindResponse
+        */
+        IMPORT_C TBrCtlDefs::TBrCtlFindResponse FindKeywordAgain( TBool aFowardDirection );
+        
+        IMPORT_C MWidgetExtension* CreateWidgetExtensionL(MWidgetCallback& aWidgetCallback);
+  
+        /**
+        * 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 TBrCtlImageCarrier* FocusedImageLC();
+        
+        /**
+        * From CCoeControl
+        * Sets that the Browser Control visible.
+        * @since 3.0
+        * @param aVisible If the Browser Control is visible or invisible
+        * @return void
+        */
+        void MakeVisible(TBool aVisible);
+
+        /**
+        * From CCoeControl
+        * Handle changes in size of the display.
+        */
+        void Draw(const TRect& aRect) const;
+
+        MBrCtlSpecialLoadObserver* brCtlSpecialLoadObserver() const { return m_brCtlSpecialLoadObserver; }
+        MBrCtlDownloadObserver* brCtlDownloadObserver();
+        MBrCtlLinkResolver* brCtlLinkResolver() const { return m_brCtlLinkResolver; }
+        MBrCtlDialogsProvider* brCtlDialogsProvider() const { return m_brCtlDialogsProvider; }
+        MBrCtlWindowObserver* brCtlWindowObserver() const { return m_brCtlWindowObserver; }
+        MBrCtlLayoutObserver* brCtlLayoutObserver() const { return m_brCtlLayoutObserver; }
+        MBrCtlSoftkeysObserver* brCtlSoftkeysObserver() const { return m_brCtlSoftkeysObserver; }
+        
+        unsigned int commandIdBase() const { return m_commandIdBase; }
+        unsigned int capabilities() const { return m_capabilities; }
+        SettingsContainer* settings() const { return m_settingsContainer; }
+        CBrCtl* getWindowL(TDesC& windowName, bool userGesture);
+        
+        void reportStateChanged(TBrCtlDefs::TBrCtlState state, bool enter);
+        void showHorizontalScrollbar(bool show);
+        void drawScrollbar();
+        void showWindow();
+        void closeWindowSoon();
+        void doCloseWindowSoon();
+        TBool sendCommandsToClient(TBrCtlDefs::TBrCtlClientCommands aCommand,
+                                    const CArrayFix<TPtrC>& aAttributesNames,
+                                    const CArrayFix<TPtrC>& aAttributeValues );
+        void endLoadData();
+        void updateDefaultSoftkeys();
+        void setCertInfo(TCertInfo* aCertInfo) { m_certInfo = aCertInfo; }
+        
+        void updateScrollbars(int documentHeight, int displayHeight, int displayPosY,
+            int documentWidth, int displayWidth, int displayPosX);
+        bool hasHorizontalScrollbar() { return m_hasHorizontalScrollbar; }
+
+    public: // from MBrCtlLoadEventObserver
+
+        void HandleBrowserLoadEventL( TBrCtlDefs::TBrCtlLoadEvent aBrCtlLoadEvent,
+            TUint aSize, TUint16 aTransactionId );
+
+        HistoryHandler* historyHandler() { return m_historyHandler; }
+
+    protected:  // Functions from CCoeControl
+
+        /**
+        * From CCoeControl
+        * Handle changes in size of the display.
+        */
+        void SizeChanged();
+
+        /**
+        * From CCoeControl
+        * Get the number of controls in the Browser Control
+        */
+        TInt CountComponentControls() const;
+
+        /**
+        * From CCoeControl
+        * Get a specified control with a given index
+        */
+        CCoeControl* ComponentControl(TInt aIndex) const;
+        void doEnableFavicon();
+        static TInt doCloseCb(TAny* aPtr);
+        static TInt doEnableFaviconCb(TAny* aPtr);
+
+    private:    // Constructors and destructor
+
+        /**
+        * C++ default constructor.
+        */
+        CBrCtl( CCoeControl* aParent,
+        TUint aBrCtlCapabilities,
+        TUint aCommandIdBase,
+        MBrCtlSoftkeysObserver* aBrCtlSoftkeysObserver,
+        MBrCtlLinkResolver* aBrCtlLinkResolver,
+        MBrCtlSpecialLoadObserver* aBrCtlSpecialLoadObserver,
+        MBrCtlLayoutObserver* aBrCtlLayoutObserver,
+        MBrCtlDialogsProvider* aBrCtlDialogsProvider,
+        MBrCtlWindowObserver* aBrCtlWindowObserver,
+        MBrCtlDownloadObserver* aBrCtlDownloadObserver );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL(CCoeControl* aParent, TRect& aRect);
+
+    private:
+        void LoadResourceFileL();
+        int getMainScrollbarWidth() const;
+
+    private:    // Class data
+        CCoeControl* m_coectrlparent;
+        TRect        m_rect;
+        WebView*     m_webView;
+        HistoryHandler* m_historyHandler;
+        SettingsContainer* m_settingsContainer;
+        WebDataLoadConsumer* m_dataLoadConsumer;        
+        
+        RPointerArray<TBrCtlSubscribeTo> m_subscribeToItems;
+        RPointerArray<HBufC> m_subscribeToUrls;
+        RPointerArray<MBrCtlLoadEventObserver> iLoadEventObserversArray;
+        RPointerArray<MBrCtlCommandObserver> m_commandObserverArray;
+
+        // tot:fixme
+        MBrCtlSpecialLoadObserver* m_brCtlSpecialLoadObserver;
+        MBrCtlLinkResolver* m_brCtlLinkResolver;
+        MBrCtlDialogsProvider* m_brCtlDialogsProvider;
+        MBrCtlWindowObserver* m_brCtlWindowObserver;
+        MBrCtlSoftkeysObserver* m_brCtlSoftkeysObserver;
+        MBrCtlLayoutObserver* m_brCtlLayoutObserver;
+        RPointerArray<MBrCtlStateChangeObserver> m_stateChangeObserverArray;
+        unsigned int m_commandIdBase;
+        unsigned int m_capabilities;
+        TInt m_resourceFile;
+        CPeriodic* m_timer;
+        bool m_wmlMode;
+        bool m_suspendTimers;
+        MWmlEngineInterface* m_wmlEngineInterface;
+        RLibrary  m_Library;
+        MWmlInterface* m_WmlInterface;
+        TCertInfo* m_certInfo;
+        int m_documentHeight;
+        int m_displayHeight;
+        int m_displayPosY;
+        int m_documentWidth;
+        int m_displayWidth;
+        int m_displayPosX;
+        bool m_hasHorizontalScrollbar;
+        bool m_wmlUnloadPending;
+        bool m_ownsLayoutObserver;
+        bool m_ownsDialogsProvider;
+        CPageScaler* m_wmlPageScaler;
+        CWmlDispatcher* m_wmlDispatcher;
+        RPointerArray<TBrCtlWmlServiceOption>   m_wmlServiceOption;
+        TBrCtlWmlServiceOption*                 m_firstPrevDoElement;
+		MBrCtlDownloadObserver*                 m_brCtlDownloadObserver;
+
+};
+
+#endif      // BRCTL_H
+
+// End of File