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/var.h" | 5 #include "ppapi/shared_impl/var.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 return base::StringPrintf("[Resource %d]", resource->GetPPResource()); | 69 return base::StringPrintf("[Resource %d]", resource->GetPPResource()); |
70 } else { | 70 } else { |
71 return "[Null resource]"; | 71 return "[Null resource]"; |
72 } | 72 } |
73 } | 73 } |
74 default: | 74 default: |
75 return "[Invalid var]"; | 75 return "[Invalid var]"; |
76 } | 76 } |
77 } | 77 } |
78 | 78 |
79 StringVar* Var::AsStringVar() { | 79 StringVar* Var::AsStringVar() { return NULL; } |
80 return NULL; | |
81 } | |
82 | 80 |
83 ArrayBufferVar* Var::AsArrayBufferVar() { | 81 ArrayBufferVar* Var::AsArrayBufferVar() { return NULL; } |
84 return NULL; | |
85 } | |
86 | 82 |
87 NPObjectVar* Var::AsNPObjectVar() { | 83 NPObjectVar* Var::AsNPObjectVar() { return NULL; } |
88 return NULL; | |
89 } | |
90 | 84 |
91 ProxyObjectVar* Var::AsProxyObjectVar() { | 85 ProxyObjectVar* Var::AsProxyObjectVar() { return NULL; } |
92 return NULL; | |
93 } | |
94 | 86 |
95 ArrayVar* Var::AsArrayVar() { | 87 ArrayVar* Var::AsArrayVar() { return NULL; } |
96 return NULL; | |
97 } | |
98 | 88 |
99 DictionaryVar* Var::AsDictionaryVar() { | 89 DictionaryVar* Var::AsDictionaryVar() { return NULL; } |
100 return NULL; | |
101 } | |
102 | 90 |
103 ResourceVar* Var::AsResourceVar() { | 91 ResourceVar* Var::AsResourceVar() { return NULL; } |
104 return NULL; | |
105 } | |
106 | 92 |
107 PP_Var Var::GetPPVar() { | 93 PP_Var Var::GetPPVar() { |
108 int32 id = GetOrCreateVarID(); | 94 int32 id = GetOrCreateVarID(); |
109 if (!id) | 95 if (!id) |
110 return PP_MakeNull(); | 96 return PP_MakeNull(); |
111 | 97 |
112 PP_Var result; | 98 PP_Var result; |
113 result.type = GetType(); | 99 result.type = GetType(); |
114 result.padding = 0; | 100 result.padding = 0; |
115 result.value.as_id = id; | 101 result.value.as_id = id; |
116 return result; | 102 return result; |
117 } | 103 } |
118 | 104 |
119 int32 Var::GetExistingVarID() const { | 105 int32 Var::GetExistingVarID() const { return var_id_; } |
120 return var_id_; | |
121 } | |
122 | 106 |
123 Var::Var() : var_id_(0) { | 107 Var::Var() : var_id_(0) {} |
124 } | |
125 | 108 |
126 Var::~Var() { | 109 Var::~Var() {} |
127 } | |
128 | 110 |
129 int32 Var::GetOrCreateVarID() { | 111 int32 Var::GetOrCreateVarID() { |
130 VarTracker* tracker = PpapiGlobals::Get()->GetVarTracker(); | 112 VarTracker* tracker = PpapiGlobals::Get()->GetVarTracker(); |
131 if (var_id_) { | 113 if (var_id_) { |
132 if (!tracker->AddRefVar(var_id_)) | 114 if (!tracker->AddRefVar(var_id_)) |
133 return 0; | 115 return 0; |
134 } else { | 116 } else { |
135 var_id_ = tracker->AddVar(this); | 117 var_id_ = tracker->AddVar(this); |
136 if (!var_id_) | 118 if (!var_id_) |
137 return 0; | 119 return 0; |
138 } | 120 } |
139 return var_id_; | 121 return var_id_; |
140 } | 122 } |
141 | 123 |
142 void Var::AssignVarID(int32 id) { | 124 void Var::AssignVarID(int32 id) { |
143 DCHECK(!var_id_); // Must not have already been generated. | 125 DCHECK(!var_id_); // Must not have already been generated. |
144 var_id_ = id; | 126 var_id_ = id; |
145 } | 127 } |
146 | 128 |
147 // StringVar ------------------------------------------------------------------- | 129 // StringVar ------------------------------------------------------------------- |
148 | 130 |
149 StringVar::StringVar() { | 131 StringVar::StringVar() {} |
150 } | |
151 | 132 |
152 StringVar::StringVar(const std::string& str) | 133 StringVar::StringVar(const std::string& str) : value_(str) {} |
153 : value_(str) { | |
154 } | |
155 | 134 |
156 StringVar::StringVar(const char* str, uint32 len) | 135 StringVar::StringVar(const char* str, uint32 len) : value_(str, len) {} |
157 : value_(str, len) { | |
158 } | |
159 | 136 |
160 StringVar::~StringVar() { | 137 StringVar::~StringVar() {} |
161 } | |
162 | 138 |
163 StringVar* StringVar::AsStringVar() { | 139 StringVar* StringVar::AsStringVar() { return this; } |
164 return this; | |
165 } | |
166 | 140 |
167 PP_VarType StringVar::GetType() const { | 141 PP_VarType StringVar::GetType() const { return PP_VARTYPE_STRING; } |
168 return PP_VARTYPE_STRING; | |
169 } | |
170 | 142 |
171 // static | 143 // static |
172 PP_Var StringVar::StringToPPVar(const std::string& var) { | 144 PP_Var StringVar::StringToPPVar(const std::string& var) { |
173 return StringToPPVar(var.c_str(), static_cast<uint32>(var.size())); | 145 return StringToPPVar(var.c_str(), static_cast<uint32>(var.size())); |
174 } | 146 } |
175 | 147 |
176 // static | 148 // static |
177 PP_Var StringVar::StringToPPVar(const char* data, uint32 len) { | 149 PP_Var StringVar::StringToPPVar(const char* data, uint32 len) { |
178 scoped_refptr<StringVar> str(new StringVar(data, len)); | 150 scoped_refptr<StringVar> str(new StringVar(data, len)); |
179 if (!str.get() || !IsStringUTF8(str->value())) | 151 if (!str.get() || !IsStringUTF8(str->value())) |
(...skipping 14 matching lines...) Expand all Loading... |
194 | 166 |
195 // static | 167 // static |
196 PP_Var StringVar::SwapValidatedUTF8StringIntoPPVar(std::string* src) { | 168 PP_Var StringVar::SwapValidatedUTF8StringIntoPPVar(std::string* src) { |
197 scoped_refptr<StringVar> str(new StringVar); | 169 scoped_refptr<StringVar> str(new StringVar); |
198 str->value_.swap(*src); | 170 str->value_.swap(*src); |
199 return str->GetPPVar(); | 171 return str->GetPPVar(); |
200 } | 172 } |
201 | 173 |
202 // ArrayBufferVar -------------------------------------------------------------- | 174 // ArrayBufferVar -------------------------------------------------------------- |
203 | 175 |
204 ArrayBufferVar::ArrayBufferVar() { | 176 ArrayBufferVar::ArrayBufferVar() {} |
205 } | |
206 | 177 |
207 ArrayBufferVar::~ArrayBufferVar() { | 178 ArrayBufferVar::~ArrayBufferVar() {} |
208 } | |
209 | 179 |
210 ArrayBufferVar* ArrayBufferVar::AsArrayBufferVar() { | 180 ArrayBufferVar* ArrayBufferVar::AsArrayBufferVar() { return this; } |
211 return this; | |
212 } | |
213 | 181 |
214 PP_VarType ArrayBufferVar::GetType() const { | 182 PP_VarType ArrayBufferVar::GetType() const { return PP_VARTYPE_ARRAY_BUFFER; } |
215 return PP_VARTYPE_ARRAY_BUFFER; | |
216 } | |
217 | 183 |
218 // static | 184 // static |
219 ArrayBufferVar* ArrayBufferVar::FromPPVar(PP_Var var) { | 185 ArrayBufferVar* ArrayBufferVar::FromPPVar(PP_Var var) { |
220 if (var.type != PP_VARTYPE_ARRAY_BUFFER) | 186 if (var.type != PP_VARTYPE_ARRAY_BUFFER) |
221 return NULL; | 187 return NULL; |
222 scoped_refptr<Var> var_object( | 188 scoped_refptr<Var> var_object( |
223 PpapiGlobals::Get()->GetVarTracker()->GetVar(var)); | 189 PpapiGlobals::Get()->GetVarTracker()->GetVar(var)); |
224 if (!var_object.get()) | 190 if (!var_object.get()) |
225 return NULL; | 191 return NULL; |
226 return var_object->AsArrayBufferVar(); | 192 return var_object->AsArrayBufferVar(); |
227 } | 193 } |
228 | 194 |
229 } // namespace ppapi | 195 } // namespace ppapi |
230 | |
OLD | NEW |