OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/proxy/ppb_pdf_proxy.h" | 5 #include "ppapi/proxy/ppb_pdf_proxy.h" |
6 | 6 |
7 #include <string.h> // For memcpy. | 7 #include <string.h> // For memcpy. |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 PP_PrivateFontCharset charset) { | 68 PP_PrivateFontCharset charset) { |
69 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); | 69 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
70 if (!dispatcher) | 70 if (!dispatcher) |
71 return 0; | 71 return 0; |
72 | 72 |
73 SerializedFontDescription desc; | 73 SerializedFontDescription desc; |
74 desc.SetFromPPFontDescription(dispatcher, *description, true); | 74 desc.SetFromPPFontDescription(dispatcher, *description, true); |
75 | 75 |
76 HostResource result; | 76 HostResource result; |
77 dispatcher->Send(new PpapiHostMsg_PPBPDF_GetFontFileWithFallback( | 77 dispatcher->Send(new PpapiHostMsg_PPBPDF_GetFontFileWithFallback( |
78 INTERFACE_ID_PPB_PDF, instance, desc, charset, &result)); | 78 API_ID_PPB_PDF, instance, desc, charset, &result)); |
79 if (result.is_null()) | 79 if (result.is_null()) |
80 return 0; | 80 return 0; |
81 return (new PrivateFontFile(result))->GetReference(); | 81 return (new PrivateFontFile(result))->GetReference(); |
82 } | 82 } |
83 | 83 |
84 bool GetFontTableForPrivateFontFile(PP_Resource font_file, | 84 bool GetFontTableForPrivateFontFile(PP_Resource font_file, |
85 uint32_t table, | 85 uint32_t table, |
86 void* output, | 86 void* output, |
87 uint32_t* output_length) { | 87 uint32_t* output_length) { |
88 EnterResource<PPB_PDFFont_API> enter(font_file, true); | 88 EnterResource<PPB_PDFFont_API> enter(font_file, true); |
89 if (enter.failed()) | 89 if (enter.failed()) |
90 return false; | 90 return false; |
91 | 91 |
92 PrivateFontFile* object = static_cast<PrivateFontFile*>(enter.object()); | 92 PrivateFontFile* object = static_cast<PrivateFontFile*>(enter.object()); |
93 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance( | 93 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance( |
94 object->pp_instance()); | 94 object->pp_instance()); |
95 if (!dispatcher) | 95 if (!dispatcher) |
96 return false; | 96 return false; |
97 | 97 |
98 std::string* contents = object->GetFontTable(table); | 98 std::string* contents = object->GetFontTable(table); |
99 if (!contents) { | 99 if (!contents) { |
100 std::string deserialized; | 100 std::string deserialized; |
101 dispatcher->Send(new PpapiHostMsg_PPBPDF_GetFontTableForPrivateFontFile( | 101 dispatcher->Send(new PpapiHostMsg_PPBPDF_GetFontTableForPrivateFontFile( |
102 INTERFACE_ID_PPB_PDF, object->host_resource(), table, &deserialized)); | 102 API_ID_PPB_PDF, object->host_resource(), table, &deserialized)); |
103 if (deserialized.empty()) | 103 if (deserialized.empty()) |
104 return false; | 104 return false; |
105 contents = object->AddFontTable(table, deserialized); | 105 contents = object->AddFontTable(table, deserialized); |
106 } | 106 } |
107 | 107 |
108 *output_length = static_cast<uint32_t>(contents->size()); | 108 *output_length = static_cast<uint32_t>(contents->size()); |
109 if (output) | 109 if (output) |
110 memcpy(output, contents->c_str(), *output_length); | 110 memcpy(output, contents->c_str(), *output_length); |
111 return true; | 111 return true; |
112 } | 112 } |
(...skipping 21 matching lines...) Expand all Loading... |
134 } | 134 } |
135 | 135 |
136 PPB_PDF_Proxy::~PPB_PDF_Proxy() { | 136 PPB_PDF_Proxy::~PPB_PDF_Proxy() { |
137 } | 137 } |
138 | 138 |
139 // static | 139 // static |
140 const InterfaceProxy::Info* PPB_PDF_Proxy::GetInfo() { | 140 const InterfaceProxy::Info* PPB_PDF_Proxy::GetInfo() { |
141 static const Info info = { | 141 static const Info info = { |
142 &pdf_interface, | 142 &pdf_interface, |
143 PPB_PDF_INTERFACE, | 143 PPB_PDF_INTERFACE, |
144 INTERFACE_ID_PPB_PDF, | 144 API_ID_PPB_PDF, |
145 true, | 145 true, |
146 &CreatePDFProxy, | 146 &CreatePDFProxy, |
147 }; | 147 }; |
148 return &info; | 148 return &info; |
149 } | 149 } |
150 | 150 |
151 bool PPB_PDF_Proxy::OnMessageReceived(const IPC::Message& msg) { | 151 bool PPB_PDF_Proxy::OnMessageReceived(const IPC::Message& msg) { |
152 bool handled = true; | 152 bool handled = true; |
153 IPC_BEGIN_MESSAGE_MAP(PPB_PDF_Proxy, msg) | 153 IPC_BEGIN_MESSAGE_MAP(PPB_PDF_Proxy, msg) |
154 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBPDF_GetFontFileWithFallback, | 154 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBPDF_GetFontFileWithFallback, |
(...skipping 29 matching lines...) Expand all Loading... |
184 font_file.host_resource(), table, NULL, &table_length)) | 184 font_file.host_resource(), table, NULL, &table_length)) |
185 return; | 185 return; |
186 | 186 |
187 result->resize(table_length); | 187 result->resize(table_length); |
188 ppb_pdf_impl_->GetFontTableForPrivateFontFile(font_file.host_resource(), | 188 ppb_pdf_impl_->GetFontTableForPrivateFontFile(font_file.host_resource(), |
189 table, const_cast<char*>(result->c_str()), &table_length); | 189 table, const_cast<char*>(result->c_str()), &table_length); |
190 } | 190 } |
191 | 191 |
192 } // namespace proxy | 192 } // namespace proxy |
193 } // namespace ppapi | 193 } // namespace ppapi |
OLD | NEW |