/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

/**
 * This file contains the <code>PPB_Flash_DRM</code> interface.
 */

[generate_thunk]

label Chrome {
  M29 = 1.0,
  M33 = 1.1
};

/**
 * A resource for performing Flash DRM-related operations.
 */
interface PPB_Flash_DRM {
  /**
   * Creates a PPB_Flash_DRM resource for performing DRM-related operations in
   * Flash.
   */
  PP_Resource Create([in] PP_Instance instance);

  /**
   * Asynchronously computes the device ID. When available, it will place the
   * string in |*id| and will call the completion callback. On failure the
   * given var will be PP_VARTYPE_UNDEFINED.
   */
  int32_t GetDeviceID([in] PP_Resource drm,
                      [out] PP_Var id,
                      [in] PP_CompletionCallback callback);

  /**
   * Windows and Mac only. Synchronously outputs the HMONITOR or
   * CGDirectDisplayID corresponding to the monitor on which the plugin instance
   * is displayed in |hmonitor|. This value is queried asynchronously and this
   * will return PP_FALSE if the value is not yet available or an error
   * occurred. PP_TRUE is returned on success.
   */
  PP_Bool GetHmonitor([in] PP_Resource drm,
                      [out] int64_t hmonitor);

  /**
   * Asynchronously returns a PPB_FileRef resource in |file_ref| which points to
   * the Voucher file for performing DRM verification. |callback| will be called
   * upon completion.
   */
   int32_t GetVoucherFile([in] PP_Resource drm,
                          [out] PP_Resource file_ref,
                          [in] PP_CompletionCallback callback);

  /**
   * Asynchronously returns a value indicating whether the monitor on which the
   * plugin instance is displayed is external. |callback| will be called upon
   * completion.
   */
   [version=1.1]
   int32_t MonitorIsExternal([in] PP_Resource drm,
                             [out] PP_Bool is_external,
                             [in] PP_CompletionCallback callback);
};

