1// Copyright 2013 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_OUTPUT_PROTECTION_RESOURCE_H_
6#define PPAPI_PROXY_OUTPUT_PROTECTION_RESOURCE_H_
7
8#include "base/compiler_specific.h"
9#include "ppapi/c/private/ppb_output_protection_private.h"
10#include "ppapi/proxy/device_enumeration_resource_helper.h"
11#include "ppapi/proxy/plugin_resource.h"
12#include "ppapi/thunk/ppb_output_protection_api.h"
13
14namespace ppapi {
15namespace proxy {
16
17class OutputProtectionResource
18    : public PluginResource,
19      public ::ppapi::thunk::PPB_OutputProtection_API {
20 public:
21  OutputProtectionResource(Connection connection,
22                           PP_Instance instance);
23
24 private:
25  virtual ~OutputProtectionResource();
26
27  // PluginResource overrides.
28  virtual thunk::PPB_OutputProtection_API* AsPPB_OutputProtection_API()
29      OVERRIDE;
30
31  // PPB_OutputProtection_API implementation.
32  virtual int32_t QueryStatus(
33      uint32_t* link_mask,
34      uint32_t* protection_mask,
35      const scoped_refptr<TrackedCallback>& callback) OVERRIDE;
36  virtual int32_t EnableProtection(
37      uint32_t desired_method_mask,
38      const scoped_refptr<TrackedCallback>& callback) OVERRIDE;
39
40  void OnPluginMsgQueryStatusReply(
41      uint32_t* out_link_mask,
42      uint32_t* out_protection_mask,
43      const ResourceMessageReplyParams& params,
44      uint32_t link_mask,
45      uint32_t protection_mask);
46  void OnPluginMsgEnableProtectionReply(
47      const ResourceMessageReplyParams& params);
48
49  scoped_refptr<TrackedCallback> query_status_callback_;
50  scoped_refptr<TrackedCallback> enable_protection_callback_;
51
52  DISALLOW_COPY_AND_ASSIGN(OutputProtectionResource);
53};
54
55}  // namespace proxy
56}  // namespace ppapi
57
58#endif  // PPAPI_PROXY_OUTPUT_PROTECTION_RESOURCE_H_
59