• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 OS(WINDOWS)
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 String cookieRequestHeaderFieldValue(const KURL& url, const KURL& firstPartyForCookies);
89         static bool rawCookies(const KURL& url, const KURL& firstPartyForCookies, Vector<Cookie>*);
90         static void deleteCookie(const KURL& url, const String& cookieName);
91         static bool cookiesEnabled(const KURL& url, const KURL& firstPartyForCookies);
92 
93         // DNS ----------------------------------------------------------------
94         static void prefetchDNS(const String& hostname);
95 
96         // File ---------------------------------------------------------------
97         static bool fileExists(const String&);
98         static bool deleteFile(const String&);
99         static bool deleteEmptyDirectory(const String&);
100         static bool getFileSize(const String&, long long& result);
101         static bool getFileModificationTime(const String&, time_t& result);
102         static String directoryName(const String& path);
103         static String pathByAppendingComponent(const String& path, const String& component);
104         static bool makeAllDirectories(const String& path);
105         static String getAbsolutePath(const String&);
106         static bool isDirectory(const String&);
107         static KURL filePathToURL(const String&);
108 
109         // Font ---------------------------------------------------------------
110 #if OS(WINDOWS)
111         static bool ensureFontLoaded(HFONT font);
112 #endif
113 #if OS(LINUX)
114         static String getFontFamilyForCharacters(const UChar*, size_t numCharacters);
115 #endif
116 
117         // Forms --------------------------------------------------------------
118         static void notifyFormStateChanged(const Document*);
119 
120         // HTML5 DB -----------------------------------------------------------
121 #if ENABLE(DATABASE)
122         // Returns a handle to the DB file and ooptionally a handle to its containing directory
123         static PlatformFileHandle databaseOpenFile(const String& vfsFleName, int desiredFlags, PlatformFileHandle* dirHandle = 0);
124         // Returns a SQLite code (SQLITE_OK = 0, on success)
125         static int databaseDeleteFile(const String& vfsFileName, bool syncDir = false);
126         // Returns the attributes of the DB file
127         static long databaseGetFileAttributes(const String& vfsFileName);
128         // Returns the size of the DB file
129         static long long databaseGetFileSize(const String& vfsFileName);
130 #endif
131 
132         // JavaScript ---------------------------------------------------------
133         static void notifyJSOutOfMemory(Frame*);
134         static bool allowScriptDespiteSettings(const KURL& documentURL);
135 
136         // Keygen -------------------------------------------------------------
137         static String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String& challenge, const KURL& url);
138 
139         // Language -----------------------------------------------------------
140         static String computedDefaultLanguage();
141 
142         // LayoutTestMode -----------------------------------------------------
143         static bool layoutTestMode();
144 
145         // Memory -------------------------------------------------------------
146         // Returns the current space allocated for the pagefile, in MB.
147         // That is committed size for Windows and virtual memory size for POSIX
148         static int memoryUsageMB();
149 
150         // MimeType -----------------------------------------------------------
151         static bool isSupportedImageMIMEType(const String& mimeType);
152         static bool isSupportedJavaScriptMIMEType(const String& mimeType);
153         static bool isSupportedNonImageMIMEType(const String& mimeType);
154         static String mimeTypeForExtension(const String& fileExtension);
155         static String mimeTypeFromFile(const String& filePath);
156         static String preferredExtensionForMIMEType(const String& mimeType);
157 
158         // Plugin -------------------------------------------------------------
159         static bool plugins(bool refresh, Vector<PluginInfo*>*);
160         static NPObject* pluginScriptableObject(Widget*);
161         static bool popupsAllowed(NPP);
162 
163         // Resources ----------------------------------------------------------
164         static PassRefPtr<Image> loadPlatformImageResource(const char* name);
165 
166         // Sandbox ------------------------------------------------------------
167         static bool sandboxEnabled();
168 
169         // Screen -------------------------------------------------------------
170         static int screenDepth(Widget*);
171         static int screenDepthPerComponent(Widget*);
172         static bool screenIsMonochrome(Widget*);
173         static IntRect screenRect(Widget*);
174         static IntRect screenAvailableRect(Widget*);
175 
176         // SharedTimers -------------------------------------------------------
177         static void setSharedTimerFiredFunction(void (*func)());
178         static void setSharedTimerFireTime(double fireTime);
179         static void stopSharedTimer();
180 
181         // StatsCounters ------------------------------------------------------
182         static void decrementStatsCounter(const char* name);
183         static void incrementStatsCounter(const char* name);
184 
185         // Sudden Termination
186         static void suddenTerminationChanged(bool enabled);
187 
188         // SystemTime ---------------------------------------------------------
189         static double currentTime();
190 
191         // Theming ------------------------------------------------------------
192 #if OS(WINDOWS)
193         static void paintButton(
194             GraphicsContext*, int part, int state, int classicState, const IntRect&);
195         static void paintMenuList(
196             GraphicsContext*, int part, int state, int classicState, const IntRect&);
197         static void paintScrollbarArrow(
198             GraphicsContext*, int state, int classicState, const IntRect&);
199         static void paintScrollbarThumb(
200             GraphicsContext*, int part, int state, int classicState, const IntRect&);
201         static void paintScrollbarTrack(
202             GraphicsContext*, int part, int state, int classicState, const IntRect&, const IntRect& alignRect);
203         static void paintTextField(
204             GraphicsContext*, int part, int state, int classicState, const IntRect&, const Color&, bool fillContentArea, bool drawEdges);
205         static void paintTrackbar(
206             GraphicsContext*, int part, int state, int classicState, const IntRect&);
207 #endif
208 
209         // Trace Event --------------------------------------------------------
210         static void traceEventBegin(const char* name, void* id, const char* extra);
211         static void traceEventEnd(const char* name, void* id, const char* extra);
212 
213         // Visited links ------------------------------------------------------
214         static LinkHash visitedLinkHash(const UChar* url, unsigned length);
215         static LinkHash visitedLinkHash(const KURL& base, const AtomicString& attributeURL);
216         static bool isLinkVisited(LinkHash);
217 
218         // Widget -------------------------------------------------------------
219         static void widgetSetCursor(Widget*, const Cursor&);
220         static void widgetSetFocus(Widget*);
221     };
222 
223 } // namespace WebCore
224 
225 #endif
226