#ifndef ChromiumBridge_h
#define ChromiumBridge_h
#include "FileSystem.h"
#include "ImageSource.h"
#include "LinkHash.h"
#include "PassRefPtr.h"
#include "PasteboardPrivate.h"
#include <wtf/Vector.h>
typedef struct NPObject NPObject;
typedef struct _NPP NPP_t;
typedef NPP_t* NPP;
#if OS(WINDOWS)
typedef struct HFONT__* HFONT;
#endif
namespace WebCore {
class Color;
class Cursor;
class Document;
class Frame;
class GraphicsContext;
class Image;
class IntRect;
class KURL;
class String;
class Widget;
struct Cookie;
struct PluginInfo;
class ChromiumBridge {
public:
static bool clipboardIsFormatAvailable(PasteboardPrivate::ClipboardFormat, PasteboardPrivate::ClipboardBuffer);
static String clipboardReadPlainText(PasteboardPrivate::ClipboardBuffer);
static void clipboardReadHTML(PasteboardPrivate::ClipboardBuffer, String*, KURL*);
static void clipboardWriteSelection(const String&, const KURL&, const String&, bool);
static void clipboardWritePlainText(const String&);
static void clipboardWriteURL(const KURL&, const String&);
static void clipboardWriteImage(NativeImagePtr, const KURL&, const String&);
static void setCookies(const KURL& url, const KURL& firstPartyForCookies, const String& value);
static String cookies(const KURL& url, const KURL& firstPartyForCookies);
static bool rawCookies(const KURL& url, const KURL& firstPartyForCookies, Vector<Cookie>*);
static void deleteCookie(const KURL& url, const String& cookieName);
static bool cookiesEnabled(const KURL& url, const KURL& firstPartyForCookies);
static void prefetchDNS(const String& hostname);
static bool fileExists(const String&);
static bool deleteFile(const String&);
static bool deleteEmptyDirectory(const String&);
static bool getFileSize(const String&, long long& result);
static bool getFileModificationTime(const String&, time_t& result);
static String directoryName(const String& path);
static String pathByAppendingComponent(const String& path, const String& component);
static bool makeAllDirectories(const String& path);
static String getAbsolutePath(const String&);
static bool isDirectory(const String&);
static KURL filePathToURL(const String&);
#if OS(WINDOWS)
static bool ensureFontLoaded(HFONT font);
#endif
#if OS(LINUX)
static String getFontFamilyForCharacters(const UChar*, size_t numCharacters);
#endif
static void notifyFormStateChanged(const Document*);
#if ENABLE(DATABASE)
static PlatformFileHandle databaseOpenFile(const String& vfsFleName, int desiredFlags, PlatformFileHandle* dirHandle = 0);
static int databaseDeleteFile(const String& vfsFileName, bool syncDir = false);
static long databaseGetFileAttributes(const String& vfsFileName);
static long long databaseGetFileSize(const String& vfsFileName);
#endif
static void notifyJSOutOfMemory(Frame*);
static bool allowScriptDespiteSettings(const KURL& documentURL);
static String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String& challenge, const KURL& url);
static String computedDefaultLanguage();
static bool layoutTestMode();
static int memoryUsageMB();
static bool isSupportedImageMIMEType(const String& mimeType);
static bool isSupportedJavaScriptMIMEType(const String& mimeType);
static bool isSupportedNonImageMIMEType(const String& mimeType);
static String mimeTypeForExtension(const String& fileExtension);
static String mimeTypeFromFile(const String& filePath);
static String preferredExtensionForMIMEType(const String& mimeType);
static bool plugins(bool refresh, Vector<PluginInfo*>*);
static NPObject* pluginScriptableObject(Widget*);
static bool popupsAllowed(NPP);
static PassRefPtr<Image> loadPlatformImageResource(const char* name);
static bool sandboxEnabled();
static int screenDepth(Widget*);
static int screenDepthPerComponent(Widget*);
static bool screenIsMonochrome(Widget*);
static IntRect screenRect(Widget*);
static IntRect screenAvailableRect(Widget*);
static void setSharedTimerFiredFunction(void (*func)());
static void setSharedTimerFireTime(double fireTime);
static void stopSharedTimer();
static void decrementStatsCounter(const char* name);
static void incrementStatsCounter(const char* name);
static void suddenTerminationChanged(bool enabled);
static double currentTime();
#if OS(WINDOWS)
static void paintButton(
GraphicsContext*, int part, int state, int classicState, const IntRect&);
static void paintMenuList(
GraphicsContext*, int part, int state, int classicState, const IntRect&);
static void paintScrollbarArrow(
GraphicsContext*, int state, int classicState, const IntRect&);
static void paintScrollbarThumb(
GraphicsContext*, int part, int state, int classicState, const IntRect&);
static void paintScrollbarTrack(
GraphicsContext*, int part, int state, int classicState, const IntRect&, const IntRect& alignRect);
static void paintTextField(
GraphicsContext*, int part, int state, int classicState, const IntRect&, const Color&, bool fillContentArea, bool drawEdges);
static void paintTrackbar(
GraphicsContext*, int part, int state, int classicState, const IntRect&);
#endif
static void traceEventBegin(const char* name, void* id, const char* extra);
static void traceEventEnd(const char* name, void* id, const char* extra);
static LinkHash visitedLinkHash(const UChar* url, unsigned length);
static LinkHash visitedLinkHash(const KURL& base, const AtomicString& attributeURL);
static bool isLinkVisited(LinkHash);
static void widgetSetCursor(Widget*, const Cursor&);
static void widgetSetFocus(Widget*);
};
}
#endif