1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef PPAPI_PROXY_PLUGIN_ARRAY_BUFFER_VAR_H_ 6 #define PPAPI_PROXY_PLUGIN_ARRAY_BUFFER_VAR_H_ 7 8 #include <vector> 9 10 #include "base/basictypes.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/shared_memory.h" 13 #include "ppapi/c/pp_instance.h" 14 #include "ppapi/c/pp_stdint.h" 15 #include "ppapi/shared_impl/var.h" 16 17 namespace ppapi { 18 19 // Represents a plugin-side ArrayBufferVar. In the plugin process, it's 20 // owned as a vector. 21 class PluginArrayBufferVar : public ArrayBufferVar { 22 public: 23 explicit PluginArrayBufferVar(uint32 size_in_bytes); 24 PluginArrayBufferVar(uint32 size_in_bytes, 25 base::SharedMemoryHandle plugin_handle); 26 virtual ~PluginArrayBufferVar(); 27 28 // ArrayBufferVar implementation. 29 virtual void* Map() OVERRIDE; 30 virtual void Unmap() OVERRIDE; 31 virtual uint32 ByteLength() OVERRIDE; 32 virtual bool CopyToNewShmem( 33 PP_Instance instance, 34 int* host_handle, 35 base::SharedMemoryHandle* plugin_handle) OVERRIDE; 36 37 private: 38 // Non-shared memory 39 std::vector<uint8> buffer_; 40 41 // Shared memory 42 base::SharedMemoryHandle plugin_handle_; 43 scoped_ptr<base::SharedMemory> shmem_; 44 uint32 size_in_bytes_; 45 46 DISALLOW_COPY_AND_ASSIGN(PluginArrayBufferVar); 47 }; 48 49 } // namespace ppapi 50 51 #endif // PPAPI_PROXY_PLUGIN_ARRAY_BUFFER_VAR_H_ 52