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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 return true; | 111 return true; |
112 } | 112 } |
113 | 113 |
114 const PPB_PDF pdf_interface = { | 114 const PPB_PDF pdf_interface = { |
115 NULL, // &GetLocalizedString, | 115 NULL, // &GetLocalizedString, |
116 NULL, // &GetResourceImage, | 116 NULL, // &GetResourceImage, |
117 &GetFontFileWithFallback, | 117 &GetFontFileWithFallback, |
118 &GetFontTableForPrivateFontFile, | 118 &GetFontTableForPrivateFontFile, |
119 }; | 119 }; |
120 | 120 |
121 InterfaceProxy* CreatePDFProxy(Dispatcher* dispatcher, | 121 InterfaceProxy* CreatePDFProxy(Dispatcher* dispatcher) { |
122 const void* target_interface) { | 122 return new PPB_PDF_Proxy(dispatcher); |
123 return new PPB_PDF_Proxy(dispatcher, target_interface); | |
124 } | 123 } |
125 | 124 |
126 } // namespace | 125 } // namespace |
127 | 126 |
128 PPB_PDF_Proxy::PPB_PDF_Proxy(Dispatcher* dispatcher, | 127 PPB_PDF_Proxy::PPB_PDF_Proxy(Dispatcher* dispatcher) |
129 const void* target_interface) | 128 : InterfaceProxy(dispatcher), |
130 : InterfaceProxy(dispatcher, target_interface) { | 129 ppb_pdf_impl_(NULL) { |
| 130 if (!dispatcher->IsPlugin()) { |
| 131 ppb_pdf_impl_ = static_cast<const PPB_PDF*>( |
| 132 dispatcher->local_get_interface()(PPB_PDF_INTERFACE)); |
| 133 } |
131 } | 134 } |
132 | 135 |
133 PPB_PDF_Proxy::~PPB_PDF_Proxy() { | 136 PPB_PDF_Proxy::~PPB_PDF_Proxy() { |
134 } | 137 } |
135 | 138 |
136 // static | 139 // static |
137 const InterfaceProxy::Info* PPB_PDF_Proxy::GetInfo() { | 140 const InterfaceProxy::Info* PPB_PDF_Proxy::GetInfo() { |
138 static const Info info = { | 141 static const Info info = { |
139 &pdf_interface, | 142 &pdf_interface, |
140 PPB_PDF_INTERFACE, | 143 PPB_PDF_INTERFACE, |
(...skipping 18 matching lines...) Expand all Loading... |
159 } | 162 } |
160 | 163 |
161 void PPB_PDF_Proxy::OnMsgGetFontFileWithFallback( | 164 void PPB_PDF_Proxy::OnMsgGetFontFileWithFallback( |
162 PP_Instance instance, | 165 PP_Instance instance, |
163 const SerializedFontDescription& in_desc, | 166 const SerializedFontDescription& in_desc, |
164 int32_t charset, | 167 int32_t charset, |
165 HostResource* result) { | 168 HostResource* result) { |
166 PP_FontDescription_Dev desc; | 169 PP_FontDescription_Dev desc; |
167 in_desc.SetToPPFontDescription(dispatcher(), &desc, false); | 170 in_desc.SetToPPFontDescription(dispatcher(), &desc, false); |
168 result->SetHostResource(instance, | 171 result->SetHostResource(instance, |
169 ppb_pdf_target()->GetFontFileWithFallback( | 172 ppb_pdf_impl_->GetFontFileWithFallback( |
170 instance, &desc, static_cast<PP_PrivateFontCharset>(charset))); | 173 instance, &desc, static_cast<PP_PrivateFontCharset>(charset))); |
171 } | 174 } |
172 | 175 |
173 void PPB_PDF_Proxy::OnMsgGetFontTableForPrivateFontFile( | 176 void PPB_PDF_Proxy::OnMsgGetFontTableForPrivateFontFile( |
174 const HostResource& font_file, | 177 const HostResource& font_file, |
175 uint32_t table, | 178 uint32_t table, |
176 std::string* result) { | 179 std::string* result) { |
177 // TODO(brettw): It would be nice not to copy here. At least on Linux, | 180 // TODO(brettw): It would be nice not to copy here. At least on Linux, |
178 // we can map the font file into shared memory and read it that way. | 181 // we can map the font file into shared memory and read it that way. |
179 uint32_t table_length = 0; | 182 uint32_t table_length = 0; |
180 if (!ppb_pdf_target()->GetFontTableForPrivateFontFile( | 183 if (!ppb_pdf_impl_->GetFontTableForPrivateFontFile( |
181 font_file.host_resource(), table, NULL, &table_length)) | 184 font_file.host_resource(), table, NULL, &table_length)) |
182 return; | 185 return; |
183 | 186 |
184 result->resize(table_length); | 187 result->resize(table_length); |
185 ppb_pdf_target()->GetFontTableForPrivateFontFile(font_file.host_resource(), | 188 ppb_pdf_impl_->GetFontTableForPrivateFontFile(font_file.host_resource(), |
186 table, const_cast<char*>(result->c_str()), &table_length); | 189 table, const_cast<char*>(result->c_str()), &table_length); |
187 } | 190 } |
188 | 191 |
189 } // namespace proxy | 192 } // namespace proxy |
190 } // namespace ppapi | 193 } // namespace ppapi |
OLD | NEW |