/*
* Copyright (c) 2005 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 WMLCONTROL_H
#define WMLCONTROL_H
// INCLUDES
#include <e32base.h>
#include <w32std.h>
#include <brctldefs.h>
#include "BrCtl.h"
#include "WmlEngineInterface.h"
#include "WmlContentInterface.h"
// CONSTANTS
_LIT ( KCrLf, "\r\n");
_LIT ( KHeaderBoundary, "\r\n\r\n" );
_LIT8( KHeaderBoundary8, "\r\n\r\n" );
_LIT ( KHeaderContentLocation, "Content-Location: " );
_LIT8( KHeaderSavePageProto, "SAVED-PAGE/3.1" );
_LIT8( KMultipartBoundaryMarker, "multipart/mixed; boundary=" );
_LIT8( KPartHeadersData, "Content-Location: %S\r\nContent-Type: %S;charset=%S\r\n\r\n" );
_LIT8( KPartHeadersImg, "Content-Location: %S\r\nContent-Type: %S\r\n\r\n" );
_LIT ( KSavePageDocTop, "SAVED-PAGE/3.1\r\nContent-Location: " );
_LIT8( KSavePageBoundary, "S60BrowserSavedPage" );
_LIT8( KSavedPageContentType, "multipart/mixed" );
// MACROS
// DATA TYPES
// FUNCTION PROTOTYPES
// FORWARD DECLARATIONS
class CView;
class CShell;
// CLASS DECLARATION
/**
*
* @lib resLoader.lib
* @since 3.0
*/
NONSHARABLE_CLASS(CWmlControl): public CBase, public MWmlEngineInterface
{
public: // Constructors and destructor
/**
* Destructor.
*/
virtual ~CWmlControl();
public: // new functions
/**
* StartLoadingResource
* Public Class Method
* Purpose
* @since 3.0
* @param MWebCoreResourceLoader& aWebCoreLoader
* @param const TDesC& aURL
* @param CArrayFix<TWebCoreKeyValuePair>* aCustomHeaders
* @return MWebCoreResourceHandle*
*/
CWmlResourceLoadListener* LoadResourceL( const TDesC& aURL, void* aLoadContext,
void* aPartialLoadCallback, TUint16 aTransId );
// Returns a WmlView reference
CView* WmlView() {return iWmlView;}
// Returns a WmlShell reference
CShell* WmlShell() {return iWmlShell;}
// Returns a WmlMode to set the right control
TBool WmlMode() { return iWmlMode; }
// Returns a WmlLink
TBool WmlLink() { return iWmlLink; }
// Returns the Application Id
TInt AppId() { return iApId; }
// Sets the AppId
void SetAppId(TInt aApId){ iApId = aApId; }
// Sets a WmlMode
void SetWmlMode(TBool aMode) { iWmlMode = aMode; }
// Sets the WmlLink
void SetWmlLink(TBool aLink) { iWmlLink = aLink; }
// Returns to the Browser Control info about the wml page
HBufC* CWmlControl::PageInfoLC(TBrCtlDefs::TBrCtlPageInfo aBrCtlPageInfo);
/**
* Update a Browser setting
* @since 3.1
* @param aSetting The setting to update
* @param aValue The new value of the setting
* @return void
*/
void SetBrowserSettingL(TUint aSetting, TUint aValue);
/**
* Sets a pointer to the active history controller
* @since 3.1
* @return void
*/
void SetHistoryController( HistoryControllerInterface* aHistoryController ) { iHistoryController = aHistoryController; }
/**
* return history controller
* @return history controller
*/
HistoryControllerInterface& HistoryController() const { return *iHistoryController; }
/**
* Accessor function to the MWKWmlInterface.
* @since 3.1
*/
CBrCtl* WmlControlGetBrCtl() const { return iBrCtl; }
MWmlInterface* WKWmlInterface() {return iWKWmlInterface; }
void InputElementEditComplete( TBool aInputConfirmed );
void GainFocus();
void LoseFocus();
TInt HandleDo( TUint32 aElemId );
TInt ProcessBack();
CArrayFixFlat<TBrCtlImageCarrier>* GetPageImagesL();
TBrCtlDefs::TBrCtlElementType GetFocusedElementType();
TWmlEngineDefs::THistoryStackPosition HistoryStackPosition();
void MakeVisible(TBool aVisible);
void SetFocus( TBool aFocus, TDrawNow aDrawNow );
void SetRect( const TRect &aRect );
//TBrowserStatusCode
TInt WMLPartialResponse( CWmlContentInterface* aWmlContentInterface,
const TUint16* aUri,
TPtr8& aBody,
void* aHeaders,
TUint8* aContentTypeString,
TUint8* aContentLocationString,
TBool aNoStore,
TUint8* aBoundaryString,
TUint16* aLastModified,
TUint16 aCharset,
TUint8* aCharsetString,
TUint aHttpStatus,
TUint8 aMethod,
TUint16 aTransId,
TInt aChunkIndex,
void* aCertInfo,
TUint aContentLength,
TInt aErr,
void* aLoadContext,
void* aPartialCallback );
CCoeControl* coeControl();
void WmlLoadUrlL( const TDesC& aUrl);
void LoadImages();
TRect WmlViewRectangle();
void ScrollTo(TPoint aPoint);
CWmlControl();
void SetCertInfo( const TCertInfo* aCertInfo );
const TCertInfo* CertInfo() const { return iCertInfo; }
void* loadContext() {return iWmlContentInterface->getLoadContext();}
void* partialLoadCallback() {return iWmlContentInterface->getPartialCallBack();}
TUint16 transId() {return iWmlContentInterface->getTransId();}
void WmlParameters( const char* data, int length, TDesC& contentType, TDesC& charset, TInt httpStatus, TInt chunkIndex, TDesC& url );
virtual TSize WMLDocumentSize();
virtual TPoint WMLDocumentPosition();
private:
/**
* C++ default constructor.
*/
//CWmlControl();
/**
* By default Symbian 2nd phase constructor is private.
*/
virtual void ConstructL( CBrCtl* aBrCtl, TRect& aRect, MWmlInterface* aWKWmlInterface);
/**
* For saving is WML page. The function is same as that of
* CWebKitControl::GenerateSavedPageL().
*/
HBufC* WMLGenerateSavedPageL();
private:
//
CShell* iWmlShell; // owned
//
CView* iWmlView; // owned
//
CBrCtl* iBrCtl;
//
TInt iApId;
//
TBool iWmlMode;
//
TBool iWmlLink;
//
const TCertInfo* iCertInfo; // owned
HistoryControllerInterface* iHistoryController;
MWmlInterface* iWKWmlInterface;
CWmlContentInterface* iWmlContentInterface;
RPointerArray<CWmlContentInterface> m_contentArray;
};
#endif // WMLCONTROL_H
// End of File