summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/renderer_webkitclient_impl.cc
diff options
context:
space:
mode:
authorjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-20 05:20:25 +0000
committerjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-20 05:20:25 +0000
commit5ae5f7a73f3278d3f53f86db9f8d50172b405752 (patch)
treef844c0c095f5e936dc398263ddd7f98208b3295f /chrome/renderer/renderer_webkitclient_impl.cc
parent95b1eb5c9a2ac75578225ae4713291bf54c3f6c4 (diff)
downloadchromium_src-5ae5f7a73f3278d3f53f86db9f8d50172b405752.zip
chromium_src-5ae5f7a73f3278d3f53f86db9f8d50172b405752.tar.gz
chromium_src-5ae5f7a73f3278d3f53f86db9f8d50172b405752.tar.bz2
Mac: Infrastructure for serialization of OS fonts over IPC.
Renderer & Browser bits to send and receive IPC message for OOP font loading. BUG=29729 TEST=All unit tests should pass. Review URL: http://codereview.chromium.org/2811013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50321 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/renderer_webkitclient_impl.cc')
-rw-r--r--chrome/renderer/renderer_webkitclient_impl.cc39
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..c9166dd2 100644
--- a/chrome/renderer/renderer_webkitclient_impl.cc
+++ b/chrome/renderer/renderer_webkitclient_impl.cc
@@ -13,8 +13,10 @@
#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/font_loader_mac.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/webmessageportchannel_impl.h"
#include "chrome/plugin/npobject_util.h"
@@ -32,11 +34,14 @@
#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"
+#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
//------------------------------------------------------------------------------