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

Unified Diff: ppapi/cpp/var.cc

Issue 148213016: [PPAPI] Moving pp::VarResource_Dev API into pp::Var (now stable). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update histograms.xml. Created 6 years, 10 months 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 side-by-side diff with in-line comments
Download patch
Index: ppapi/cpp/var.cc
diff --git a/ppapi/cpp/var.cc b/ppapi/cpp/var.cc
index da4c12c4388294f13b62ce142dbf9c7bd5e2ef90..079af011413e2fb42d5f936429ee4fb92849b4a9 100644
--- a/ppapi/cpp/var.cc
+++ b/ppapi/cpp/var.cc
@@ -25,6 +25,9 @@ namespace pp {
namespace {
+template <> const char* interface_name<PPB_Var_1_2>() {
+ return PPB_VAR_INTERFACE_1_2;
+}
template <> const char* interface_name<PPB_Var_1_1>() {
return PPB_VAR_INTERFACE_1_1;
}
@@ -42,7 +45,9 @@ inline bool NeedsRefcounting(const PP_Var& var) {
// This helper function uses the latest available version of VarFromUtf8. Note
// that version 1.0 of this method has a different API to later versions.
PP_Var VarFromUtf8Helper(const char* utf8_str, uint32_t len) {
- if (has_interface<PPB_Var_1_1>()) {
+ if (has_interface<PPB_Var_1_2>()) {
+ return get_interface<PPB_Var_1_2>()->VarFromUtf8(utf8_str, len);
+ } else if (has_interface<PPB_Var_1_1>()) {
return get_interface<PPB_Var_1_1>()->VarFromUtf8(utf8_str, len);
} else if (has_interface<PPB_Var_1_0>()) {
return get_interface<PPB_Var_1_0>()->VarFromUtf8(Module::Get()->pp_module(),
@@ -56,7 +61,10 @@ PP_Var VarFromUtf8Helper(const char* utf8_str, uint32_t len) {
// This helper function uses the latest available version of AddRef.
// Returns true on success, false if no appropriate interface was available.
bool AddRefHelper(const PP_Var& var) {
- if (has_interface<PPB_Var_1_1>()) {
+ if (has_interface<PPB_Var_1_2>()) {
+ get_interface<PPB_Var_1_2>()->AddRef(var);
+ return true;
+ } else if (has_interface<PPB_Var_1_1>()) {
yzshen1 2014/02/10 17:00:53 nit: According to style guide, it is preferred to
dmichael (off chromium) 2014/02/10 18:31:56 I wasn't aware of that; can you point me at the pa
yzshen1 2014/02/10 19:44:14 The style guide is at: http://www.chromium.org/dev
dmichael (off chromium) 2014/02/10 20:12:51 Thanks, I was looking at the broader open source G
yzshen1 2014/02/10 22:38:41 I agree that it is not very important. :) Please p
Matt Giuca 2014/02/11 02:41:17 I've changed the else but not the else-ifs.
get_interface<PPB_Var_1_1>()->AddRef(var);
return true;
} else if (has_interface<PPB_Var_1_0>()) {
@@ -70,7 +78,10 @@ bool AddRefHelper(const PP_Var& var) {
// This helper function uses the latest available version of Release.
// Returns true on success, false if no appropriate interface was available.
bool ReleaseHelper(const PP_Var& var) {
- if (has_interface<PPB_Var_1_1>()) {
+ if (has_interface<PPB_Var_1_2>()) {
+ get_interface<PPB_Var_1_2>()->Release(var);
+ return true;
+ } else if (has_interface<PPB_Var_1_1>()) {
get_interface<PPB_Var_1_1>()->Release(var);
return true;
} else if (has_interface<PPB_Var_1_0>()) {
@@ -128,6 +139,19 @@ Var::Var(const std::string& utf8_str) {
is_managed_ = true;
}
+Var::Var(const pp::Resource& resource) {
+ if (has_interface<PPB_Var_1_2>()) {
+ var_ = get_interface<PPB_Var_1_2>()->VarFromResource(
+ resource.pp_resource());
+ } else {
+ PP_NOTREACHED();
+ return;
+ }
+ // Set |is_managed_| to true, so |var_| will be properly released upon
+ // destruction.
+ is_managed_ = true;
+}
+
Var::Var(const PP_Var& var) {
var_ = var;
@@ -233,7 +257,9 @@ std::string Var::AsString() const {
uint32_t len;
const char* str;
- if (has_interface<PPB_Var_1_1>())
+ if (has_interface<PPB_Var_1_2>())
+ str = get_interface<PPB_Var_1_2>()->VarToUtf8(var_, &len);
+ else if (has_interface<PPB_Var_1_1>())
str = get_interface<PPB_Var_1_1>()->VarToUtf8(var_, &len);
else if (has_interface<PPB_Var_1_0>())
str = get_interface<PPB_Var_1_0>()->VarToUtf8(var_, &len);
@@ -242,6 +268,20 @@ std::string Var::AsString() const {
return std::string(str, len);
}
+pp::Resource Var::AsResource() const {
+ if (!is_resource()) {
+ PP_NOTREACHED();
+ return pp::Resource();
+ }
+
+ if (has_interface<PPB_Var_1_2>()) {
+ return pp::Resource(pp::PASS_REF,
+ get_interface<PPB_Var_1_2>()->VarToResource(var_));
+ } else {
+ return pp::Resource();
+ }
+}
+
std::string Var::DebugString() const {
char buf[256];
if (is_undefined()) {

Powered by Google App Engine
This is Rietveld 408576698