Index: ppapi/shared_impl/var.cc |
diff --git a/ppapi/shared_impl/var.cc b/ppapi/shared_impl/var.cc |
index 60d439bd6b3f0099830a6a33b5e5c3c40030ac2d..3fce7e3180fadf8102f56ddf4388c3455cfa845c 100644 |
--- a/ppapi/shared_impl/var.cc |
+++ b/ppapi/shared_impl/var.cc |
@@ -124,6 +124,11 @@ StringVar::StringVar(const char* str, uint32 len) |
StringVar::~StringVar() { |
} |
+StringVar::StringVar(scoped_ptr<std::string> str) { |
+ // Swap the given string's contents in to value to avoid copying. |
+ str->swap(value_); |
+} |
+ |
StringVar* StringVar::AsStringVar() { |
return this; |
} |
@@ -146,6 +151,17 @@ PP_Var StringVar::StringToPPVar(const char* data, uint32 len) { |
} |
// static |
+PP_Var StringVar::StringToPPVar(scoped_ptr<std::string> str) { |
+ DCHECK(str.get()); |
+ if (!str.get()) |
+ return PP_MakeNull(); |
+ scoped_refptr<StringVar> str_var(new StringVar(str.Pass())); |
+ if (!str_var || !IsStringUTF8(str_var->value())) |
+ return PP_MakeNull(); |
+ return str_var->GetPPVar(); |
+} |
+ |
+// static |
StringVar* StringVar::FromPPVar(PP_Var var) { |
if (var.type != PP_VARTYPE_STRING) |
return NULL; |