1 /* -*- Mode: c++; c-basic-offset: 2; tab-width: 20; indent-tabs-mode: nil; -*-
2  * This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this
4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 
6 #ifndef NS_CLIPBOARD_PROXY_H
7 #define NS_CLIPBOARD_PROXY_H
8 
9 #include "nsIClipboard.h"
10 #include "mozilla/dom/PContent.h"
11 
12 #define NS_CLIPBOARDPROXY_IID                        \
13   {                                                  \
14     0xa64c82da, 0x7326, 0x4681, {                    \
15       0xa0, 0x95, 0x81, 0x2c, 0xc9, 0x86, 0xe6, 0xde \
16     }                                                \
17   }
18 
19 // Hack for ContentChild to be able to know that we're an nsClipboardProxy.
20 class nsIClipboardProxy : public nsIClipboard {
21  protected:
22   typedef mozilla::dom::ClipboardCapabilities ClipboardCapabilities;
23 
24  public:
25   NS_DECLARE_STATIC_IID_ACCESSOR(NS_CLIPBOARDPROXY_IID)
26 
27   virtual void SetCapabilities(const ClipboardCapabilities& aClipboardCaps) = 0;
28 };
29 
NS_DEFINE_STATIC_IID_ACCESSOR(nsIClipboardProxy,NS_CLIPBOARDPROXY_IID)30 NS_DEFINE_STATIC_IID_ACCESSOR(nsIClipboardProxy, NS_CLIPBOARDPROXY_IID)
31 
32 class nsClipboardProxy final : public nsIClipboardProxy {
33  public:
34   NS_DECL_ISUPPORTS
35   NS_DECL_NSICLIPBOARD
36 
37   nsClipboardProxy();
38 
39   virtual void SetCapabilities(
40       const ClipboardCapabilities& aClipboardCaps) override;
41 
42  private:
43   ~nsClipboardProxy() = default;
44 
45   ClipboardCapabilities mClipboardCaps;
46 };
47 
48 #endif
49