OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #ifndef PPAPI_PROXY_RAW_VAR_DATA_H_ | 5 #ifndef PPAPI_PROXY_RAW_VAR_DATA_H_ |
6 #define PPAPI_PROXY_RAW_VAR_DATA_H_ | 6 #define PPAPI_PROXY_RAW_VAR_DATA_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
| 11 #include <memory> |
11 #include <vector> | 12 #include <vector> |
12 | 13 |
13 #include "base/callback.h" | 14 #include "base/callback.h" |
14 #include "base/macros.h" | 15 #include "base/macros.h" |
15 #include "base/memory/scoped_ptr.h" | |
16 #include "ppapi/c/pp_instance.h" | 16 #include "ppapi/c/pp_instance.h" |
17 #include "ppapi/c/pp_var.h" | 17 #include "ppapi/c/pp_var.h" |
18 #include "ppapi/proxy/ppapi_param_traits.h" | 18 #include "ppapi/proxy/ppapi_param_traits.h" |
19 #include "ppapi/proxy/ppapi_proxy_export.h" | 19 #include "ppapi/proxy/ppapi_proxy_export.h" |
20 #include "ppapi/proxy/serialized_handle.h" | 20 #include "ppapi/proxy/serialized_handle.h" |
21 | 21 |
22 namespace base { | 22 namespace base { |
23 class Pickle; | 23 class Pickle; |
24 class PickleIterator; | 24 class PickleIterator; |
25 } | 25 } |
(...skipping 23 matching lines...) Expand all Loading... |
49 // 2 | var type | | 49 // 2 | var type | |
50 // | var data | | 50 // | var data | |
51 // | .... | | 51 // | .... | |
52 // | 52 // |
53 // Vars that reference other vars (such as Arrays or Dictionaries) use indices | 53 // Vars that reference other vars (such as Arrays or Dictionaries) use indices |
54 // into the message to denote which PP_Var is pointed to. | 54 // into the message to denote which PP_Var is pointed to. |
55 class PPAPI_PROXY_EXPORT RawVarDataGraph { | 55 class PPAPI_PROXY_EXPORT RawVarDataGraph { |
56 public: | 56 public: |
57 // Construct a RawVarDataGraph from a given root PP_Var. A null pointer | 57 // Construct a RawVarDataGraph from a given root PP_Var. A null pointer |
58 // is returned upon failure. | 58 // is returned upon failure. |
59 static scoped_ptr<RawVarDataGraph> Create(const PP_Var& var, | 59 static std::unique_ptr<RawVarDataGraph> Create(const PP_Var& var, |
60 PP_Instance instance); | 60 PP_Instance instance); |
61 | 61 |
62 // Constructs an empty RawVarDataGraph. | 62 // Constructs an empty RawVarDataGraph. |
63 RawVarDataGraph(); | 63 RawVarDataGraph(); |
64 ~RawVarDataGraph(); | 64 ~RawVarDataGraph(); |
65 | 65 |
66 // Construct a new PP_Var from the graph. All of the PP_Vars referenced by | 66 // Construct a new PP_Var from the graph. All of the PP_Vars referenced by |
67 // the returned PP_Var are also constructed. Each PP_Var created has a | 67 // the returned PP_Var are also constructed. Each PP_Var created has a |
68 // ref-count equal to the number of references it has in the graph of vars. | 68 // ref-count equal to the number of references it has in the graph of vars. |
69 // The returned var (the "root") has one additional reference. | 69 // The returned var (the "root") has one additional reference. |
70 PP_Var CreatePPVar(PP_Instance instance); | 70 PP_Var CreatePPVar(PP_Instance instance); |
71 | 71 |
72 // Write the graph to a message using the given HandleWriter. | 72 // Write the graph to a message using the given HandleWriter. |
73 void Write(base::Pickle* m, const HandleWriter& handle_writer); | 73 void Write(base::Pickle* m, const HandleWriter& handle_writer); |
74 | 74 |
75 // Create a RawVarDataGraph from the given message. | 75 // Create a RawVarDataGraph from the given message. |
76 static scoped_ptr<RawVarDataGraph> Read(const base::Pickle* m, | 76 static std::unique_ptr<RawVarDataGraph> Read(const base::Pickle* m, |
77 base::PickleIterator* iter); | 77 base::PickleIterator* iter); |
78 | 78 |
79 // Returns a vector of SerializedHandles associated with this RawVarDataGraph. | 79 // Returns a vector of SerializedHandles associated with this RawVarDataGraph. |
80 // Ownership of the pointers remains with the elements of the RawVarDataGraph. | 80 // Ownership of the pointers remains with the elements of the RawVarDataGraph. |
81 std::vector<SerializedHandle*> GetHandles(); | 81 std::vector<SerializedHandle*> GetHandles(); |
82 | 82 |
83 // Sets the threshold size at which point we switch from transmitting | 83 // Sets the threshold size at which point we switch from transmitting |
84 // array buffers in IPC messages to using shared memory. This is only used | 84 // array buffers in IPC messages to using shared memory. This is only used |
85 // for testing purposes where we need to transmit small buffers using shmem | 85 // for testing purposes where we need to transmit small buffers using shmem |
86 // (in order to have fast tests). | 86 // (in order to have fast tests). |
87 static void SetMinimumArrayBufferSizeForShmemForTest(uint32_t threshold); | 87 static void SetMinimumArrayBufferSizeForShmemForTest(uint32_t threshold); |
88 | 88 |
89 private: | 89 private: |
90 // A list of the nodes in the graph. | 90 // A list of the nodes in the graph. |
91 std::vector<scoped_ptr<RawVarData>> data_; | 91 std::vector<std::unique_ptr<RawVarData>> data_; |
92 | 92 |
93 DISALLOW_COPY_AND_ASSIGN(RawVarDataGraph); | 93 DISALLOW_COPY_AND_ASSIGN(RawVarDataGraph); |
94 }; | 94 }; |
95 | 95 |
96 // Abstract base class for the data contained in a PP_Var. | 96 // Abstract base class for the data contained in a PP_Var. |
97 class RawVarData { | 97 class RawVarData { |
98 public: | 98 public: |
99 // Create a new, empty RawVarData for the given type. | 99 // Create a new, empty RawVarData for the given type. |
100 static RawVarData* Create(PP_VarType type); | 100 static RawVarData* Create(PP_VarType type); |
101 RawVarData(); | 101 RawVarData(); |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 // Pending resource host ID in the renderer. | 288 // Pending resource host ID in the renderer. |
289 int pending_renderer_host_id_; | 289 int pending_renderer_host_id_; |
290 | 290 |
291 // Pending resource host ID in the browser. | 291 // Pending resource host ID in the browser. |
292 int pending_browser_host_id_; | 292 int pending_browser_host_id_; |
293 | 293 |
294 // A message containing information about how to create a plugin-side | 294 // A message containing information about how to create a plugin-side |
295 // resource. The message type will vary based on the resource type, and will | 295 // resource. The message type will vary based on the resource type, and will |
296 // usually contain a pending resource host ID, and other required information. | 296 // usually contain a pending resource host ID, and other required information. |
297 // If the resource was created directly, this is NULL. | 297 // If the resource was created directly, this is NULL. |
298 scoped_ptr<IPC::Message> creation_message_; | 298 std::unique_ptr<IPC::Message> creation_message_; |
299 }; | 299 }; |
300 | 300 |
301 } // namespace proxy | 301 } // namespace proxy |
302 } // namespace ppapi | 302 } // namespace ppapi |
303 | 303 |
304 #endif // PPAPI_PROXY_RAW_VAR_DATA_H_ | 304 #endif // PPAPI_PROXY_RAW_VAR_DATA_H_ |
OLD | NEW |