| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 return "[Object]"; | 58 return "[Object]"; |
| 59 default: | 59 default: |
| 60 return "[Invalid var]"; | 60 return "[Invalid var]"; |
| 61 } | 61 } |
| 62 } | 62 } |
| 63 | 63 |
| 64 StringVar* Var::AsStringVar() { | 64 StringVar* Var::AsStringVar() { |
| 65 return NULL; | 65 return NULL; |
| 66 } | 66 } |
| 67 | 67 |
| 68 ArrayBufferVar* Var::AsArrayBufferVar() { |
| 69 return NULL; |
| 70 } |
| 71 |
| 68 NPObjectVar* Var::AsNPObjectVar() { | 72 NPObjectVar* Var::AsNPObjectVar() { |
| 69 return NULL; | 73 return NULL; |
| 70 } | 74 } |
| 71 | 75 |
| 72 ProxyObjectVar* Var::AsProxyObjectVar() { | 76 ProxyObjectVar* Var::AsProxyObjectVar() { |
| 73 return NULL; | 77 return NULL; |
| 74 } | 78 } |
| 75 | 79 |
| 80 PP_Var Var::GetPPVar() { |
| 81 int32 id = GetOrCreateVarID(); |
| 82 if (!id) |
| 83 return PP_MakeNull(); |
| 84 |
| 85 PP_Var result; |
| 86 result.type = GetType(); |
| 87 result.padding = 0; |
| 88 result.value.as_id = id; |
| 89 return result; |
| 90 } |
| 91 |
| 76 int32 Var::GetExistingVarID() const { | 92 int32 Var::GetExistingVarID() const { |
| 77 return var_id_; | 93 return var_id_; |
| 78 } | 94 } |
| 79 | 95 |
| 80 int32 Var::GetOrCreateVarID() { | 96 int32 Var::GetOrCreateVarID() { |
| 81 VarTracker* tracker = PpapiGlobals::Get()->GetVarTracker(); | 97 VarTracker* tracker = PpapiGlobals::Get()->GetVarTracker(); |
| 82 if (var_id_) { | 98 if (var_id_) { |
| 83 if (!tracker->AddRefVar(var_id_)) | 99 if (!tracker->AddRefVar(var_id_)) |
| 84 return 0; | 100 return 0; |
| 85 } else { | 101 } else { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 105 : value_(str, len) { | 121 : value_(str, len) { |
| 106 } | 122 } |
| 107 | 123 |
| 108 StringVar::~StringVar() { | 124 StringVar::~StringVar() { |
| 109 } | 125 } |
| 110 | 126 |
| 111 StringVar* StringVar::AsStringVar() { | 127 StringVar* StringVar::AsStringVar() { |
| 112 return this; | 128 return this; |
| 113 } | 129 } |
| 114 | 130 |
| 115 PP_Var StringVar::GetPPVar() { | |
| 116 int32 id = GetOrCreateVarID(); | |
| 117 if (!id) | |
| 118 return PP_MakeNull(); | |
| 119 | |
| 120 PP_Var result; | |
| 121 result.type = PP_VARTYPE_STRING; | |
| 122 result.padding = 0; | |
| 123 result.value.as_id = id; | |
| 124 return result; | |
| 125 } | |
| 126 | |
| 127 PP_VarType StringVar::GetType() const { | 131 PP_VarType StringVar::GetType() const { |
| 128 return PP_VARTYPE_STRING; | 132 return PP_VARTYPE_STRING; |
| 129 } | 133 } |
| 130 | 134 |
| 131 // static | 135 // static |
| 132 PP_Var StringVar::StringToPPVar(const std::string& var) { | 136 PP_Var StringVar::StringToPPVar(const std::string& var) { |
| 133 return StringToPPVar(var.c_str(), var.size()); | 137 return StringToPPVar(var.c_str(), var.size()); |
| 134 } | 138 } |
| 135 | 139 |
| 136 // static | 140 // static |
| 137 PP_Var StringVar::StringToPPVar(const char* data, uint32 len) { | 141 PP_Var StringVar::StringToPPVar(const char* data, uint32 len) { |
| 138 scoped_refptr<StringVar> str(new StringVar(data, len)); | 142 scoped_refptr<StringVar> str(new StringVar(data, len)); |
| 139 if (!str || !IsStringUTF8(str->value())) | 143 if (!str || !IsStringUTF8(str->value())) |
| 140 return PP_MakeNull(); | 144 return PP_MakeNull(); |
| 141 return str->GetPPVar(); | 145 return str->GetPPVar(); |
| 142 } | 146 } |
| 143 | 147 |
| 144 // static | 148 // static |
| 145 StringVar* StringVar::FromPPVar(PP_Var var) { | 149 StringVar* StringVar::FromPPVar(PP_Var var) { |
| 146 if (var.type != PP_VARTYPE_STRING) | 150 if (var.type != PP_VARTYPE_STRING) |
| 147 return NULL; | 151 return NULL; |
| 148 scoped_refptr<Var> var_object( | 152 scoped_refptr<Var> var_object( |
| 149 PpapiGlobals::Get()->GetVarTracker()->GetVar(var)); | 153 PpapiGlobals::Get()->GetVarTracker()->GetVar(var)); |
| 150 if (!var_object) | 154 if (!var_object) |
| 151 return NULL; | 155 return NULL; |
| 152 return var_object->AsStringVar(); | 156 return var_object->AsStringVar(); |
| 153 } | 157 } |
| 154 | 158 |
| 159 // ArrayBufferVar -------------------------------------------------------------- |
| 160 |
| 161 ArrayBufferVar::ArrayBufferVar() { |
| 162 } |
| 163 |
| 164 ArrayBufferVar::~ArrayBufferVar() { |
| 165 } |
| 166 |
| 167 ArrayBufferVar* ArrayBufferVar::AsArrayBufferVar() { |
| 168 return this; |
| 169 } |
| 170 |
| 171 PP_VarType ArrayBufferVar::GetType() const { |
| 172 return PP_VARTYPE_ARRAY_BUFFER; |
| 173 } |
| 174 |
| 175 // static |
| 176 ArrayBufferVar* ArrayBufferVar::FromPPVar(PP_Var var) { |
| 177 if (var.type != PP_VARTYPE_ARRAY_BUFFER) |
| 178 return NULL; |
| 179 scoped_refptr<Var> var_object( |
| 180 PpapiGlobals::Get()->GetVarTracker()->GetVar(var)); |
| 181 if (!var_object) |
| 182 return NULL; |
| 183 return var_object->AsArrayBufferVar(); |
| 184 } |
| 185 |
| 155 } // namespace ppapi | 186 } // namespace ppapi |
| 156 | 187 |
| OLD | NEW |