15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPB_Buffer_Dev</code> interface.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)label Chrome {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  M14 = 0.4
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)interface PPB_Buffer_Dev {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Allocates a buffer of the given size in bytes. The return value will have
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a non-zero ID on success, or zero on failure. Failure means the module
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * handle was invalid. The buffer will be initialized to contain zeroes.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource Create(
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] uint32_t size_in_bytes);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Returns PP_TRUE if the given resource is a Buffer. Returns PP_FALSE if the
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resource is invalid or some type other than a Buffer.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool IsBuffer(
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Resource resource);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Gets the size of the buffer. Returns PP_TRUE on success, PP_FALSE
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * if the resource is not a buffer. On failure, |*size_in_bytes| is not set.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool Describe(
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Resource resource,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [out] uint32_t size_in_bytes);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Maps this buffer into the plugin address space and returns a pointer to
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the beginning of the data.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  mem_t Map(
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Resource resource);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Unmaps this buffer.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Unmap(
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Resource resource);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
52