| 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 |