summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/serialized_structs.h
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/proxy/serialized_structs.h')
-rw-r--r--ppapi/proxy/serialized_structs.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/ppapi/proxy/serialized_structs.h b/ppapi/proxy/serialized_structs.h
new file mode 100644
index 0000000..516d53d
--- /dev/null
+++ b/ppapi/proxy/serialized_structs.h
@@ -0,0 +1,128 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef PPAPI_PROXY_SERIALIZED_STRUCTS_H_
+#define PPAPI_PROXY_SERIALIZED_STRUCTS_H_
+
+#include <string>
+#include <vector>
+
+#include "base/shared_memory.h"
+#include "build/build_config.h"
+#include "ipc/ipc_platform_file.h"
+#include "ppapi/c/pp_bool.h"
+#include "ppapi/c/pp_instance.h"
+#include "ppapi/c/pp_point.h"
+#include "ppapi/c/pp_rect.h"
+#include "ppapi/proxy/host_resource.h"
+#include "ppapi/proxy/serialized_var.h"
+
+struct PP_FontDescription_Dev;
+
+namespace pp {
+namespace proxy {
+
+class Dispatcher;
+
+// PP_FontDescript_Dev has to be redefined with a SerializedVar in place of
+// the PP_Var used for the face name.
+struct SerializedFontDescription {
+ SerializedFontDescription();
+ ~SerializedFontDescription();
+
+ // Converts a PP_FontDescription_Dev to a SerializedFontDescription.
+ //
+ // If source_owns_ref is true, the reference owned by the
+ // PP_FontDescription_Dev will be unchanged and the caller is responsible for
+ // freeing it. When false, the SerializedFontDescription will take ownership
+ // of the ref. This is the difference between serializing as an input value
+ // (owns_ref = true) and an output value (owns_ref = true).
+ void SetFromPPFontDescription(Dispatcher* dispatcher,
+ const PP_FontDescription_Dev& desc,
+ bool source_owns_ref);
+
+ // Converts to a PP_FontDescription_Dev. The face name will have one ref
+ // assigned to it on behalf of the caller.
+ //
+ // If dest_owns_ref is set, the resulting PP_FontDescription_Dev will keep a
+ // reference to any strings we made on its behalf even when the
+ // SerializedFontDescription goes away. When false, ownership of the ref will
+ // stay with the SerializedFontDescription and the PP_FontDescription_Dev
+ // will just refer to that one. This is the difference between deserializing
+ // as an input value (owns_ref = false) and an output value (owns_ref = true).
+ void SetToPPFontDescription(Dispatcher* dispatcher,
+ PP_FontDescription_Dev* desc,
+ bool dest_owns_ref) const;
+
+ pp::proxy::SerializedVar face;
+ int32_t family;
+ uint32_t size;
+ int32_t weight;
+ PP_Bool italic;
+ PP_Bool small_caps;
+ int32_t letter_spacing;
+ int32_t word_spacing;
+};
+
+struct SerializedDirEntry {
+ std::string name;
+ bool is_dir;
+};
+
+// FileRefs are created in a number of places and they include a number of
+// return values. This struct encapsulates everything in one place.
+struct PPBFileRef_CreateInfo {
+ PPBFileRef_CreateInfo(); // Initializes to 0.
+
+ HostResource resource;
+ int file_system_type; // One of PP_FileSystemType values.
+ SerializedVar path;
+ SerializedVar name;
+};
+
+struct PPBFlash_DrawGlyphs_Params {
+ PPBFlash_DrawGlyphs_Params();
+ ~PPBFlash_DrawGlyphs_Params();
+
+ PP_Instance instance;
+ HostResource image_data;
+ SerializedFontDescription font_desc;
+ uint32_t color;
+ PP_Point position;
+ PP_Rect clip;
+ float transformation[3][3];
+ std::vector<uint16_t> glyph_indices;
+ std::vector<PP_Point> glyph_advances;
+};
+
+struct PPBAudio_NotifyAudioStreamCreated_Params {
+ pp::proxy::HostResource audio_id;
+ int32_t result_code; // Will be != PP_OK on failure
+ IPC::PlatformFileForTransit socket_handle;
+ base::SharedMemoryHandle handle;
+ int32_t length;
+};
+
+struct PPBURLLoader_UpdateProgress_Params {
+ PP_Instance instance;
+ pp::proxy::HostResource resource;
+ int64_t bytes_sent;
+ int64_t total_bytes_to_be_sent;
+ int64_t bytes_received;
+ int64_t total_bytes_to_be_received;
+};
+
+#if defined(OS_WIN)
+typedef HANDLE ImageHandle;
+#elif defined(OS_MACOSX)
+typedef base::SharedMemoryHandle ImageHandle;
+#else
+// On X Windows this is a SysV shared memory key.
+typedef int ImageHandle;
+#endif
+
+} // namespace proxy
+} // namespace pp
+
+#endif // PPAPI_PROXY_SERIALIZED_STRUCTS_H_