1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_HOST_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_HOST_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <vector> 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/compiler_specific.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/weak_ptr.h" 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/sequenced_task_runner.h" 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/browser/renderer_host/pepper/pepper_truetype_font.h" 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/common/content_export.h" 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ppapi/host/host_message_context.h" 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ppapi/host/resource_host.h" 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace content { 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass BrowserPpapiHost; 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass CONTENT_EXPORT PepperTrueTypeFontHost : public ppapi::host::ResourceHost { 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PepperTrueTypeFontHost(BrowserPpapiHost* host, 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PP_Instance instance, 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PP_Resource resource, 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const ppapi::proxy::SerializedTrueTypeFontDesc& desc); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~PepperTrueTypeFontHost(); 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int32_t OnResourceMessageReceived( 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const IPC::Message& msg, 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ppapi::host::HostMessageContext* context) OVERRIDE; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32_t OnHostMsgGetTableTags(ppapi::host::HostMessageContext* context); 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32_t OnHostMsgGetTable(ppapi::host::HostMessageContext* context, 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch uint32_t table, 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32_t offset, 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32_t max_data_length); 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnInitializeComplete(ppapi::proxy::SerializedTrueTypeFontDesc* desc, 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32_t result); 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnGetTableTagsComplete(std::vector<uint32_t>* tags, 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ppapi::host::ReplyMessageContext reply_context, 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32_t result); 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnGetTableComplete(std::string* data, 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ppapi::host::ReplyMessageContext reply_context, 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32_t result); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // We use a SequencedTaskRunner to run potentially slow font operations and 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // ensure that Initialize completes before we make any calls to get font data. 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Even though we allow multiple pending GetTableTags and GetTable calls, this 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // implies that they run serially. 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_refptr<base::SequencedTaskRunner> task_runner_; 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_refptr<PepperTrueTypeFont> font_; 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool initialize_completed_; 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::WeakPtrFactory<PepperTrueTypeFontHost> weak_factory_; 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(PepperTrueTypeFontHost); 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace content 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_HOST_H_ 70