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