blob: 2ae8132da6f56553140a669e738e749154a0b901 [file] [log] [blame]
[email protected]f7867172012-07-11 07:04:071// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]e35c9a82011-12-01 18:48:412// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_COMMON_FONT_CACHE_DISPATCHER_WIN_H_
6#define CONTENT_COMMON_FONT_CACHE_DISPATCHER_WIN_H_
[email protected]e35c9a82011-12-01 18:48:417
8#include <windows.h>
9
10#include "base/basictypes.h"
11#include "base/memory/singleton.h"
12#include "ipc/ipc_channel_proxy.h"
13
[email protected]130757672012-10-24 00:26:1914namespace content {
15
[email protected]e35c9a82011-12-01 18:48:4116// Dispatches messages used for font caching on Windows. This is needed because
17// Windows can't load fonts into its kernel cache in sandboxed processes. So the
18// sandboxed process asks the browser process to do this for it.
19class FontCacheDispatcher : public IPC::ChannelProxy::MessageFilter,
[email protected]d84effeb2012-06-25 17:03:1020 public IPC::Sender {
[email protected]e35c9a82011-12-01 18:48:4121 public:
22 FontCacheDispatcher();
23 virtual ~FontCacheDispatcher();
24
[email protected]d84effeb2012-06-25 17:03:1025 // IPC::Sender implementation:
[email protected]e35c9a82011-12-01 18:48:4126 virtual bool Send(IPC::Message* message) OVERRIDE;
27
28 private:
29 // IPC::ChannelProxy::MessageFilter implementation:
30 virtual void OnFilterAdded(IPC::Channel* channel) OVERRIDE;
31 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
32 virtual void OnChannelClosing() OVERRIDE;
33
34 // Message handlers.
35 void OnPreCacheFont(const LOGFONT& font);
36 void OnReleaseCachedFonts();
37
38 IPC::Channel* channel_;
39
40 DISALLOW_COPY_AND_ASSIGN(FontCacheDispatcher);
41};
42
[email protected]130757672012-10-24 00:26:1943} // namespace content
44
[email protected]e35c9a82011-12-01 18:48:4145#endif // CONTENT_COMMON_FONT_CACHE_DISPATCHER_WIN_H_