1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
|
// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef WEBKIT_GLUE_WEBKIT_GLUE_H_
#define WEBKIT_GLUE_WEBKIT_GLUE_H_
#include "base/basictypes.h"
#if defined(OS_WIN)
#include <windows.h>
#endif
#include <string>
#include <vector>
#include "base/clipboard.h"
#include "base/file_path.h"
#include "base/string16.h"
class GURL;
class SkBitmap;
class StringPiece;
class WebView;
struct WebPluginInfo;
namespace WebKit {
class WebFrame;
class WebString;
}
namespace webkit_glue {
//---- BEGIN FUNCTIONS IMPLEMENTED BY WEBKIT/GLUE -----------------------------
void SetJavaScriptFlags(const std::wstring& flags);
// Turn on the logging for notImplemented() calls from WebCore.
void EnableWebCoreNotImplementedLogging();
// Returns the text of the document element.
std::wstring DumpDocumentText(WebKit::WebFrame* web_frame);
// Returns the text of the document element and optionally its child frames.
// If recursive is false, this is equivalent to DumpDocumentText followed by
// a newline. If recursive is true, it recursively dumps all frames as text.
std::wstring DumpFramesAsText(WebKit::WebFrame* web_frame, bool recursive);
// Returns the renderer's description of its tree (its externalRepresentation).
std::wstring DumpRenderer(WebKit::WebFrame* web_frame);
// Returns a dump of the scroll position of the webframe.
std::wstring DumpFrameScrollPosition(WebKit::WebFrame* web_frame, bool recursive);
// Returns a dump of the given history state suitable for implementing the
// dumpBackForwardList command of the layoutTestController.
std::wstring DumpHistoryState(const std::string& history_state, int indent,
bool is_current);
// Cleans up state left over from the previous test run.
void ResetBeforeTestRun(WebView* view);
// Returns the WebKit version (major.minor).
std::string GetWebKitVersion();
// Called to override the default user agent with a custom one. Call this
// before anyone actually asks for the user agent in order to prevent
// inconsistent behavior.
void SetUserAgent(const std::string& new_user_agent);
// Returns the user agent to use for the given URL, which is usually the
// default user agent but may be overriden by a call to SetUserAgent() (which
// should be done at startup).
const std::string& GetUserAgent(const GURL& url);
// Creates serialized state for the specified URL. This is a variant of
// HistoryItemToString (in glue_serialize) that is used during session restore
// if the saved state is empty.
std::string CreateHistoryStateForURL(const GURL& url);
// Removes any form data state from the history state string |content_state|.
std::string RemoveFormDataFromHistoryState(const std::string& content_state);
#ifndef NDEBUG
// Checks various important objects to see if there are any in memory, and
// calls AppendToLog with any leaked objects. Designed to be called on shutdown
void CheckForLeaks();
#endif
// Decodes the image from the data in |image_data| into |image|.
// Returns false if the image could not be decoded.
bool DecodeImage(const std::string& image_data, SkBitmap* image);
// Tells the plugin thread to terminate the process forcefully instead of
// exiting cleanly.
void SetForcefullyTerminatePluginProcess(bool value);
// Returns true if the plugin thread should terminate the process forcefully
// instead of exiting cleanly.
bool ShouldForcefullyTerminatePluginProcess();
// File path string conversions.
FilePath::StringType WebStringToFilePathString(const WebKit::WebString& str);
WebKit::WebString FilePathStringToWebString(const FilePath::StringType& str);
//---- END FUNCTIONS IMPLEMENTED BY WEBKIT/GLUE -------------------------------
//---- BEGIN FUNCTIONS IMPLEMENTED BY EMBEDDER --------------------------------
// This function is called to request a prefetch of the entire URL, loading it
// into our cache for (expected) future needs. The given URL may NOT be in
// canonical form and it will NOT be null-terminated; use the length instead.
void PrecacheUrl(const char16* url, int url_length);
// This function is called to add a line to the application's log file.
void AppendToLog(const char* filename, int line, const char* message);
// Gather usage statistics from the in-memory cache and inform our host, if
// applicable.
void NotifyCacheStats();
// Glue to get resources from the embedder.
// Gets a localized string given a message id. Returns an empty string if the
// message id is not found.
string16 GetLocalizedString(int message_id);
// Returns the raw data for a resource. This resource must have been
// specified as BINDATA in the relevant .rc file.
StringPiece GetDataResource(int resource_id);
#if defined(OS_WIN)
// Loads and returns a cursor.
HCURSOR LoadCursor(int cursor_id);
#endif
// Glue to access the clipboard.
// Get a clipboard that can be used to construct a ScopedClipboardWriterGlue.
Clipboard* ClipboardGetClipboard();
// Tests whether the clipboard contains a certain format
bool ClipboardIsFormatAvailable(const Clipboard::FormatType& format);
// Reads UNICODE text from the clipboard, if available.
void ClipboardReadText(string16* result);
// Reads ASCII text from the clipboard, if available.
void ClipboardReadAsciiText(std::string* result);
// Reads HTML from the clipboard, if available.
void ClipboardReadHTML(string16* markup, GURL* url);
// Gets the directory where the application data and libraries exist. This
// may be a versioned subdirectory, or it may be the same directory as the
// GetExeDirectory(), depending on the embedder's implementation.
// Path is an output parameter to receive the path.
// Returns true if successful, false otherwise.
bool GetApplicationDirectory(std::wstring* path);
// Gets the URL where the inspector's HTML file resides. It must use the
// protocol returned by GetUIResourceProtocol.
GURL GetInspectorURL();
// Gets the protocol that is used for all user interface resources, including
// the Inspector. It must end with "-resource".
std::string GetUIResourceProtocol();
// Gets the directory where the launching executable resides on disk.
// Path is an output parameter to receive the path.
// Returns true if successful, false otherwise.
bool GetExeDirectory(std::wstring* path);
// Embedders implement this function to return the list of plugins to Webkit.
void GetPlugins(bool refresh, std::vector<WebPluginInfo>* plugins);
// Returns true if the plugins run in the same process as the renderer, and
// false otherwise.
bool IsPluginRunningInRendererProcess();
// Returns a bool indicating if the Null plugin should be enabled or not.
bool IsDefaultPluginEnabled();
#if defined(OS_WIN)
// Downloads the file specified by the URL. On sucess a WM_COPYDATA message
// will be sent to the caller_window.
bool DownloadUrl(const std::string& url, HWND caller_window);
#endif
// Returns the plugin finder URL.
bool GetPluginFinderURL(std::string* plugin_finder_url);
// Resolves the proxies for the url, returns true on success.
bool FindProxyForUrl(const GURL& url, std::string* proxy_list);
// Returns the locale that this instance of webkit is running as. This is of
// the form language-country (e.g., en-US or pt-BR).
std::wstring GetWebKitLocale();
// Close idle connections. Used for debugging.
void CloseIdleConnections();
// Enable or disable the disk cache. Used for debugging.
void SetCacheMode(bool enabled);
// ---- END FUNCTIONS IMPLEMENTED BY EMBEDDER ---------------------------------
} // namespace webkit_glue
#endif // WEBKIT_GLUE_WEBKIT_GLUE_H_
|