OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/shared_impl/ppb_var_shared.h" | 5 #include "ppapi/shared_impl/ppb_var_shared.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "ppapi/c/ppb_var.h" | 9 #include "ppapi/c/ppb_var.h" |
10 #include "ppapi/c/ppb_var_array_buffer.h" | 10 #include "ppapi/c/ppb_var_array_buffer.h" |
11 #include "ppapi/c/pp_var.h" | 11 #include "ppapi/c/pp_var.h" |
12 #include "ppapi/shared_impl/ppapi_globals.h" | 12 #include "ppapi/shared_impl/ppapi_globals.h" |
13 #include "ppapi/shared_impl/proxy_lock.h" | 13 #include "ppapi/shared_impl/proxy_lock.h" |
14 #include "ppapi/shared_impl/resource_tracker.h" | 14 #include "ppapi/shared_impl/resource_tracker.h" |
15 #include "ppapi/shared_impl/resource_var.h" | 15 #include "ppapi/shared_impl/resource_var.h" |
16 #include "ppapi/shared_impl/var.h" | 16 #include "ppapi/shared_impl/var.h" |
17 #include "ppapi/shared_impl/var_tracker.h" | 17 #include "ppapi/shared_impl/var_tracker.h" |
18 | 18 |
19 using ppapi::PpapiGlobals; | 19 using ppapi::PpapiGlobals; |
20 using ppapi::StringVar; | 20 using ppapi::StringVar; |
21 | 21 |
22 namespace ppapi { | 22 namespace ppapi { |
23 namespace { | 23 namespace { |
24 | 24 |
25 | |
26 // PPB_Var methods ------------------------------------------------------------- | 25 // PPB_Var methods ------------------------------------------------------------- |
27 | 26 |
28 void AddRefVar(PP_Var var) { | 27 void AddRefVar(PP_Var var) { |
29 ProxyAutoLock lock; | 28 ProxyAutoLock lock; |
30 PpapiGlobals::Get()->GetVarTracker()->AddRefVar(var); | 29 PpapiGlobals::Get()->GetVarTracker()->AddRefVar(var); |
31 } | 30 } |
32 | 31 |
33 void ReleaseVar(PP_Var var) { | 32 void ReleaseVar(PP_Var var) { |
34 ProxyAutoLock lock; | 33 ProxyAutoLock lock; |
35 PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(var); | 34 PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(var); |
(...skipping 27 matching lines...) Expand all Loading... |
63 PP_Resource pp_resource = resource->GetPPResource(); | 62 PP_Resource pp_resource = resource->GetPPResource(); |
64 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(pp_resource); | 63 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(pp_resource); |
65 return pp_resource; | 64 return pp_resource; |
66 } | 65 } |
67 | 66 |
68 PP_Var VarFromResource(PP_Resource resource) { | 67 PP_Var VarFromResource(PP_Resource resource) { |
69 ProxyAutoLock lock; | 68 ProxyAutoLock lock; |
70 return PpapiGlobals::Get()->GetVarTracker()->MakeResourcePPVar(resource); | 69 return PpapiGlobals::Get()->GetVarTracker()->MakeResourcePPVar(resource); |
71 } | 70 } |
72 | 71 |
73 const PPB_Var var_interface = { | 72 const PPB_Var var_interface = {&AddRefVar, &ReleaseVar, &VarFromUtf8, |
74 &AddRefVar, | 73 &VarToUtf8, &VarToResource, &VarFromResource}; |
75 &ReleaseVar, | |
76 &VarFromUtf8, | |
77 &VarToUtf8, | |
78 &VarToResource, | |
79 &VarFromResource | |
80 }; | |
81 | 74 |
82 const PPB_Var_1_1 var_interface1_1 = { | 75 const PPB_Var_1_1 var_interface1_1 = {&AddRefVar, &ReleaseVar, |
83 &AddRefVar, | 76 &VarFromUtf8, &VarToUtf8}; |
84 &ReleaseVar, | |
85 &VarFromUtf8, | |
86 &VarToUtf8 | |
87 }; | |
88 | 77 |
89 const PPB_Var_1_0 var_interface1_0 = { | 78 const PPB_Var_1_0 var_interface1_0 = {&AddRefVar, &ReleaseVar, |
90 &AddRefVar, | 79 &VarFromUtf8_1_0, &VarToUtf8}; |
91 &ReleaseVar, | |
92 &VarFromUtf8_1_0, | |
93 &VarToUtf8 | |
94 }; | |
95 | |
96 | 80 |
97 // PPB_VarArrayBuffer methods -------------------------------------------------- | 81 // PPB_VarArrayBuffer methods -------------------------------------------------- |
98 | 82 |
99 PP_Var CreateArrayBufferVar(uint32_t size_in_bytes) { | 83 PP_Var CreateArrayBufferVar(uint32_t size_in_bytes) { |
100 ProxyAutoLock lock; | 84 ProxyAutoLock lock; |
101 return PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( | 85 return PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( |
102 size_in_bytes); | 86 size_in_bytes); |
103 } | 87 } |
104 | 88 |
105 PP_Bool ByteLength(PP_Var array, uint32_t* byte_length) { | 89 PP_Bool ByteLength(PP_Var array, uint32_t* byte_length) { |
(...skipping 14 matching lines...) Expand all Loading... |
120 } | 104 } |
121 | 105 |
122 void Unmap(PP_Var array) { | 106 void Unmap(PP_Var array) { |
123 ProxyAutoLock lock; | 107 ProxyAutoLock lock; |
124 ArrayBufferVar* buffer = ArrayBufferVar::FromPPVar(array); | 108 ArrayBufferVar* buffer = ArrayBufferVar::FromPPVar(array); |
125 if (buffer) | 109 if (buffer) |
126 buffer->Unmap(); | 110 buffer->Unmap(); |
127 } | 111 } |
128 | 112 |
129 const PPB_VarArrayBuffer_1_0 var_arraybuffer_interface = { | 113 const PPB_VarArrayBuffer_1_0 var_arraybuffer_interface = { |
130 &CreateArrayBufferVar, | 114 &CreateArrayBufferVar, &ByteLength, &Map, &Unmap}; |
131 &ByteLength, | |
132 &Map, | |
133 &Unmap | |
134 }; | |
135 | 115 |
136 } // namespace | 116 } // namespace |
137 | 117 |
138 // static | 118 // static |
139 const PPB_Var_1_2* PPB_Var_Shared::GetVarInterface1_2() { | 119 const PPB_Var_1_2* PPB_Var_Shared::GetVarInterface1_2() { |
140 return &var_interface; | 120 return &var_interface; |
141 } | 121 } |
142 | 122 |
143 // static | 123 // static |
144 const PPB_Var_1_1* PPB_Var_Shared::GetVarInterface1_1() { | 124 const PPB_Var_1_1* PPB_Var_Shared::GetVarInterface1_1() { |
145 return &var_interface1_1; | 125 return &var_interface1_1; |
146 } | 126 } |
147 | 127 |
148 // static | 128 // static |
149 const PPB_Var_1_0* PPB_Var_Shared::GetVarInterface1_0() { | 129 const PPB_Var_1_0* PPB_Var_Shared::GetVarInterface1_0() { |
150 return &var_interface1_0; | 130 return &var_interface1_0; |
151 } | 131 } |
152 | 132 |
153 // static | 133 // static |
154 const PPB_VarArrayBuffer_1_0* PPB_Var_Shared::GetVarArrayBufferInterface1_0() { | 134 const PPB_VarArrayBuffer_1_0* PPB_Var_Shared::GetVarArrayBufferInterface1_0() { |
155 return &var_arraybuffer_interface; | 135 return &var_arraybuffer_interface; |
156 } | 136 } |
157 | 137 |
158 } // namespace ppapi | 138 } // namespace ppapi |
OLD | NEW |