Bumping manifests a=b2g-bump
[gecko.git] / widget / windows / nsClipboard.h
blob8037d340da3642b531e464493a24a8d0de964e07
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
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/. */
6 #ifndef nsClipboard_h__
7 #define nsClipboard_h__
9 #include "nsBaseClipboard.h"
10 #include "nsIObserver.h"
11 #include "nsIURI.h"
12 #include <windows.h>
14 class nsITransferable;
15 class nsIClipboardOwner;
16 class nsIWidget;
17 class nsIFile;
18 struct IDataObject;
20 /**
21 * Native Win32 Clipboard wrapper
24 class nsClipboard : public nsBaseClipboard,
25 public nsIObserver
27 virtual ~nsClipboard();
29 public:
30 nsClipboard();
32 NS_DECL_ISUPPORTS_INHERITED
34 // nsIObserver
35 NS_DECL_NSIOBSERVER
37 // nsIClipboard
38 NS_IMETHOD HasDataMatchingFlavors(const char** aFlavorList, uint32_t aLength,
39 int32_t aWhichClipboard, bool *_retval);
40 NS_IMETHOD EmptyClipboard(int32_t aWhichClipboard);
42 // Internal Native Routines
43 static nsresult CreateNativeDataObject(nsITransferable * aTransferable,
44 IDataObject ** aDataObj,
45 nsIURI * uri);
46 static nsresult SetupNativeDataObject(nsITransferable * aTransferable,
47 IDataObject * aDataObj);
48 static nsresult GetDataFromDataObject(IDataObject * aDataObject,
49 UINT anIndex,
50 nsIWidget * aWindow,
51 nsITransferable * aTransferable);
52 static nsresult GetNativeDataOffClipboard(nsIWidget * aWindow, UINT aIndex, UINT aFormat, void ** aData, uint32_t * aLen);
53 static nsresult GetNativeDataOffClipboard(IDataObject * aDataObject, UINT aIndex, UINT aFormat, const char * aMIMEImageFormat, void ** aData, uint32_t * aLen);
54 static nsresult GetGlobalData(HGLOBAL aHGBL, void ** aData, uint32_t * aLen);
55 static UINT GetFormat(const char* aMimeStr);
57 static UINT CF_HTML;
59 protected:
60 NS_IMETHOD SetNativeClipboardData ( int32_t aWhichClipboard );
61 NS_IMETHOD GetNativeClipboardData ( nsITransferable * aTransferable, int32_t aWhichClipboard );
63 static bool IsInternetShortcut ( const nsAString& inFileName ) ;
64 static bool FindURLFromLocalFile ( IDataObject* inDataObject, UINT inIndex, void** outData, uint32_t* outDataLen ) ;
65 static bool FindURLFromNativeURL ( IDataObject* inDataObject, UINT inIndex, void** outData, uint32_t* outDataLen ) ;
66 static bool FindUnicodeFromPlainText ( IDataObject* inDataObject, UINT inIndex, void** outData, uint32_t* outDataLen ) ;
67 static bool FindPlatformHTML ( IDataObject* inDataObject, UINT inIndex, void** outData, uint32_t* outDataLen );
68 static void ResolveShortcut ( nsIFile* inFileName, nsACString& outURL ) ;
70 nsIWidget * mWindow;
74 #define SET_FORMATETC(fe, cf, td, asp, li, med) \
76 (fe).cfFormat=cf;\
77 (fe).ptd=td;\
78 (fe).dwAspect=asp;\
79 (fe).lindex=li;\
80 (fe).tymed=med;\
84 #endif // nsClipboard_h__