Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: ppapi/proxy/ppb_pdf_proxy.cc

Issue 5828003: Move the Pepper implementation from webkit/glue/plugins/pepper_* to... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/proxy/ppb_pdf_proxy.h ('k') | webkit/glue/plugins/mock_plugin_delegate.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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
11 #include "base/linked_ptr.h" 11 #include "base/linked_ptr.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "build/build_config.h" 13 #include "build/build_config.h"
14 #include "ppapi/proxy/plugin_dispatcher.h" 14 #include "ppapi/proxy/plugin_dispatcher.h"
15 #include "ppapi/proxy/plugin_resource.h" 15 #include "ppapi/proxy/plugin_resource.h"
16 #include "ppapi/proxy/ppapi_messages.h" 16 #include "ppapi/proxy/ppapi_messages.h"
17 #include "webkit/glue/plugins/ppb_private.h" 17 #include "webkit/plugins/ppapi/ppb_pdf.h"
18 18
19 namespace pp { 19 namespace pp {
20 namespace proxy { 20 namespace proxy {
21 21
22 class PrivateFontFile : public PluginResource { 22 class PrivateFontFile : public PluginResource {
23 public: 23 public:
24 PrivateFontFile() {} 24 PrivateFontFile() {}
25 virtual ~PrivateFontFile() {} 25 virtual ~PrivateFontFile() {}
26 26
27 // Resource overrides. 27 // Resource overrides.
(...skipping 30 matching lines...) Expand all
58 58
59 PP_Resource GetFontFileWithFallback( 59 PP_Resource GetFontFileWithFallback(
60 PP_Module module_id, 60 PP_Module module_id,
61 const PP_FontDescription_Dev* description, 61 const PP_FontDescription_Dev* description,
62 PP_PrivateFontCharset charset) { 62 PP_PrivateFontCharset charset) {
63 PluginDispatcher* dispatcher = PluginDispatcher::Get(); 63 PluginDispatcher* dispatcher = PluginDispatcher::Get();
64 SerializedFontDescription desc; 64 SerializedFontDescription desc;
65 desc.SetFromPPFontDescription(dispatcher, *description, true); 65 desc.SetFromPPFontDescription(dispatcher, *description, true);
66 66
67 PP_Resource result = 0; 67 PP_Resource result = 0;
68 dispatcher->Send(new PpapiHostMsg_PPBPdf_GetFontFileWithFallback( 68 dispatcher->Send(new PpapiHostMsg_PPBPDF_GetFontFileWithFallback(
69 INTERFACE_ID_PPB_PDF, module_id, desc, charset, &result)); 69 INTERFACE_ID_PPB_PDF, module_id, desc, charset, &result));
70 if (!result) 70 if (!result)
71 return 0; 71 return 0;
72 72
73 linked_ptr<PrivateFontFile> object(new PrivateFontFile); 73 linked_ptr<PrivateFontFile> object(new PrivateFontFile);
74 dispatcher->plugin_resource_tracker()->AddResource(result, object); 74 dispatcher->plugin_resource_tracker()->AddResource(result, object);
75 return result; 75 return result;
76 } 76 }
77 77
78 bool GetFontTableForPrivateFontFile(PP_Resource font_file, 78 bool GetFontTableForPrivateFontFile(PP_Resource font_file,
79 uint32_t table, 79 uint32_t table,
80 void* output, 80 void* output,
81 uint32_t* output_length) { 81 uint32_t* output_length) {
82 PrivateFontFile* object = PluginResource::GetAs<PrivateFontFile>(font_file); 82 PrivateFontFile* object = PluginResource::GetAs<PrivateFontFile>(font_file);
83 if (!object) 83 if (!object)
84 return false; 84 return false;
85 85
86 std::string* contents = object->GetFontTable(table); 86 std::string* contents = object->GetFontTable(table);
87 if (!contents) { 87 if (!contents) {
88 std::string deserialized; 88 std::string deserialized;
89 PluginDispatcher::Get()->Send( 89 PluginDispatcher::Get()->Send(
90 new PpapiHostMsg_PPBPdf_GetFontTableForPrivateFontFile( 90 new PpapiHostMsg_PPBPDF_GetFontTableForPrivateFontFile(
91 INTERFACE_ID_PPB_PDF, font_file, table, &deserialized)); 91 INTERFACE_ID_PPB_PDF, font_file, table, &deserialized));
92 if (deserialized.empty()) 92 if (deserialized.empty())
93 return false; 93 return false;
94 contents = object->AddFontTable(table, deserialized); 94 contents = object->AddFontTable(table, deserialized);
95 } 95 }
96 96
97 *output_length = static_cast<uint32_t>(contents->size()); 97 *output_length = static_cast<uint32_t>(contents->size());
98 if (output) 98 if (output)
99 memcpy(output, contents->c_str(), *output_length); 99 memcpy(output, contents->c_str(), *output_length);
100 return true; 100 return true;
101 } 101 }
102 102
103 const PPB_Private ppb_private = { 103 const PPB_PDF ppb_pdf = {
104 NULL, // &GetLocalizedString, 104 NULL, // &GetLocalizedString,
105 NULL, // &GetResourceImage, 105 NULL, // &GetResourceImage,
106 &GetFontFileWithFallback, 106 &GetFontFileWithFallback,
107 &GetFontTableForPrivateFontFile, 107 &GetFontTableForPrivateFontFile,
108 }; 108 };
109 109
110 } // namespace 110 } // namespace
111 111
112 PPB_Pdf_Proxy::PPB_Pdf_Proxy(Dispatcher* dispatcher, 112 PPB_PDF_Proxy::PPB_PDF_Proxy(Dispatcher* dispatcher,
113 const void* target_interface) 113 const void* target_interface)
114 : InterfaceProxy(dispatcher, target_interface) { 114 : InterfaceProxy(dispatcher, target_interface) {
115 } 115 }
116 116
117 PPB_Pdf_Proxy::~PPB_Pdf_Proxy() { 117 PPB_PDF_Proxy::~PPB_PDF_Proxy() {
118 } 118 }
119 119
120 const void* PPB_Pdf_Proxy::GetSourceInterface() const { 120 const void* PPB_PDF_Proxy::GetSourceInterface() const {
121 return &ppb_private; 121 return &ppb_pdf;
122 } 122 }
123 123
124 InterfaceID PPB_Pdf_Proxy::GetInterfaceId() const { 124 InterfaceID PPB_PDF_Proxy::GetInterfaceId() const {
125 return INTERFACE_ID_PPB_PDF; 125 return INTERFACE_ID_PPB_PDF;
126 } 126 }
127 127
128 void PPB_Pdf_Proxy::OnMessageReceived(const IPC::Message& msg) { 128 void PPB_PDF_Proxy::OnMessageReceived(const IPC::Message& msg) {
129 IPC_BEGIN_MESSAGE_MAP(PPB_Pdf_Proxy, msg) 129 IPC_BEGIN_MESSAGE_MAP(PPB_PDF_Proxy, msg)
130 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBPdf_GetFontFileWithFallback, 130 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBPDF_GetFontFileWithFallback,
131 OnMsgGetFontFileWithFallback) 131 OnMsgGetFontFileWithFallback)
132 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBPdf_GetFontTableForPrivateFontFile, 132 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBPDF_GetFontTableForPrivateFontFile,
133 OnMsgGetFontTableForPrivateFontFile) 133 OnMsgGetFontTableForPrivateFontFile)
134 IPC_END_MESSAGE_MAP() 134 IPC_END_MESSAGE_MAP()
135 // TODO(brettw): handle bad messages! 135 // TODO(brettw): handle bad messages!
136 } 136 }
137 137
138 void PPB_Pdf_Proxy::OnMsgGetFontFileWithFallback( 138 void PPB_PDF_Proxy::OnMsgGetFontFileWithFallback(
139 PP_Module module, 139 PP_Module module,
140 const SerializedFontDescription& in_desc, 140 const SerializedFontDescription& in_desc,
141 int32_t charset, 141 int32_t charset,
142 PP_Resource* result) { 142 PP_Resource* result) {
143 PP_FontDescription_Dev desc; 143 PP_FontDescription_Dev desc;
144 in_desc.SetToPPFontDescription(dispatcher(), &desc, false); 144 in_desc.SetToPPFontDescription(dispatcher(), &desc, false);
145 *result = ppb_pdf_target()->GetFontFileWithFallback(module, &desc, 145 *result = ppb_pdf_target()->GetFontFileWithFallback(module, &desc,
146 static_cast<PP_PrivateFontCharset>(charset)); 146 static_cast<PP_PrivateFontCharset>(charset));
147 } 147 }
148 148
149 void PPB_Pdf_Proxy::OnMsgGetFontTableForPrivateFontFile(PP_Resource font_file, 149 void PPB_PDF_Proxy::OnMsgGetFontTableForPrivateFontFile(PP_Resource font_file,
150 uint32_t table, 150 uint32_t table,
151 std::string* result) { 151 std::string* result) {
152 // TODO(brettw): It would be nice not to copy here. At least on Linux, 152 // TODO(brettw): It would be nice not to copy here. At least on Linux,
153 // we can map the font file into shared memory and read it that way. 153 // we can map the font file into shared memory and read it that way.
154 uint32_t table_length = 0; 154 uint32_t table_length = 0;
155 if (!ppb_pdf_target()->GetFontTableForPrivateFontFile( 155 if (!ppb_pdf_target()->GetFontTableForPrivateFontFile(
156 font_file, table, NULL, &table_length)) 156 font_file, table, NULL, &table_length))
157 return; 157 return;
158 158
159 result->resize(table_length); 159 result->resize(table_length);
160 ppb_pdf_target()->GetFontTableForPrivateFontFile(font_file, table, 160 ppb_pdf_target()->GetFontTableForPrivateFontFile(font_file, table,
161 const_cast<char*>(result->c_str()), &table_length); 161 const_cast<char*>(result->c_str()), &table_length);
162 } 162 }
163 163
164 } // namespace proxy 164 } // namespace proxy
165 } // namespace pp 165 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_pdf_proxy.h ('k') | webkit/glue/plugins/mock_plugin_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698