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

Unified Diff: src/shared/ppapi_proxy/plugin_ppp_printing_rpc_server.cc

Issue 7714041: Update proxy for PPP_Printing_Dev to deal with new QuerySupportedFormats (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Created 9 years, 4 months 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 side-by-side diff with in-line comments
Download patch
Index: src/shared/ppapi_proxy/plugin_ppp_printing_rpc_server.cc
diff --git a/src/shared/ppapi_proxy/plugin_ppp_printing_rpc_server.cc b/src/shared/ppapi_proxy/plugin_ppp_printing_rpc_server.cc
index 7ac00865d61a1148e6700cb04cb83fcad2533095..fd8e911a141678a9c7397d4e757c4d03beddc955 100644
--- a/src/shared/ppapi_proxy/plugin_ppp_printing_rpc_server.cc
+++ b/src/shared/ppapi_proxy/plugin_ppp_printing_rpc_server.cc
@@ -9,25 +9,30 @@
#include "native_client/src/include/portability.h"
#include "native_client/src/include/portability_process.h"
#include "native_client/src/shared/ppapi_proxy/browser_globals.h"
-#include "native_client/src/shared/ppapi_proxy/plugin_globals.h"
+#include "native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppp_rpc.h"
elijahtaylor (use chromium) 2011/08/24 20:08:23 Same comment
#include "native_client/src/shared/ppapi_proxy/utility.h"
#include "native_client/src/third_party/ppapi/c/dev/ppp_printing_dev.h"
#include "native_client/src/third_party/ppapi/c/pp_resource.h"
#include "native_client/src/third_party/ppapi/c/ppp.h"
-#include "srpcgen/ppp_rpc.h"
using ppapi_proxy::DebugPrintf;
-using ppapi_proxy::PPPPrintingInterface;
namespace {
-const nacl_abi_size_t kPPPrintOutputFormatBytes =
- static_cast<nacl_abi_size_t>(sizeof(PP_PrintOutputFormat_Dev));
const nacl_abi_size_t kPPPrintSettingsBytes =
static_cast<nacl_abi_size_t>(sizeof(struct PP_PrintSettings_Dev));
const nacl_abi_size_t kPPPrintPageNumberRangeBytes =
static_cast<nacl_abi_size_t>(sizeof(struct PP_PrintPageNumberRange_Dev));
+const PPP_Printing_Dev* PPPPrinting() {
+ static const PPP_Printing_Dev* ppp_printing = NULL;
+ if (ppp_printing == NULL) {
+ ppp_printing = reinterpret_cast<const PPP_Printing_Dev*>(
+ ::PPP_GetInterface(PPP_PRINTING_DEV_INTERFACE));
+ }
+ return ppp_printing;
+}
elijahtaylor (use chromium) 2011/08/24 20:08:23 It looks like this is normally implemented in plug
+
} // namespace
void PppPrintingRpcServer::PPP_Printing_QuerySupportedFormats(
@@ -36,29 +41,18 @@ void PppPrintingRpcServer::PPP_Printing_QuerySupportedFormats(
// inputs
PP_Instance instance,
// outputs
- nacl_abi_size_t* formats_bytes, char* formats,
- int32_t* format_count) {
+ int32_t* formats) {
rpc->result = NACL_SRPC_RESULT_APP_ERROR;
NaClSrpcClosureRunner runner(done);
- PP_PrintOutputFormat_Dev* pp_formats =
- PPPPrintingInterface()->QuerySupportedFormats(
- instance,
- reinterpret_cast<uint32_t*>(format_count));
- if (pp_formats != NULL) {
- nacl_abi_size_t formats_bytes_needed =
- *format_count * kPPPrintOutputFormatBytes;
- if (*formats_bytes >= formats_bytes_needed) {
- *formats_bytes = formats_bytes_needed;
- memcpy(pp_formats, formats, formats_bytes_needed);
- } else {
- *format_count = 0;
- }
- ppapi_proxy::PPBMemoryInterface()->MemFree(pp_formats);
- }
+ const PPP_Printing_Dev* ppp_printing = PPPPrinting();
+ if (ppp_printing == NULL || ppp_printing->QuerySupportedFormats == NULL)
+ return;
+ uint32_t pp_formats = ppp_printing->QuerySupportedFormats(instance);
+ *formats = static_cast<int32_t>(pp_formats);
DebugPrintf("PPP_Printing::QuerySupportedFormats: "
- "format_count=%"NACL_PRId32"\n", *format_count);
+ "formats=%"NACL_PRId32"\n", *formats);
rpc->result = NACL_SRPC_RESULT_OK;
}
@@ -73,11 +67,14 @@ void PppPrintingRpcServer::PPP_Printing_Begin(
rpc->result = NACL_SRPC_RESULT_APP_ERROR;
NaClSrpcClosureRunner runner(done);
+ const PPP_Printing_Dev* ppp_printing = PPPPrinting();
+ if (ppp_printing == NULL || ppp_printing->Begin == NULL)
elijahtaylor (use chromium) 2011/08/24 20:08:23 If you follow the pattern from plugin_globals.cc,
dmichael (off chromium) 2011/08/24 21:21:30 Oops. I had the change in a git repo that was set
+ return;
if (print_settings_bytes != sizeof(struct PP_PrintSettings_Dev))
return;
struct PP_PrintSettings_Dev* pp_print_settings =
reinterpret_cast<struct PP_PrintSettings_Dev*>(print_settings);
- *pages_required = PPPPrintingInterface()->Begin(instance, pp_print_settings);
+ *pages_required = ppp_printing->Begin(instance, pp_print_settings);
DebugPrintf("PPP_Printing::Begin: pages_required=%"NACL_PRId32"\n",
*pages_required);
@@ -96,13 +93,16 @@ void PppPrintingRpcServer::PPP_Printing_PrintPages(
rpc->result = NACL_SRPC_RESULT_APP_ERROR;
NaClSrpcClosureRunner runner(done);
+ const PPP_Printing_Dev* ppp_printing = PPPPrinting();
+ if (ppp_printing == NULL || ppp_printing->PrintPages == NULL)
+ return;
elijahtaylor (use chromium) 2011/08/24 20:08:23 same
if (page_ranges_bytes < kPPPrintPageNumberRangeBytes * page_range_count)
return;
struct PP_PrintPageNumberRange_Dev* pp_page_ranges =
reinterpret_cast<struct PP_PrintPageNumberRange_Dev*>(page_ranges);
- *image_data = PPPPrintingInterface()->PrintPages(instance,
- pp_page_ranges,
- page_range_count);
+ *image_data = ppp_printing->PrintPages(instance,
+ pp_page_ranges,
+ page_range_count);
DebugPrintf("PPP_Printing::PrintPages: image_data=%"NACL_PRIu32"\n",
*image_data);
@@ -117,8 +117,12 @@ void PppPrintingRpcServer::PPP_Printing_End(
rpc->result = NACL_SRPC_RESULT_APP_ERROR;
NaClSrpcClosureRunner runner(done);
- PPPPrintingInterface()->End(instance);
+ const PPP_Printing_Dev* ppp_printing = PPPPrinting();
+ if (ppp_printing == NULL || ppp_printing->End == NULL)
+ return;
elijahtaylor (use chromium) 2011/08/24 20:08:23 same
+ ppp_printing->End(instance);
DebugPrintf("PPP_Printing::End\n");
rpc->result = NACL_SRPC_RESULT_OK;
}
+

Powered by Google App Engine
This is Rietveld 408576698