2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #include <wtf/Forward.h>
30 #include <wtf/HashSet.h>
31 #include <wtf/Noncopyable.h>
34 #include <wtf/RetainPtr.h>
38 #include <PasteboardHelper.h>
41 // FIXME: This class is too high-level to be in the platform directory, since it
42 // uses the DOM and makes calls to Editor. It should either be divested of its
43 // knowledge of the frame and editor or moved into the editing directory.
53 typedef struct HWND__
* HWND
;
56 #if PLATFORM(CHROMIUM)
57 #include "PasteboardPrivate.h"
63 extern NSString
*WebArchivePboardType
;
64 extern NSString
*WebSmartPastePboardType
;
65 extern NSString
*WebURLNamePboardType
;
66 extern NSString
*WebURLPboardType
;
67 extern NSString
*WebURLsWithTitlesPboardType
;
71 class DocumentFragment
;
79 class Pasteboard
: Noncopyable
{
82 //Helper functions to allow Clipboard to share code
83 static void writeSelection(NSPasteboard
* pasteboard
, Range
* selectedRange
, bool canSmartCopyOrDelete
, Frame
* frame
);
84 static void writeURL(NSPasteboard
* pasteboard
, NSArray
* types
, const KURL
& url
, const String
& titleStr
, Frame
* frame
);
87 static Pasteboard
* generalPasteboard();
88 void writeSelection(Range
*, bool canSmartCopyOrDelete
, Frame
*);
89 void writeURL(const KURL
&, const String
&, Frame
* = 0);
90 void writeImage(Node
*, const KURL
&, const String
& title
);
92 void writeFileWrapperAsRTFDAttachment(NSFileWrapper
*);
95 bool canSmartReplace();
96 PassRefPtr
<DocumentFragment
> documentFragment(Frame
*, PassRefPtr
<Range
>, bool allowPlainText
, bool& chosePlainText
);
97 String
plainText(Frame
* = 0);
99 bool isSelectionMode() const;
100 void setSelectionMode(bool selectionMode
);
104 void setHelper(PasteboardHelper
*);
112 Pasteboard(NSPasteboard
*);
113 RetainPtr
<NSPasteboard
> m_pasteboard
;
121 PasteboardHelper
* m_helper
;
125 bool m_selectionMode
;
128 #if PLATFORM(CHROMIUM)
133 } // namespace WebCore
135 #endif // Pasteboard_h