| Index: ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
 | 
| diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
 | 
| index 65823c837545283883e941515dce85676f8c752d..c00266b908a5f08769516cfbdd0818c5c6516651 100644
 | 
| --- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
 | 
| +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
 | 
| @@ -13,6 +13,7 @@
 | 
|  #include "native_client/src/include/nacl_macros.h"
 | 
|  #include "native_client/src/include/portability.h"
 | 
|  #include "native_client/src/include/portability_io.h"
 | 
| +#include "native_client/src/shared/ppapi_proxy/array_buffer_proxy_var.h"
 | 
|  #include "native_client/src/shared/ppapi_proxy/proxy_var_cache.h"
 | 
|  #include "native_client/src/shared/ppapi_proxy/string_proxy_var.h"
 | 
|  #include "native_client/src/shared/ppapi_proxy/utility.h"
 | 
| @@ -83,6 +84,41 @@ int64_t GetVarId(PP_Var var) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +PP_Var CreateArrayBuffer(uint32_t size_in_bytes) {
 | 
| +  DebugPrintf("PPB_VarArrayBuffer::Create: size_in_bytes=%"NACL_PRIu32"\n",
 | 
| +              size_in_bytes);
 | 
| +  SharedProxyVar proxy_var(new ArrayBufferProxyVar(size_in_bytes));
 | 
| +  ProxyVarCache::GetInstance().RetainSharedProxyVar(proxy_var);
 | 
| +  PP_Var var;
 | 
| +  var.type = PP_VARTYPE_ARRAY_BUFFER;
 | 
| +  var.value.as_id = proxy_var->id();
 | 
| +  // Increment the reference count for the return to the caller.
 | 
| +  AddRef(var);
 | 
| +  DebugPrintf("PPB_VarArrayBuffer::Create: as_id=%"NACL_PRId64"\n",
 | 
| +              var.value.as_id);
 | 
| +  return var;
 | 
| +}
 | 
| +
 | 
| +uint32_t ByteLength(PP_Var var) {
 | 
| +  DebugPrintf("PPB_VarArrayBuffer::ByteLength: var=PPB_Var(%s)\n",
 | 
| +              PluginVar::DebugString(var).c_str());
 | 
| +  SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar(
 | 
| +      ProxyVarCache::GetInstance().SharedProxyVarForVar(var));
 | 
| +  uint32_t len = buffer_var->buffer_length();
 | 
| +  DebugPrintf("PPB_VarArrayBuffer::ByteLength: length=%"NACL_PRIu32"\n", len);
 | 
| +  return len;
 | 
| +}
 | 
| +
 | 
| +void* Map(PP_Var var) {
 | 
| +  DebugPrintf("PPB_VarArrayBuffer::Map: var=PPB_Var(%s)\n",
 | 
| +              PluginVar::DebugString(var).c_str());
 | 
| +  SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar(
 | 
| +      ProxyVarCache::GetInstance().SharedProxyVarForVar(var));
 | 
| +  void* data = buffer_var->buffer();
 | 
| +  DebugPrintf("PPB_VarArrayBuffer::Map: buffer=%p\n", data);
 | 
| +  return data;
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
|  
 | 
|  const PPB_Var* PluginVar::GetInterface() {
 | 
| @@ -105,6 +141,15 @@ const PPB_Var_1_0* PluginVar::GetInterface1_0() {
 | 
|    return &var_interface;
 | 
|  }
 | 
|  
 | 
| +const PPB_VarArrayBuffer_Dev* PluginVar::GetArrayBufferInterface() {
 | 
| +  static const PPB_VarArrayBuffer_Dev interface = {
 | 
| +    CreateArrayBuffer,
 | 
| +    ByteLength,
 | 
| +    Map
 | 
| +  };
 | 
| +  return &interface;
 | 
| +}
 | 
| +
 | 
|  std::string PluginVar::DebugString(const PP_Var& var) {
 | 
|    switch (var.type) {
 | 
|      case PP_VARTYPE_UNDEFINED:
 | 
| @@ -137,12 +182,18 @@ std::string PluginVar::DebugString(const PP_Var& var) {
 | 
|        {
 | 
|          char buf[32];
 | 
|          const size_t kBufSize = sizeof(buf);
 | 
| -        SNPRINTF(buf, kBufSize, "%"NACL_PRIu64"", GetVarId(var));
 | 
| +        SNPRINTF(buf, kBufSize, "%"NACL_PRId64"", GetVarId(var));
 | 
|          return std::string("##OBJECT##") + buf + "##";
 | 
|        }
 | 
| +    case PP_VARTYPE_ARRAY_BUFFER:
 | 
| +      {
 | 
| +        char buf[32];
 | 
| +        const size_t kBufSize = sizeof(buf);
 | 
| +        SNPRINTF(buf, kBufSize, "%"NACL_PRId64"", GetVarId(var));
 | 
| +        return std::string("##ARRAYBUFFER##") + buf + "##";
 | 
| +      }
 | 
|      case PP_VARTYPE_ARRAY:
 | 
|      case PP_VARTYPE_DICTIONARY:
 | 
| -    case PP_VARTYPE_ARRAY_BUFFER:
 | 
|        NACL_NOTREACHED();
 | 
|        break;
 | 
|    }
 | 
| 
 |