
#include "CWCBrowserControlFactory.h"

#include <brctlinterface.h>

_LIT(KWebKitLibrary, "z:\\sys\\bin\\WebKit.dll");
_LIT(KBrowserEngineLibrary, "z:\\sys\\bin\\BrowserEngine.dll");

#ifdef __WINS__
const TInt KCreateBrowserControlOrdinal = 10;
#else
const TInt KCreateBrowserControlOrdinal = 1;
#endif

typedef CBrCtlInterface* (*TCreateBrowserControlFunc)(
        CCoeControl*, TRect, TUint, TUint,
        MBrCtlSoftkeysObserver*, MBrCtlLinkResolver*, MBrCtlSpecialLoadObserver*,
        MBrCtlLayoutObserver*, MBrCtlDialogsProvider*, MBrCtlWindowObserver*,
	    MBrCtlDownloadObserver*);

CWCBrowserControlFactory::CWCBrowserControlFactory()
    {
    }
    
void CWCBrowserControlFactory::ConstructL()
    {
    TInt error = iBrowserLibrary.Load(KWebKitLibrary);
    if (error != KErrNone)
        {
        User::LeaveIfError(iBrowserLibrary.Load(KBrowserEngineLibrary));
        }
    }

CWCBrowserControlFactory* CWCBrowserControlFactory::NewL()
    {
    CWCBrowserControlFactory* self = new(ELeave) CWCBrowserControlFactory;
    CleanupStack::PushL(self);
    self->ConstructL();
    CleanupStack::Pop(self);
    return self;
    }
    
CWCBrowserControlFactory::~CWCBrowserControlFactory()
    {
    iBrowserLibrary.Close();
    }

CBrCtlInterface* CWCBrowserControlFactory::CreateBrowserControlL(
        CCoeControl* aParent, 
        TRect aRect,
        TUint aBrCtlCapabilities, 
        TUint aCommandIdBase,
        MBrCtlSoftkeysObserver* aBrCtlSoftkeysObserver,
        MBrCtlLinkResolver* aBrCtlLinkResolver,
        MBrCtlSpecialLoadObserver* aBrCtlSpecialLoadObserver,
        MBrCtlLayoutObserver* aBrCtlLayoutObserver,
        MBrCtlDialogsProvider* aBrCtlDialogsProvider,
        MBrCtlWindowObserver* aBrCtlWindowObserver,
        MBrCtlDownloadObserver* aBrCtlDownloadObserver)
    {
    TCreateBrowserControlFunc CreateBrowserControlFuncL = 
        reinterpret_cast<TCreateBrowserControlFunc>(iBrowserLibrary.Lookup(KCreateBrowserControlOrdinal));

    return CreateBrowserControlFuncL( 
            aParent, 
            aRect, 
            aBrCtlCapabilities,
            aCommandIdBase, 
            aBrCtlSoftkeysObserver,
            aBrCtlLinkResolver,
            aBrCtlSpecialLoadObserver,
            aBrCtlLayoutObserver,
            aBrCtlDialogsProvider,
            aBrCtlWindowObserver,
            aBrCtlDownloadObserver);
    }
    
// End of File
