Chromium Code Reviews| Index: ppapi/cpp/var.cc |
| diff --git a/ppapi/cpp/var.cc b/ppapi/cpp/var.cc |
| index 1108e05ef46488ced290cef1d8f6ee7ae366fcf2..23c7b48d7c73f5cdcca539a74d0ffb72a23db58a 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; |
| } |
| @@ -101,6 +104,19 @@ Var::Var(const std::string& utf8_str) { |
| is_managed_ = true; |
| } |
| +Var::Var(const pp::Resource& resource) { |
| + if (!has_interface<PPB_Var_1_2>()) { |
| + PP_NOTREACHED(); |
| + return; |
| + } |
| + |
| + var_ = get_interface<PPB_Var_1_2>()->VarFromResource( |
| + resource.pp_resource()); |
| + // Set |is_managed_| to true, so |var_| will be properly released upon |
| + // destruction. |
| + is_managed_ = true; |
| +} |
| + |
| Var::Var(const PP_Var& var) { |
| var_ = var; |
| @@ -219,6 +235,15 @@ std::string Var::AsString() const { |
| return std::string(str, len); |
| } |
| +pp::Resource Var::AsResource() const { |
|
yzshen1
2014/02/06 18:02:58
Maybe we should follow AsString to assert that it
Matt Giuca
2014/02/07 03:11:22
Done.
|
| + if (!has_interface<PPB_Var_1_2>()) |
| + return pp::Resource(); |
| + |
| + return pp::Resource( |
| + pp::PASS_REF, |
| + get_interface<PPB_Var_1_2>()->VarToResource(var_)); |
| +} |
| + |
| std::string Var::DebugString() const { |
| char buf[256]; |
| if (is_undefined()) { |