Renaming some parameters passed to DB-related methods to better
[WebKit-https.git] / WebCore / platform / chromium / ChromiumBridge.h
1 /*
2  * Copyright (c) 2008, 2009, Google Inc. All rights reserved.
3  * 
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  * 
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  * 
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef ChromiumBridge_h
32 #define ChromiumBridge_h
33
34 #include "FileSystem.h"
35 #include "ImageSource.h"
36 #include "LinkHash.h"
37 #include "PassRefPtr.h"
38 #include "PasteboardPrivate.h"
39
40 #include <wtf/Vector.h>
41
42 typedef struct NPObject NPObject;
43 typedef struct _NPP NPP_t;
44 typedef NPP_t* NPP;
45
46 #if PLATFORM(WIN_OS)
47 typedef struct HFONT__* HFONT;
48 #endif
49
50 namespace WebCore {
51
52     class Color;
53     class Cursor;
54     class Document;
55     class Frame;
56     class GraphicsContext;
57     class Image;
58     class IntRect;
59     class KURL;
60     class String;
61     class Widget;
62
63     struct Cookie;
64     struct PluginInfo;
65
66     // An interface to the embedding layer, which has the ability to answer
67     // questions about the system and so on...
68
69     class ChromiumBridge {
70     public:
71         // Clipboard ----------------------------------------------------------
72         static bool clipboardIsFormatAvailable(PasteboardPrivate::ClipboardFormat, PasteboardPrivate::ClipboardBuffer);
73
74         static String clipboardReadPlainText(PasteboardPrivate::ClipboardBuffer);
75         static void clipboardReadHTML(PasteboardPrivate::ClipboardBuffer, String*, KURL*);
76
77         // Only the clipboardRead functions take a buffer argument because 
78         // Chromium currently uses a different technique to write to alternate
79         // clipboard buffers.
80         static void clipboardWriteSelection(const String&, const KURL&, const String&, bool);
81         static void clipboardWritePlainText(const String&);
82         static void clipboardWriteURL(const KURL&, const String&);
83         static void clipboardWriteImage(NativeImagePtr, const KURL&, const String&);
84
85         // Cookies ------------------------------------------------------------
86         static void setCookies(const KURL& url, const KURL& firstPartyForCookies, const String& value);
87         static String cookies(const KURL& url, const KURL& firstPartyForCookies);
88         static bool rawCookies(const KURL& url, const KURL& firstPartyForCookies, Vector<Cookie>*);
89         static void deleteCookie(const KURL& url, const String& cookieName);
90
91         // DNS ----------------------------------------------------------------
92         static void prefetchDNS(const String& hostname);
93
94         // File ---------------------------------------------------------------
95         static bool fileExists(const String&);
96         static bool deleteFile(const String&);
97         static bool deleteEmptyDirectory(const String&);
98         static bool getFileSize(const String&, long long& result);
99         static bool getFileModificationTime(const String&, time_t& result);
100         static String directoryName(const String& path);
101         static String pathByAppendingComponent(const String& path, const String& component);
102         static bool makeAllDirectories(const String& path);
103         static String getAbsolutePath(const String&);
104         static bool isDirectory(const String&);
105         static KURL filePathToURL(const String&);
106
107         // Font ---------------------------------------------------------------
108 #if PLATFORM(WIN_OS)
109         static bool ensureFontLoaded(HFONT font);
110 #endif
111 #if PLATFORM(LINUX)
112         static String getFontFamilyForCharacters(const UChar*, size_t numCharacters);
113 #endif
114
115         // Forms --------------------------------------------------------------
116         static void notifyFormStateChanged(const Document*);
117
118         // HTML5 DB -----------------------------------------------------------
119 #if ENABLE(DATABASE)
120         // Returns a handle to the DB file and ooptionally a handle to its containing directory
121         static PlatformFileHandle databaseOpenFile(const String& vfsFleName, int desiredFlags, PlatformFileHandle* dirHandle = 0);
122         // Returns a SQLite code (SQLITE_OK = 0, on success)
123         static int databaseDeleteFile(const String& vfsFileName, bool syncDir = false);
124         // Returns the attributes of the DB file
125         static long databaseGetFileAttributes(const String& vfsFileName);
126         // Returns the size of the DB file
127         static long long databaseGetFileSize(const String& vfsFileName);
128 #endif
129
130         // JavaScript ---------------------------------------------------------
131         static void notifyJSOutOfMemory(Frame*);
132         static bool allowScriptDespiteSettings(const KURL& documentURL);
133
134         // Keygen -------------------------------------------------------------
135         static String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String& challenge, const KURL& url);
136
137         // Language -----------------------------------------------------------
138         static String computedDefaultLanguage();
139
140         // LayoutTestMode -----------------------------------------------------
141         static bool layoutTestMode();
142
143         // Memory -------------------------------------------------------------
144         // Returns the current space allocated for the pagefile, in MB.
145         // That is committed size for Windows and virtual memory size for POSIX
146         static int memoryUsageMB();
147
148         // MimeType -----------------------------------------------------------
149         static bool isSupportedImageMIMEType(const String& mimeType);
150         static bool isSupportedJavaScriptMIMEType(const String& mimeType);
151         static bool isSupportedNonImageMIMEType(const String& mimeType);
152         static String mimeTypeForExtension(const String& fileExtension);
153         static String mimeTypeFromFile(const String& filePath);
154         static String preferredExtensionForMIMEType(const String& mimeType);
155
156         // Plugin -------------------------------------------------------------
157         static bool plugins(bool refresh, Vector<PluginInfo*>*);
158         static NPObject* pluginScriptableObject(Widget*);
159         static bool popupsAllowed(NPP);
160
161         // Resources ----------------------------------------------------------
162         static PassRefPtr<Image> loadPlatformImageResource(const char* name);
163
164         // Sandbox ------------------------------------------------------------
165         static bool sandboxEnabled();
166
167         // Screen -------------------------------------------------------------
168         static int screenDepth(Widget*);
169         static int screenDepthPerComponent(Widget*);
170         static bool screenIsMonochrome(Widget*);
171         static IntRect screenRect(Widget*);
172         static IntRect screenAvailableRect(Widget*);
173
174         // SharedTimers -------------------------------------------------------
175         static void setSharedTimerFiredFunction(void (*func)());
176         static void setSharedTimerFireTime(double fireTime);
177         static void stopSharedTimer();
178
179         // StatsCounters ------------------------------------------------------
180         static void decrementStatsCounter(const char* name);
181         static void incrementStatsCounter(const char* name);
182
183         // Sudden Termination
184         static void suddenTerminationChanged(bool enabled);
185
186         // SystemTime ---------------------------------------------------------
187         static double currentTime();
188
189         // Theming ------------------------------------------------------------
190 #if PLATFORM(WIN_OS)
191         static void paintButton(
192             GraphicsContext*, int part, int state, int classicState, const IntRect&);
193         static void paintMenuList(
194             GraphicsContext*, int part, int state, int classicState, const IntRect&);
195         static void paintScrollbarArrow(
196             GraphicsContext*, int state, int classicState, const IntRect&);
197         static void paintScrollbarThumb(
198             GraphicsContext*, int part, int state, int classicState, const IntRect&);
199         static void paintScrollbarTrack(
200             GraphicsContext*, int part, int state, int classicState, const IntRect&, const IntRect& alignRect);
201         static void paintTextField(
202             GraphicsContext*, int part, int state, int classicState, const IntRect&, const Color&, bool fillContentArea, bool drawEdges);
203         static void paintTrackbar(
204             GraphicsContext*, int part, int state, int classicState, const IntRect&);
205 #endif
206
207         // Trace Event --------------------------------------------------------
208         static void traceEventBegin(const char* name, void* id, const char* extra);
209         static void traceEventEnd(const char* name, void* id, const char* extra);
210
211         // Visited links ------------------------------------------------------
212         static LinkHash visitedLinkHash(const UChar* url, unsigned length);
213         static LinkHash visitedLinkHash(const KURL& base, const AtomicString& attributeURL);
214         static bool isLinkVisited(LinkHash);
215
216         // Widget -------------------------------------------------------------
217         static void widgetSetCursor(Widget*, const Cursor&);
218         static void widgetSetFocus(Widget*);
219     };
220
221 } // namespace WebCore
222
223 #endif