--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/wmlengine/src/MVC/include/MVCShell.h Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,554 @@
+/*
+* Copyright (c) 2000 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:
+*
+*/
+
+
+#ifndef __MVCSHELL_H
+#define __MVCSHELL_H
+
+
+#include <apmstd.h>
+#include "BrsrStatusCodes.h"
+#include "BrsrTypes.h"
+#include <badesca.h>
+#include <bldvariant.hrh>
+#include <charconv.h>
+#include <e32base.h>
+#include <e32std.h>
+#include <f32file.h>
+#include <ApEngineConsts.h>
+
+#include "BrCtlDialogsProvider.h"
+
+#include "HEDDocumentListener.h"
+#include "httploader_mlinkresolvercallbacks.h"
+#include "MSGMessageListener.h"
+#include "MVCViewListener.h"
+#include "nw_hed_appservices.h"
+#include "nw_errnotify.h"
+#include "nw_scrproxy.h"
+#include "nw_wae.h"
+#include "nwx_defs.h"
+#include "nwx_status.h"
+#include "urlloader_urlresponse.h"
+#include "EmbeddedDocExitObserver.h"
+//R
+#include "historystack.h"
+//#include "webkitview.h"
+#include "wmlcontrol.h"
+
+
+#ifdef __SERIES60_WIM
+#include "WimUi.h"
+#endif __SERIES60_WIM
+
+
+enum TUrlLoadState
+ {
+ // We are now loading the URL
+ EUrlLoadingProgressing,
+
+ // The loading progress has finished because of successful
+ // finish, user cancel or some other reason.
+ EUrlLoadingStopped,
+
+ // Reset iDoNotRestoreContentFlag in the BrowserUI
+ EResetDoNotRestoreContentFlag
+ };
+
+class CDataLoadInfo;
+
+const TInt KPanicKmShellPanicBase = -10000;
+const TInt KPanicKmShellSingletonAlreadyCreated = KPanicKmShellPanicBase - 1;
+const TInt KPanicKmShellViewPtrIsNotSet = KPanicKmShellPanicBase - 2;
+
+class CView;
+class CCnvCharacterSetConverter;
+class CContentLoader;
+class CBrCtl;
+
+NONSHARABLE_CLASS(CShell): public CBase, public MHttpLoader_LinkResolverCallbacks,
+ public MViewListener, public MHEDDocumentListener, public MMessageListener
+{
+ public: // Epoc constructor and destructor
+
+ static CShell* NewL (CView* aEpoc32View, CBrCtl* aBrCtl, MWmlInterface* aWKWmlInterface, CWmlControl* aWmlControl);
+
+ ~CShell();
+
+
+ public: // Public exported methods
+
+ /**
+ *
+ * Starts loading of content from given URL.
+ *
+ * @param URL to be loaded
+ * @return KErrNone if successfull, KErrGeneral on error
+ */
+ TInt Load(const TDesC& aUrl, TInt aApId, NW_Cache_Mode_t cacheMode=NW_CACHE_NORMAL);
+
+ TInt CancelAll();
+
+ TInt FreeConnection();
+ TInt HistoryLoad(THistoryStackDirection aDirection);
+
+ /**
+ *
+ * Process the Back event
+ * Now that we have multiple views (normal view and image map view), the processing
+ * of the back event may be different depending on which view we are in. If we
+ * are in the image map view, we will want to switch back to the normal view if the
+ * back button is selected. If we are in normal view, we will want to call HistoryLoad
+ * and load the previous page.
+ *
+ * @param None
+ * @return KErrNone if successfull, KErrUnknown on error
+ */
+ TInt ProcessBack();
+
+ /**
+ *
+ * Switch to image map view
+ * Now that we have multiple views (normal view and image map view).If we select
+ * an image map we want to switch to image map view
+ *
+ * @param None
+ * @return KErrNone if successfull, KErrUnknown on error
+ */
+ TInt SwitchToImgMapView();
+
+ /**
+ *
+ * Switch from image map view
+ * Now that we have multiple views (normal view and image map view).If we
+ * are in the image map view, we will want to switch back to the normal view.
+ *
+ * @param None
+ * @return KErrNone if successfull, KErrUnknown on error
+ */
+ TInt SwitchFromImgMapViewIfNeeded();
+
+ void SetView(CView* aEpocView); // Does not take the ownership!
+
+ TInt HandleDo( TUint32 aElemId );
+
+ /**
+ *
+ * Get a history list
+ *
+ * @param aUrls Descriptor array to append
+ * @return Error code
+ */
+ TInt GetHistoryList (CArrayFix<TBrCtlSelectOptionData>& aHistoryList);
+
+ /**
+ *
+ * Gives current position in the history stack
+ *
+ * @return THistoryStackPosition enumeration
+ */
+ TWmlEngineDefs::THistoryStackPosition HistoryStackPosition();
+
+ /**
+ * Loads page from history by given index
+ *
+ * @param history list
+ * @return KErrNone if found, otherwise KErrNotFound
+ */
+ TInt LoadHistoryEntry( CArrayFix<TBrCtlSelectOptionData>& aHistoryList );
+
+ /**
+ *
+ * Gets the current URL as HBufC*, Leaves on error
+ * Returns at least zero-length HBufC on success
+ *
+ * @return HBufC* Current URL
+ */
+
+ HBufC* GetCurrentUrlInHBufCL() const;
+
+ /**
+ *
+ * Gets the current title of the content as HBufC*, leaves on error
+ * Returns at least zero-length HBufC on success
+ *
+ * @return HBufC* Current WML deck / XHTML Page <title> element contents
+ */
+ HBufC* GetCurrentTitleInHBufCL(TBool& aStripUrl) const;
+
+ TUint16 SaveToFileL(TDesC& aFileName) const;
+
+ /**
+ *
+ * Gets the WML of the domtree
+ * Returns pointer to HBufC
+ *
+ * @return HBufC* extracted WML MarkUp
+ */
+
+ HBufC8* GetPageAsWMLMarkUp();
+
+
+ /**
+ *
+ * Gets the text of the domtree
+ * Returns pointer to HBufC
+ *
+ * @return HBufC* extracted text
+ */
+ HBufC* GetPageAsTextL();
+
+
+ /**
+ *
+ * Gets the charset from the domtree
+ * Returns pointer to the charset
+ *
+ * @return charset
+ */
+ const NW_Uint8* GetCharsetFromResponse();
+
+ /**
+ *
+ *
+ */
+ void ShowImagesL() const;
+
+ /**
+ *it must be called when the browser view loses focus
+ */
+ void LoseFocus();
+
+ /**
+ *it must be called when the browser view gains focus
+ */
+ void GainFocus();
+
+ /**
+ *provide for browser to reset the history list, when close softkey is selected.
+ */
+ void ClearHistoryList();
+
+ // Called when selected character set changes
+ void CharacterSetChangedL(TUint aSelectedCharacterSet);
+
+ void* GetCertInfo();
+
+ public: // public not exported methods
+
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Called to obtain the current URL.
+ * @since 2.8
+ * @param
+ * @return The current URL
+ */
+ HBufC* CurrentUrlLC();
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Called to obtain a pointer to the Link Resolver
+ * @since 2.8
+ * @return The Browser Control's Link Resolver
+ */
+ MBrCtlLinkResolver* LinkResolver();
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Called to check if the Host Application should be called to resolve the URL
+ * @since 2.8
+ * @return ETrue if the Host Application will resolve the URL, EFalse otherwise
+ */
+ TBool ShouldResolveUrl(TBool aIsTopLevel, NW_Uint8 aReason);
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Called to call LoadUrlL
+ * @since 3.0
+ * @return void
+ */
+ void LoadLinkUrl(const TDesC& aUrl, void* aHeaders );
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Called to call PostUrlL
+ * @since 3.0
+ * @return void
+ */
+ void PostLinkUrl(TDesC& aUrl, TDesC8& aPostData, TDesC& aContentType);
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Called to load Embeded content
+ * @since 3.1
+ * @return void
+ */
+ CWmlResourceLoadListener* LoadEmbededUrl( const TDesC& aUrl, void *aLoadContext,
+ void* aPartialLoadCallback, TUint16 aTransId );
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Called to set the OEB event
+ * @since 3.1
+ * @return void
+ */
+ void SetOnEnterBackwordReason();
+
+ /**
+ * From MHttpLoader_LinkResolverCallbacks Convert a charset from string to IANA encoding
+ * @since 2.8
+ * @return IANA encoding of the charset
+ */
+ TUint16 ConvertCharset(const TDesC8& aCharset);
+
+ TUint ConvertFromForeignCharSetL(void* response);
+ TUint ConvertFromForeignChunkL( NW_Uint32 foreignEncoding, void* inBuf, TInt * numUnconvertible, TInt* indexFirstUnconvertible, void** outBuf);
+ static TBrowserStatusCode ConvertToForeignCharSet(void* ucsText);
+ TUint ConvertToForeignCharSetL(void* text);
+ NW_Text_t* ConvertToValidUrl (NW_Text_t* url, TBrowserStatusCode* status);
+ /**
+ * From MHttpLoader_ToUiCallbacks Called when the user need to be notified with an error
+ * @since 2.0
+ * @return void
+ */
+ void CoverageEvent (TInt aError);
+ CBrCtl* BrCtl() {return iBrCtl;}
+ /**
+ * From MHttpLoader_ToUiCallbacks Called after disconnect is complete.
+ * @since 2.0
+ * @param
+ * @return void
+ */
+ void Disconnect_Resp() {};
+
+ TBrowserStatusCode DocumentChanged (NW_HED_DocumentRoot_t* documentRoot,
+ CActive::TPriority aMessagePriority );
+
+ TBrowserStatusCode DocumentChangedPartial (NW_HED_DocumentRoot_t* documentRoot,
+ CActive::TPriority aMessagePriority );
+
+ NW_Uint32 GetCharsetUid(NW_Uint32 internalEncoding);
+ NW_Uint32 GetCharsetUid2(NW_Uint32 ianaEncoding);
+ NW_Uint32 GetUidFromCharset( NW_Uint8* charset, NW_Uint32 charsetLength );
+ NW_Text_t* GetCurrentUrl ();
+ NW_Text_t* GetCurrentUrlL ();
+ const NW_Text_t* GetCurrentTitle ();
+ inline NW_HED_DocumentRoot_t* GetDocumentRoot() { return iDocumentRoot; };
+ NW_LMgr_RootBox_t* GetRootBox ();
+ TBrowserStatusCode GetUseNumberBuf (NW_ADT_DynamicVector_t* dynamicVector, void** ptr );
+ TBrowserStatusCode GetUseNumberContent (NW_ADT_DynamicVector_t *dynamicVector);
+ inline CView* GetView() { return iView; };
+ TBool HandleDownloadL(RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray);
+ void HandleError (TBrowserStatusCode status);
+ void FormattingComplete ();
+ void HandleMessage (NW_Msg_Message_t* message);
+ TBrowserStatusCode IsActive (NW_HED_DocumentRoot_t* documentRoot, NW_Bool state);
+ NW_Bool LoadEnd (NW_HED_DocumentRoot_t* documentRoot, NW_Int16 errorClass, NW_WaeError_t error);
+ TBrowserStatusCode LoadProgressOn (NW_Uint16 transactionId);
+ TBrowserStatusCode LoadProgressOff (NW_Uint16 transactionId);
+ void NewDocument (NW_HED_DocumentRoot_t* documentRoot, NW_HED_UrlRequest_t* urlRequest, NW_Bool aDestroyBoxTree);
+ void DestroyPreviousDocument();
+ void RestoreDocument ();
+ void NotifyProgress (TBrCtlDefs::TBrCtlLoadEvent aEvent, TUint32 aSize, TUint16 aTransactionId);
+ MBrCtlSpecialLoadObserver* GetLoadObserver ();
+ static TBrowserStatusCode NW_Http_ConnNeeded (TInt* aConnectionPtr, TInt* aSockSvrHandle, TBool* aNewConn, TApBearerType* aBearerType);
+// static TBrowserStatusCode NW_UI_AboutToLoadPageL( NW_Uint32 aNoteType );
+ static TBrowserStatusCode NW_UI_ConvertFromForeignCharSet (void* ctx, NW_Url_Resp_t* response);
+ static TBrowserStatusCode NW_UI_ConvertToForeignCharSet (void* ctx, NW_String_t* text);
+ static TBrowserStatusCode NW_UI_ConvertFromForeignChunk ( void* ctx, NW_Uint32 foreignEncoding, void* inBuf, TInt * numUnconvertible, TInt* indexFirstUnconvertible, void** outBuf);
+ static void NW_UI_DialogListSelect (NW_Dlg_ListSelect_t* data, void* callbackCtx, NW_Dlg_ListSelectCB_t *callback );
+ static void NW_UI_DialogPrompt (NW_Dlg_Prompt_t* data, void* callbackCtx, NW_Dlg_PromptCB_t *callback);
+ static void NW_UI_DialogInputPrompt (NW_Dlg_InputPrompt_t *data, void* callbackCtx, NW_Dlg_InputPromptCB_t *callback );
+ static void NW_UI_DialogSelectOption (NW_Dlg_SelectData_t *data, void* callbackCtx, NW_Dlg_SelectCB_t* callback );
+ /* Return localized string for 'back', 'reset', 'select', 'submit' */
+ static NW_Ucs2* NW_UI_GetLocalizedString (NW_Uint32 type);
+ void NW_UI_GetUserAuthenticationDataL(const NW_Ucs2* aUri, const NW_Ucs2* aUsername, const NW_Ucs2* aRealm,
+ NW_Ucs2** aRetUsername, NW_Ucs2** aRetPassword,
+ TBool aBasicAuthentication = EFalse);
+ static void NW_UI_GetUserRedirectionData (void* wae, const NW_Ucs2* originalUrl, const NW_Ucs2* redirectedUrl,
+ void *callbackCtx, NW_Wae_UserRedirectionCB_t *callback);
+ static TBrowserStatusCode NW_UI_HttpError (void *userAgent, const NW_WaeHttpStatus_t httpError,
+ const NW_Ucs2 *uri, void *callback_ctx, NW_ErrorCB_t *callback);
+ /**
+ *
+ * Query if we are in image map view
+ * We have multiple views (image map view or normal view)
+ *
+ * @param None
+ * @return KErrNone if successfull, KErrUnknown on error
+ */
+ static TBool NW_UI_IsImageMapView();
+ static void NW_UI_NotifyCoverageEvent (TInt aError);
+ static TBrowserStatusCode NW_UI_NotifyError (void *userAgent, const TBrowserStatusCode status, void *callback_ctx, NW_ErrorCB_t *callback);
+ // Display the object info dialog box
+ static NW_Bool NW_UI_ShowObjectDialog();
+ static void NW_UI_SoftKey_UpdateSoftKeys (NW_SoftKeyText_t softKeyText);
+ static TBrowserStatusCode NW_UI_StartContentLoad (void *userAgent, const NW_Ucs2* urlName);
+ static TBrowserStatusCode NW_UI_StopContentLoad (void *userAgent, const NW_Ucs2* urlName);
+ static TInt NW_UI_SwitchFromImgMapViewIfNeeded();
+ static TInt NW_UI_SwitchToImgMapView();
+ static TBrowserStatusCode NW_UI_UrlLoadProgressOn (void *wae, NW_Uint16 transactionId);
+ static void NW_UI_ViewImage (void* rawData, NW_Int32 length, NW_Bool isWbmp);
+ /* display a alert dialog to the user */
+ static void NW_UI_WmlScriptDlgAlert (void* wae, const NW_Ucs2* message, void* callback_ctx, NW_ScrProxy_DlgAlertCB_t* callback );
+ /* display a confirm dialog to the user */
+ static void NW_UI_WmlScriptDlgConfirm (void *wae, const NW_Ucs2 *message, const NW_Ucs2 *yesMessage,
+ const NW_Ucs2 *noMessage, void *callback_ctx, NW_Dlg_ConfirmCB_t *callback );
+ /* display a prompt dialog to the user */
+ static void NW_UI_WmlScriptDlgPrompt (void *wae, const NW_Ucs2 *message, const NW_Ucs2 *defaultInput,
+ void *callback_ctx, NW_ScrProxy_DlgPromptCB_t *callback );
+ void OptionListInit(); // just forwards call to CEpoc32View
+ void OptionListAddItem( const TText* aText, const TUint32 aElemID, const TInt aElType ); // just forwards call to CEpoc32View
+ NW_Bool ReportError (NW_HED_DocumentRoot_t* documentRoot, NW_Int16 errorClass, NW_WaeError_t error,
+ ReportErrorCallback* callback);
+ TBrowserStatusCode SendRedrawMsg (NW_Bool drawNow);
+ TBrowserStatusCode SendRelayoutMsg (NW_Bool createTabList);
+ TUint SelectedCharacterSet() const {return iSelectedCharacterSet;}
+ TBrowserStatusCode SetAnchorName (NW_Text_t* anchorName);
+ void SetFileOpenedByDocHandler( TBool aFileOpenedByDocHandler );
+ TBrowserStatusCode ShowNamedBox (NW_LMgr_Box_t* boxTree, const NW_Text_t* targetName);
+ /**
+ * From MHttpLoader_ToUiCallbacks Called after shutdown is complete.
+ * @since 2.0
+ * @param
+ * @return void
+ */
+ void Shutdown_Resp() {};
+ TBrowserStatusCode SwitchLayout (NW_Bool aVerticalLayout, NW_Bool aReformatBoxTree);
+ void UpdateSoftKeys();
+ void UpdateTitle();
+ void UrlLoadStateChanged (TBrCtlDefs::TBrCtlLoadEvent aEvent);
+
+ // Following functions are for ECMAScript support
+ static void WindowAlert (void* browserApp_Ctx, NW_Ucs2* msg);
+ static NW_Bool WindowConfirm (void* browserApp_Ctx, NW_Ucs2* msg, NW_Ucs2* yesMsg, NW_Ucs2* noMsg);
+ static NW_Ucs2* WindowPrompt (void* browserApp_Ctx, NW_Ucs2* msg, NW_Ucs2* defaultVal);
+
+ static NW_Ucs2* WindowPromptL (void* browserApp_Ctx, NW_Ucs2* msg, NW_Ucs2* defaultVal);
+ static void WindowOpen(void* browserApp_Ctx, NW_Ucs2* url, NW_Ucs2* target, NW_Uint32 reason);
+
+ /**
+ * Request the host applicaion to open the URL in a new window
+ * @since 3.0
+ * @param aUrl The Url of the request to be done in the new window
+ * @param aTargetName The name of the new window
+ * @param aReason The reason for opening the new window
+ * @param aMethod The method to be used for fetching the supplied url
+ * @param aContentType If the method is POST, this is the content type of the data to be posted
+ * @param aPostData If the method is POST, this is the data to be posted
+ * @param aBoundary The boundary used if the content is multipart/form-data
+ * @param aReserved For future use
+ * @return Return Value is for future reference and is currently ignored
+ */
+ void WindowOpenAndPostL(TUint16* url, TUint16* target, TUint32 reason,
+ TUint16 method, TDesC8* contentType, TDesC8* postData,
+ TDesC8* aBoundary, void* reserved);
+
+ /**
+ *
+ * @since 3.0
+ * @param url
+ * @param target
+ * @param reason
+ */
+ void WindowOpenL(TUint16* url, TUint16* target, TUint32 reason);
+
+ TBool Exiting() {return iExiting;};
+
+ // Support for AboutToLoadPage and the UI
+ TBool SecureItemsInNonSecurePage() { return iSecureItemsInNonSecurePage; }
+ TBool NonSecureItemsInSecurePage() { return iNonSecureItemsInSecurePage; }
+
+ TInt GetCharsetAndCharsetStringFromUid(TUint aUid, TUint16* aCharset,
+ const TUint8** aCharsetString);
+ TBrowserStatusCode StartDataLoad (TDesC& aUrl, CDataLoadInfo* aDataLoadInfo,
+ NW_MVC_ILoadListener_t* loadListener, TUint16* aTransId,
+ void* aOwner, void* aClientData, void* aLoadRecipient, TUint8 aLoadType);
+
+ TBrowserStatusCode PostUrl(const TDesC& aUrl,
+ const TDesC8& aContentType, const TDesC8& aPostData,
+ const TDesC8* aBoundary, void* aReserved);
+
+ static TInt RunBGTask(TAny* aShell);
+ void StartIdle() {if (!iIdle->IsActive()) iIdle->Start(TCallBack(RunBGTask, this));}
+
+ /**
+ * Create observer to delete temp files when the embedded application exists
+ * @param TFilename Name and path for the temporary file
+ * @return NULL if creation failed;
+ */
+ MApaEmbeddedDocObserver* CreateEmbeddedDocObserver( TFileName aFilename, RFs& aRfs);
+
+ void WmlShellLoadUrlL( const TDesC& aUrl, TInt aAppId );
+ public: // Public member variables
+ TBool iEmbedded;
+ TInt iApId;
+ CContentLoader* iContentLoader;
+ RFs iRfs;
+
+ private: // Private methods
+
+ CShell( CView* aEpoc32View, CBrCtl* aBrCtl );
+ void ConstructL (TBool aUseWsp, MWmlInterface* aWmlInterface, CWmlControl* aWmlControl );
+ TBrowserStatusCode DisplayDocument ();
+ void DisplayError (NW_Int16 errorClass, NW_WaeError_t error);
+ TBrowserStatusCode InitComponents ();
+ TBrowserStatusCode InitializeClass (const NW_Osu_Hwnd_t hWnd);
+ // check whether the charset is supported and whether its char converter is in the ROM
+ NW_Bool IsConversionSupported(NW_Uint32 uid, NW_Bool * ConverterAvailable);
+ static void NW_UI_DoDialogSelectOptionL( NW_Dlg_SelectData_t *data, void* callbackCtx,
+ NW_Dlg_SelectCB_t* callback );
+ /* display a confirm dialog to the user */
+ static void NW_UI_WmlScriptDlgConfirmL (void *wae, const NW_Ucs2 *message, const NW_Ucs2 *yesMessage,
+ const NW_Ucs2 *noMessage, void *callback_ctx, NW_Dlg_ConfirmCB_t *callback );
+ static void NW_UI_WmlScriptDlgPromptL( void* wae, const NW_Ucs2 *message, const NW_Ucs2 *defaultInput,
+ HBufC*& aReturnedInput );
+ TInt SetBoxTree( NW_LMgr_Box_t* aBoxTree ); // just forwards call to CEpoc32View
+ TBrowserStatusCode StartLoad (const NW_Text_t* url, NW_MVC_ILoadListener_t* loadListener, NW_Cache_Mode_t cacheMode);
+
+ private: // Private member variables
+
+ CView* iView;
+ CBrCtl* iBrCtl;
+ TBool iIsEpoc32ShellDestroyed;// The instance is set to true in the
+ // destructor, and is used not to delegate
+ CCnvCharacterSetConverter* iCharacterSetConverter;
+ TUint iSelectedCharacterSet;
+ TUint iCurrentConverter;
+ CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iArrayOfCharacterSetsAvailable;
+
+ NW_MVC_ILoadListener_t* iLoadListener;
+ NW_Osu_Hwnd_t iHWnd;
+ NW_HED_DocumentRoot_t* iDocumentRoot;
+ NW_HED_DocumentNode_t* iPrevDocument;
+ NW_Uint16 iNumUpdates;
+ NW_Int16 iNumUpdatesPartial;
+ NW_Uint16 iNumRelayouts;
+ NW_Uint16 iNumRedraws;
+ NW_Bool iDisplayDocumentInvoked ;
+ TBool iSecureItemsInNonSecurePage;
+ TBool iNonSecureItemsInSecurePage;
+
+ NW_LMgr_Box_t* iBoxTree;
+
+ /* Do background tasks */
+ CIdle* iIdle;
+
+ CEmbeddedDocExitObserver* iDocExitObserver;
+ TBool iExiting;
+
+ // flag to indicate the file processed by document handler
+ // e.g. unknowCH invoke docHanlder to open a .txt file
+ TBool iFileOpenedByDocHandler;
+ CWmlControl* iWmlControl;
+};
+
+#endif