Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1699)

Unified Diff: content/browser/renderer_host/fontmgr_message_filter.cc

Issue 132113015: IPC interface for font management. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Checkpoint Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/fontmgr_message_filter.cc
===================================================================
--- content/browser/renderer_host/fontmgr_message_filter.cc (revision 0)
+++ content/browser/renderer_host/fontmgr_message_filter.cc (working copy)
@@ -0,0 +1,107 @@
+// Copyright (c) 2014 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.
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/location.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/stl_util.h"
+#include "content/browser/renderer_host/fontmgr_message_filter.h"
+#include "content/common/fontmgr_messages.h"
+#include "content/public/browser/browser_context.h"
+#include "ipc/ipc_message_macros.h"
+#include "third_party/skia/include/core/SkDataTable.h"
+#include "third_party/skia/include/core/SkStream.h"
+#include "third_party/skia/include/ports/SkFontMgr_indirect.h"
+#include "third_party/skia/include/ports/SkTypeface_win.h"
+#include "ui/gfx/codec/png_codec.h"
+#include "ui/gfx/size.h"
+#include "url/gurl.h"
+
+
+namespace content {
+
+FontMgrMessageFilter::FontMgrMessageFilter(SkRemotableFontMgr* fontManager)
+ : BrowserMessageFilter(FontMsgStart)
+ , fm(skia::AdoptRef(fontManager))
brettw 2014/03/11 21:38:15 Comma on prev line.
bungeman-chromium 2014/03/13 22:33:31 Done.
+{
+}
+
+bool FontMgrMessageFilter::OnMessageReceived(const IPC::Message& message,
+ bool* message_was_ok) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP_EX(FontMgrMessageFilter, message, *message_was_ok)
+ IPC_MESSAGE_HANDLER(FontMsg_GetFamilyNames, OnFontMsg_GetFamilyNames)
+ IPC_MESSAGE_HANDLER(FontMsg_GetIndexIdentities,
+ OnFontMsg_GetIndexIdentities)
+ IPC_MESSAGE_HANDLER(FontMsg_MatchIndexStyle, OnFontMsg_MatchIndexStyle)
+ IPC_MESSAGE_HANDLER(FontMsg_MatchName, OnFontMsg_MatchName)
+ IPC_MESSAGE_HANDLER(FontMsg_MatchNameStyle, OnFontMsg_MatchNameStyle)
+ IPC_MESSAGE_HANDLER(FontMsg_MatchNameStyleCharacter,
+ OnFontMsg_MatchNameStyleCharacter)
+ IPC_MESSAGE_HANDLER(FontMsg_GetData, OnFontMsg_GetData)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP_EX()
+ return handled;
+}
+
+FontMgrMessageFilter::~FontMgrMessageFilter() {
+}
+
+void FontMgrMessageFilter::OnFontMsg_GetFamilyNames(
+ skia::RefPtr<SkDataTable>* familyNames)
+{
+ *familyNames = skia::AdoptRef(fm->getFamilyNames());
+}
+
+void FontMgrMessageFilter::OnFontMsg_GetIndexIdentities(
+ int familyIndex,
+ skia::RefPtr<SkRemotableFontIdentitySet>* styles)
+{
+ *styles = skia::AdoptRef(fm->getIndexIdentities(familyIndex));
+}
+
+void FontMgrMessageFilter::OnFontMsg_MatchIndexStyle(
+ int familyIndex,
+ SkFontStyle style,
+ SkFontIdentity* identity)
+{
+ *identity = fm->matchIndexStyle(familyIndex, style);
+}
+
+void FontMgrMessageFilter::OnFontMsg_MatchName(SkString familyName,
+ skia::RefPtr<SkRemotableFontIdentitySet>* styles)
brettw 2014/03/11 21:38:15 The two args should be aligned horizontally. So in
bungeman-chromium 2014/03/13 22:33:31 Done.
+{
brettw 2014/03/11 21:38:15 Fix { placement for this entire patch.
bungeman-chromium 2014/03/13 22:33:31 Done.
+ *styles = skia::AdoptRef(fm->matchName(familyName.c_str()));
+}
+
+void FontMgrMessageFilter::OnFontMsg_MatchNameStyle(
+ SkString familyName,
+ SkFontStyle style,
+ SkFontIdentity* identity)
+{
+ *identity = fm->matchNameStyle(familyName.c_str(), style);
+}
+
+void FontMgrMessageFilter::OnFontMsg_MatchNameStyleCharacter(
+ SkString familyName,
brettw 2014/03/11 21:38:15 I'd use Chrome-style for everything that you can,
bungeman-chromium 2014/03/13 22:33:31 Done.
+ SkFontStyle style,
+ SkString bpc47,
+ uint32_t character,
+ SkFontIdentity* identity)
+{
+ *identity = fm->matchNameStyleCharacter(familyName.c_str(),
brettw 2014/03/11 21:38:15 It's not clear why we need to serialize as SkStrin
bungeman-chromium 2014/03/13 22:33:31 Maybe, it's this way currently because I was chang
+ style,
+ bpc47.c_str(),
+ character);
+}
+
+void FontMgrMessageFilter::OnFontMsg_GetData(
+ uint32_t dataId,
+ skia::RefPtr<SkStream>* fontData)
+{
+ *fontData = skia::AdoptRef(fm->getData(dataId));
+}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698