summaryrefslogtreecommitdiffstats
path: root/ppapi/shared_impl/var.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/shared_impl/var.cc')
-rw-r--r--ppapi/shared_impl/var.cc55
1 files changed, 43 insertions, 12 deletions
diff --git a/ppapi/shared_impl/var.cc b/ppapi/shared_impl/var.cc
index 3bec5ce..60d439b 100644
--- a/ppapi/shared_impl/var.cc
+++ b/ppapi/shared_impl/var.cc
@@ -65,6 +65,10 @@ StringVar* Var::AsStringVar() {
return NULL;
}
+ArrayBufferVar* Var::AsArrayBufferVar() {
+ return NULL;
+}
+
NPObjectVar* Var::AsNPObjectVar() {
return NULL;
}
@@ -73,6 +77,18 @@ ProxyObjectVar* Var::AsProxyObjectVar() {
return NULL;
}
+PP_Var Var::GetPPVar() {
+ int32 id = GetOrCreateVarID();
+ if (!id)
+ return PP_MakeNull();
+
+ PP_Var result;
+ result.type = GetType();
+ result.padding = 0;
+ result.value.as_id = id;
+ return result;
+}
+
int32 Var::GetExistingVarID() const {
return var_id_;
}
@@ -112,18 +128,6 @@ StringVar* StringVar::AsStringVar() {
return this;
}
-PP_Var StringVar::GetPPVar() {
- int32 id = GetOrCreateVarID();
- if (!id)
- return PP_MakeNull();
-
- PP_Var result;
- result.type = PP_VARTYPE_STRING;
- result.padding = 0;
- result.value.as_id = id;
- return result;
-}
-
PP_VarType StringVar::GetType() const {
return PP_VARTYPE_STRING;
}
@@ -152,5 +156,32 @@ StringVar* StringVar::FromPPVar(PP_Var var) {
return var_object->AsStringVar();
}
+// ArrayBufferVar --------------------------------------------------------------
+
+ArrayBufferVar::ArrayBufferVar() {
+}
+
+ArrayBufferVar::~ArrayBufferVar() {
+}
+
+ArrayBufferVar* ArrayBufferVar::AsArrayBufferVar() {
+ return this;
+}
+
+PP_VarType ArrayBufferVar::GetType() const {
+ return PP_VARTYPE_ARRAY_BUFFER;
+}
+
+// static
+ArrayBufferVar* ArrayBufferVar::FromPPVar(PP_Var var) {
+ if (var.type != PP_VARTYPE_ARRAY_BUFFER)
+ return NULL;
+ scoped_refptr<Var> var_object(
+ PpapiGlobals::Get()->GetVarTracker()->GetVar(var));
+ if (!var_object)
+ return NULL;
+ return var_object->AsArrayBufferVar();
+}
+
} // namespace ppapi