1// Copyright (c) 2012 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_FLASH_CLIPBOARD_RESOURCE_H_
6#define PPAPI_PROXY_FLASH_CLIPBOARD_RESOURCE_H_
7
8#include "ppapi/proxy/connection.h"
9#include "ppapi/proxy/plugin_resource.h"
10#include "ppapi/shared_impl/flash_clipboard_format_registry.h"
11#include "ppapi/thunk/ppb_flash_clipboard_api.h"
12
13namespace ppapi {
14namespace proxy {
15
16class FlashClipboardResource
17    : public PluginResource,
18      public NON_EXPORTED_BASE(thunk::PPB_Flash_Clipboard_API) {
19 public:
20  FlashClipboardResource(Connection connection, PP_Instance instance);
21  virtual ~FlashClipboardResource();
22
23  // Resource implementation.
24  virtual thunk::PPB_Flash_Clipboard_API* AsPPB_Flash_Clipboard_API() OVERRIDE;
25
26  // PPB_Flash_Clipboard_API implementation.
27  virtual uint32_t RegisterCustomFormat(PP_Instance instance,
28                                        const char* format_name) OVERRIDE;
29  virtual PP_Bool IsFormatAvailable(PP_Instance instance,
30                                    PP_Flash_Clipboard_Type clipboard_type,
31                                    uint32_t format) OVERRIDE;
32  virtual PP_Var ReadData(PP_Instance instance,
33                          PP_Flash_Clipboard_Type clipboard_type,
34                          uint32_t format) OVERRIDE;
35  virtual int32_t WriteData(PP_Instance instance,
36                            PP_Flash_Clipboard_Type clipboard_type,
37                            uint32_t data_item_count,
38                            const uint32_t formats[],
39                            const PP_Var data_items[]) OVERRIDE;
40  virtual PP_Bool GetSequenceNumber(
41      PP_Instance instance,
42      PP_Flash_Clipboard_Type clipboard_type,
43      uint64_t* sequence_number) OVERRIDE;
44
45 private:
46  FlashClipboardFormatRegistry clipboard_formats_;
47
48  DISALLOW_COPY_AND_ASSIGN(FlashClipboardResource);
49};
50
51}  // namespace proxy
52}  // namespace ppapi
53
54#endif  // PPAPI_PROXY_FLASH_CLIPBOARD_RESOURCE_H_
55