diff options
-rw-r--r-- | chrome/browser/renderer_host/render_sandbox_host_linux.cc | 120 | ||||
-rw-r--r-- | webkit/api/public/gtk/WebFontInfo.h | 4 | ||||
-rw-r--r-- | webkit/api/src/ChromiumBridge.cpp | 9 | ||||
-rw-r--r-- | webkit/api/src/gtk/WebFontInfo.cpp | 10 |
4 files changed, 22 insertions, 121 deletions
diff --git a/chrome/browser/renderer_host/render_sandbox_host_linux.cc b/chrome/browser/renderer_host/render_sandbox_host_linux.cc index 460f1cb..e34efe6 100644 --- a/chrome/browser/renderer_host/render_sandbox_host_linux.cc +++ b/chrome/browser/renderer_host/render_sandbox_host_linux.cc @@ -21,38 +21,20 @@ #include "base/unix_domain_socket_posix.h" #include "chrome/common/sandbox_methods_linux.h" #include "webkit/api/public/gtk/WebFontInfo.h" -#include "webkit/api/public/WebData.h" -#include "webkit/api/public/WebKit.h" -#include "webkit/api/public/WebKitClient.h" -#include "webkit/api/public/WebStorageArea.h" -#include "webkit/api/public/WebStorageNamespace.h" #include "SkFontHost_fontconfig_direct.h" #include "SkFontHost_fontconfig_ipc.h" -using WebKit::WebClipboard; -using WebKit::WebData; +using WebKit::WebCString; using WebKit::WebFontInfo; -using WebKit::WebKitClient; -using WebKit::WebLocalizedString; -using WebKit::WebMimeRegistry; -using WebKit::WebPluginInfo; -using WebKit::WebPluginListBuilder; -using WebKit::WebSandboxSupport; -using WebKit::WebStorageArea; -using WebKit::WebStorageNamespace; -using WebKit::WebString; -using WebKit::WebThemeEngine; using WebKit::WebUChar; -using WebKit::WebURL; -using WebKit::WebURLLoader; // http://code.google.com/p/chromium/wiki/LinuxSandboxIPC // BEWARE: code in this file run across *processes* (not just threads). // This code runs in a child process -class SandboxIPCProcess : public WebKitClient { +class SandboxIPCProcess { public: // lifeline_fd: this is the read end of a pipe which the browser process // holds the other end of. If the browser process dies, it's descriptors are @@ -64,8 +46,6 @@ class SandboxIPCProcess : public WebKitClient { : lifeline_fd_(lifeline_fd), browser_socket_(browser_socket), font_config_(new FontConfigDirect()) { - WebKit::initialize(this); - base::InjectiveMultimap multimap; multimap.push_back(base::InjectionArc(0, lifeline_fd, false)); multimap.push_back(base::InjectionArc(0, browser_socket, false)); @@ -105,93 +85,6 @@ class SandboxIPCProcess : public WebKitClient { } } - // --------------------------------------------------------------------------- - // WebKitClient impl... - - virtual WebClipboard* clipboard() { return NULL; } - virtual WebMimeRegistry* mimeRegistry() { return NULL; } - virtual WebSandboxSupport* sandboxSupport() { return NULL; } - virtual bool sandboxEnabled() { return true; } - virtual WebThemeEngine* themeEngine() { return NULL; } - - virtual WebStorageNamespace* createLocalStorageNamespace( - const WebString& path) { return 0; } - virtual WebStorageNamespace* createSessionStorageNamespace() { return 0; } - - virtual unsigned long long visitedLinkHash(const char*, size_t) { return 0; } - virtual bool isLinkVisited(unsigned long long) { return false; } - - virtual WebKit::WebMessagePortChannel* createMessagePortChannel() { - return NULL; - } - - virtual void setCookies(const WebURL&, const WebURL&, const WebString&) { } - virtual WebString cookies(const WebURL&, const WebURL&) { - return WebString(); - } - - virtual void prefetchHostName(const WebString&) { } - - virtual WebURLLoader* createURLLoader() { return NULL; } - - virtual void getPluginList(bool refresh, WebPluginListBuilder*) { } - - virtual void decrementStatsCounter(const char*) { } - virtual void incrementStatsCounter(const char*) { } - - virtual void traceEventBegin(const char* name, void*, const char*) { } - virtual void traceEventEnd(const char* name, void*, const char*) { } - - virtual WebData loadResource(const char*) { return WebData(); } - virtual WebString queryLocalizedString(WebLocalizedString::Name) { - return WebString(); - } - virtual WebString queryLocalizedString(WebLocalizedString::Name, int) { - return WebString(); - } - - virtual void suddenTerminationChanged(bool) { } - - virtual WebString defaultLocale() { return WebString(); } - - virtual double currentTime() { return 0; } - - virtual void setSharedTimerFiredFunction(void (*)()) { } - virtual void setSharedTimerFireTime(double) { } - virtual void stopSharedTimer() { } - - virtual void callOnMainThread(void (*)()) { } - - virtual base::PlatformFile databaseOpenFile( - const WebString& fileName, int desiredFlags) { - return base::kInvalidPlatformFileValue; - } - virtual bool databaseDeleteFile(const WebString& fileName) { - return false; - } - virtual long databaseGetFileAttributes(const WebString& fileName) { - return -1; - } - virtual long long databaseGetFileSize(const WebString& fileName) { - return 0; - } - - bool fileExists(const WebString& path) { return false; } - bool deleteFile(const WebString& path) { return false; } - bool deleteEmptyDirectory(const WebString& path) { return false; } - bool getFileSize(const WebString& path, long long& result) { - return false; - } - bool getFileModificationTime(const WebString& path, time_t& result) { - return false; - } - WebString directoryName(const WebString& path) { return WebString(); } - WebString pathByAppendingComponent(const WebString& path, - const WebString& component) { - return WebString(); - } - bool makeAllDirectories(const WebString& path) { return false; } - private: // --------------------------------------------------------------------------- // Requests from the renderer... @@ -318,11 +211,14 @@ class SandboxIPCProcess : public WebKitClient { chars[i] = c; } - const WebString family = WebFontInfo::familyForChars(chars.get(), num_chars); - const std::string family_utf8 = UTF16ToUTF8(family); + WebCString family = WebFontInfo::familyForChars(chars.get(), num_chars); Pickle reply; - reply.WriteString(family_utf8); + if (family.data()) { + reply.WriteString(family.data()); + } else { + reply.WriteString(""); + } SendRendererReply(fds, reply, -1); } diff --git a/webkit/api/public/gtk/WebFontInfo.h b/webkit/api/public/gtk/WebFontInfo.h index b5543c2..2a0b7f9 100644 --- a/webkit/api/public/gtk/WebFontInfo.h +++ b/webkit/api/public/gtk/WebFontInfo.h @@ -31,7 +31,7 @@ #ifndef WebFontInfo_h #define WebFontInfo_h -#include "../WebString.h" +#include "../WebCString.h" #include <string.h> #include <unistd.h> @@ -47,7 +47,7 @@ namespace WebKit { // // Returns: the font family or an empty string if the request could not be // satisfied. - WEBKIT_API static WebString familyForChars(const WebUChar* characters, size_t numCharacters); + WEBKIT_API static WebCString familyForChars(const WebUChar* characters, size_t numCharacters); }; } // namespace WebKit diff --git a/webkit/api/src/ChromiumBridge.cpp b/webkit/api/src/ChromiumBridge.cpp index e48b4b7..b668178 100644 --- a/webkit/api/src/ChromiumBridge.cpp +++ b/webkit/api/src/ChromiumBridge.cpp @@ -208,8 +208,13 @@ String ChromiumBridge::getFontFamilyForCharacters(const UChar* characters, size_ { if (webKitClient()->sandboxSupport()) return webKitClient()->sandboxSupport()->getFontFamilyForCharacters(characters, numCharacters); - else - return WebFontInfo::familyForChars(characters, numCharacters); + else { + WebCString family = WebFontInfo::familyForChars(characters, numCharacters); + if (family.data()) + return WebString::fromUTF8(family.data()); + else + return WebString(); + } } #endif diff --git a/webkit/api/src/gtk/WebFontInfo.cpp b/webkit/api/src/gtk/WebFontInfo.cpp index 059ad4b..9365ed2 100644 --- a/webkit/api/src/gtk/WebFontInfo.cpp +++ b/webkit/api/src/gtk/WebFontInfo.cpp @@ -38,7 +38,7 @@ namespace WebKit { -WebString WebFontInfo::familyForChars(const WebUChar* characters, size_t numCharacters) +WebCString WebFontInfo::familyForChars(const WebUChar* characters, size_t numCharacters) { FcCharSet* cset = FcCharSetCreate(); for (int i = 0; i < numCharacters; ++i) { @@ -71,7 +71,7 @@ WebString WebFontInfo::familyForChars(const WebUChar* characters, size_t numChar FcCharSetDestroy(cset); if (!fontSet) - return WebString(); + return WebCString(); // Older versions of fontconfig have a bug where they cannot select // only scalable fonts so we have to manually filter the results. @@ -92,17 +92,17 @@ WebString WebFontInfo::familyForChars(const WebUChar* characters, size_t numChar continue; FcChar8* family; - WebString result; + WebCString result; if (FcPatternGetString(current, FC_FAMILY, 0, &family) == FcResultMatch) { const char* charFamily = reinterpret_cast<char*>(family); - result = WebString::fromUTF8(charFamily, strlen(charFamily)); + result = WebCString(charFamily, strlen(charFamily)); } FcFontSetDestroy(fontSet); return result; } FcFontSetDestroy(fontSet); - return WebString(); + return WebCString(); } } // namespace WebKit |