#ifndef ICHROMEHTMLWRAPPER_H
#define ICHROMEHTMLWRAPPER_H

#ifdef _WIN32
#pragma once
#endif

#include "htmlmessages.h"

class CUtlString;
class IHTMLResponses;
struct HTMLCommandBuffer_t;


class IHTMLChromeController
{
public:
	virtual ~IHTMLChromeController() {}

	virtual bool Init(const char* pchHTMLCacheDir, const char* pchCookiePath) = 0;
	virtual void Shutdown() = 0;
	virtual bool RunFrame() = 0;


	virtual void SetWebCookie(const char* pchHostname, const char* pchKey, const char* pchValue, const char* pchPath, RTime32 nExpires = 0) = 0;
	virtual void GetWebCookiesForURL(CUtlString* pstrValue, const char* pchURL, const char* pchName) = 0;

	virtual void SetClientBuildID(uint64 ulBuildID) = 0;

	virtual bool BHasPendingMessages() = 0;

	virtual void CreateBrowser(IHTMLResponses* pBrowser, bool bPopupWindow, const char* pchUserAgentIdentifier) = 0;
	virtual void RemoveBrowser(IHTMLResponses* pBrowser) = 0;

	virtual void WakeThread() = 0;
	virtual HTMLCommandBuffer_t* GetFreeCommandBuffer(EHTMLCommands eCmd, int iBrowser) = 0;
	virtual void PushCommand(HTMLCommandBuffer_t*) = 0;

#ifdef DBGFLAG_VALIDATE
	virtual void Validate(CValidator& validator, const char* pchName) = 0;

	virtual bool ChromePrepareForValidate() = 0;
	virtual bool ChromeResumeFromValidate() = 0;
#endif

	virtual void SetCefThreadTargetFrameRate(uint32 nFPS) = 0;
};

#define CHROMEHTML_CONTROLLER_INTERFACE_VERSION "ChromeHTML_Controller_001"


#endif  