diff options
Diffstat (limited to 'chrome/renderer/renderer_webkitclient_impl.cc')
-rw-r--r-- | chrome/renderer/renderer_webkitclient_impl.cc | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/chrome/renderer/renderer_webkitclient_impl.cc b/chrome/renderer/renderer_webkitclient_impl.cc index 7135038..4229d66 100644 --- a/chrome/renderer/renderer_webkitclient_impl.cc +++ b/chrome/renderer/renderer_webkitclient_impl.cc @@ -13,6 +13,7 @@ #include "base/command_line.h" #include "base/file_path.h" #include "base/platform_file.h" +#include "base/shared_memory.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/database_util.h" #include "chrome/common/render_messages.h" @@ -32,11 +33,15 @@ #include "third_party/WebKit/WebKit/chromium/public/WebGraphicsContext3D.h" #include "third_party/WebKit/WebKit/chromium/public/WebIndexedDatabase.h" #include "third_party/WebKit/WebKit/chromium/public/WebStorageEventDispatcher.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" #include "third_party/WebKit/WebKit/chromium/public/WebVector.h" #include "webkit/glue/webkit_glue.h" +#if defined(OS_MACOSX) +#include "chrome/common/font_descriptor_mac.h" +#include "chrome/common/font_loader_mac.h" +#endif + #if defined(OS_LINUX) #include "chrome/renderer/renderer_sandbox_support_linux.h" #endif @@ -77,11 +82,7 @@ WebKit::WebFileSystem* RendererWebKitClientImpl::fileSystem() { } WebKit::WebSandboxSupport* RendererWebKitClientImpl::sandboxSupport() { -#if defined(OS_WIN) || defined(OS_LINUX) return &sandbox_support_; -#else - return NULL; -#endif } WebKit::WebCookieJar* RendererWebKitClientImpl::cookieJar() { @@ -333,6 +334,34 @@ void RendererWebKitClientImpl::SandboxSupport::getRenderStyleForStrike( renderer_sandbox_support::getRenderStyleForStrike(family, sizeAndStyle, out); } +#elif defined(OS_MACOSX) + +bool RendererWebKitClientImpl::SandboxSupport::loadFont(NSFont* srcFont, + ATSFontContainerRef* out) { + DCHECK(srcFont); + DCHECK(out); + + uint32 font_data_size; + FontDescriptor src_font_descriptor(srcFont); + base::SharedMemoryHandle font_data; + if (!RenderThread::current()->Send(new ViewHostMsg_LoadFont( + src_font_descriptor, &font_data_size, &font_data))) { + LOG(ERROR) << "Sending ViewHostMsg_LoadFont() IPC failed for " << + src_font_descriptor.font_name; + *out = kATSFontContainerRefUnspecified; + return false; + } + + if (font_data_size == 0 || font_data == base::SharedMemory::NULLHandle()) { + LOG(ERROR) << "Bad response from ViewHostMsg_LoadFont() for " << + src_font_descriptor.font_name; + *out = kATSFontContainerRefUnspecified; + return false; + } + + return FontLoader::ATSFontContainerFromBuffer(font_data, font_data_size, out); +} + #endif //------------------------------------------------------------------------------ |