15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "fake_ppapi/fake_var_array_buffer_interface.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "fake_ppapi/fake_var_manager.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "gtest/gtest.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FakeVarArrayBufferInterface::FakeVarArrayBufferInterface( 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FakeVarManager* manager) : manager_(manager) {} 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct PP_Var FakeVarArrayBufferInterface::Create(uint32_t size_in_bytes) { 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FakeVarData* var_data = manager_->CreateVarData(); 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var_data->type = PP_VARTYPE_ARRAY_BUFFER; 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var_data->buffer_value.length = size_in_bytes; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var_data->buffer_value.ptr = malloc(size_in_bytes); 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_Var result = {PP_VARTYPE_ARRAY_BUFFER, 0, {PP_FALSE}}; 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) result.value.as_id = var_data->id; 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return result; 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PP_Bool FakeVarArrayBufferInterface::ByteLength(struct PP_Var var, 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t* byte_length) { 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(PP_VARTYPE_ARRAY_BUFFER, var.type); 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FakeVarData* data = manager_->GetVarData(var); 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_NE(static_cast<FakeVarData*>(NULL), data); 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *byte_length = data->buffer_value.length; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return PP_TRUE; 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void* FakeVarArrayBufferInterface::Map(struct PP_Var var) { 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(PP_VARTYPE_ARRAY_BUFFER, var.type); 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FakeVarData* data = manager_->GetVarData(var); 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_NE(static_cast<FakeVarData*>(NULL), data); 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return data->buffer_value.ptr; 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void FakeVarArrayBufferInterface::Unmap(struct PP_Var var) { 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(PP_VARTYPE_ARRAY_BUFFER, var.type); 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 43