Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: ppapi/shared_impl/var.cc

Issue 8930010: Implement in-process PPB_VarArrayBuffer_Dev. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/shared_impl/var.h ('k') | ppapi/shared_impl/var_tracker.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « ppapi/shared_impl/var.h ('k') | ppapi/shared_impl/var_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698