| // Copyright (c) 2012 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. |
| |
| #ifndef PPAPI_PROXY_FLASH_FONT_FILE_RESOURCE_H_ |
| #define PPAPI_PROXY_FLASH_FONT_FILE_RESOURCE_H_ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| #include <unordered_map> |
| |
| #include "base/macros.h" |
| #include "ppapi/c/private/pp_private_font_charset.h" |
| #include "ppapi/proxy/plugin_resource.h" |
| #include "ppapi/proxy/serialized_structs.h" |
| #include "ppapi/thunk/ppb_flash_font_file_api.h" |
| |
| struct PP_BrowserFont_Trusted_Description; |
| |
| namespace ppapi { |
| namespace proxy { |
| |
| // TODO(yzshen): write unittest and browser test. |
| class FlashFontFileResource : public PluginResource, |
| public thunk::PPB_Flash_FontFile_API { |
| public: |
| FlashFontFileResource(Connection connection, |
| PP_Instance instance, |
| const PP_BrowserFont_Trusted_Description* description, |
| PP_PrivateFontCharset charset); |
| ~FlashFontFileResource() override; |
| |
| // Resource overrides. |
| thunk::PPB_Flash_FontFile_API* AsPPB_Flash_FontFile_API() override; |
| |
| // PPB_Flash_FontFile_API. |
| PP_Bool GetFontTable(uint32_t table, |
| void* output, |
| uint32_t* output_length) override; |
| |
| private: |
| // Sees if we have a cache of the font table and returns a pointer to it. |
| // Returns NULL if we don't have it. |
| const std::string* GetFontTable(uint32_t table) const; |
| |
| const std::string* AddFontTable(uint32_t table, const std::string& contents); |
| |
| using FontTableMap = |
| std::unordered_map<uint32_t, std::unique_ptr<std::string>>; |
| FontTableMap font_tables_; |
| |
| SerializedFontDescription description_; |
| const PP_PrivateFontCharset charset_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FlashFontFileResource); |
| }; |
| |
| } // namespace proxy |
| } // namespace ppapi |
| |
| #endif // PPAPI_PROXY_FLASH_FONT_FILE_RESOURCE_H_ |