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

Unified Diff: ppapi/native_client/src/shared/ppapi_proxy/browser_ppp_printing.cc

Issue 7740013: Cloning a bunch of stuff from the native_client repository at r6528 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
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: ppapi/native_client/src/shared/ppapi_proxy/browser_ppp_printing.cc
===================================================================
--- ppapi/native_client/src/shared/ppapi_proxy/browser_ppp_printing.cc (revision 0)
+++ ppapi/native_client/src/shared/ppapi_proxy/browser_ppp_printing.cc (revision 0)
@@ -0,0 +1,120 @@
+// Copyright (c) 2011 The Native Client Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "native_client/src/shared/ppapi_proxy/browser_ppp_printing.h"
+
+// Include file order cannot be observed because ppp_instance declares a
+// structure return type that causes an error on Windows.
+// TODO(sehr, brettw): fix the return types and include order in PPAPI.
+#include "ppapi/c/pp_instance.h"
+#include "ppapi/c/pp_resource.h"
+#include "srpcgen/ppp_rpc.h"
+#include "native_client/src/include/portability.h"
+#include "native_client/src/shared/ppapi_proxy/browser_globals.h"
+#include "native_client/src/shared/ppapi_proxy/browser_ppp.h"
+#include "native_client/src/shared/ppapi_proxy/utility.h"
+
+namespace ppapi_proxy {
+
+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));
+
+PP_PrintOutputFormat_Dev* QuerySupportedFormats(PP_Instance instance,
+ uint32_t* format_count) {
+ DebugPrintf("PPP_Printing_Dev::QuerySupportedFormats: "
+ "instance=%"NACL_PRIu32"\n", instance);
+
+ const PPB_Memory_Dev* ppb_memory = PPBMemoryInterface();
+ const nacl_abi_size_t kMaxFormats = 8;
+ nacl_abi_size_t formats_bytes = kMaxFormats * kPPPrintOutputFormatBytes;
+ char* formats =
+ reinterpret_cast<char*>(ppb_memory->MemAlloc(formats_bytes));
+ NaClSrpcError srpc_result =
+ PppPrintingRpcClient::PPP_Printing_QuerySupportedFormats(
+ GetMainSrpcChannel(instance),
+ instance,
+ &formats_bytes, formats,
+ reinterpret_cast<int32_t*>(format_count));
+
+ DebugPrintf("PPP_Printing_Dev::QuerySupportedFormats: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ if (*format_count > 0)
+ return reinterpret_cast<PP_PrintOutputFormat_Dev*>(formats);
+
+ ppb_memory->MemFree(formats);
+ return NULL;
+}
+
+int32_t Begin(PP_Instance instance,
+ const struct PP_PrintSettings_Dev* print_settings) {
+ DebugPrintf("PPP_Printing_Dev::Begin: instance=%"NACL_PRIu32"\n", instance);
+
+ int32_t pages_required = 0;
+ NaClSrpcError srpc_result =
+ PppPrintingRpcClient::PPP_Printing_Begin(
+ GetMainSrpcChannel(instance),
+ instance,
+ kPPPrintSettingsBytes,
+ reinterpret_cast<char*>(
+ const_cast<PP_PrintSettings_Dev*>(print_settings)),
+ &pages_required);
+
+ DebugPrintf("PPP_Printing_Dev::QuerySupportedFormats: %s\n",
+ NaClSrpcErrorString(srpc_result));
+ return pages_required;
+}
+
+PP_Resource PrintPages(PP_Instance instance,
+ const struct PP_PrintPageNumberRange_Dev* page_ranges,
+ uint32_t page_range_count) {
+ DebugPrintf("PPP_Printing_Dev::PrintPages: "
+ "instance=%"NACL_PRIu32"\n", instance);
+
+ PP_Resource image_data = kInvalidResourceId;
+ NaClSrpcError srpc_result =
+ PppPrintingRpcClient::PPP_Printing_PrintPages(
+ GetMainSrpcChannel(instance),
+ instance,
+ page_range_count * kPPPrintPageNumberRangeBytes,
+ reinterpret_cast<char*>(
+ const_cast<PP_PrintPageNumberRange_Dev*>(page_ranges)),
+ page_range_count,
+ &image_data);
+
+ DebugPrintf("PPP_Printing_Dev::QuerySupportedFormats: %s\n",
+ NaClSrpcErrorString(srpc_result));
+ return image_data;
+}
+
+void End(PP_Instance instance) {
+ DebugPrintf("PPP_Printing_Dev::End: instance=%"NACL_PRIu32"\n", instance);
+
+ NaClSrpcError srpc_result =
+ PppPrintingRpcClient::PPP_Printing_End(GetMainSrpcChannel(instance),
+ instance);
+
+ DebugPrintf("PPP_Printing_Dev::End: %s\n", NaClSrpcErrorString(srpc_result));
+}
+
+} // namespace
+
+const PPP_Printing_Dev* BrowserPrinting::GetInterface() {
+ static const PPP_Printing_Dev printing_interface = {
+ QuerySupportedFormats,
+ Begin,
+ PrintPages,
+ End
+ };
+ return &printing_interface;
+}
+
+} // namespace ppapi_proxy
+

Powered by Google App Engine
This is Rietveld 408576698