[Clipboard API] Refactor Pasteboard item reading functions to work on both iOS and...
[WebKit.git] / Source / WebCore / platform / libwpe / PasteboardLibWPE.cpp
1 /*
2  * Copyright (C) 2014-2015 Igalia S.L.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
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.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "Pasteboard.h"
28
29 #if USE(LIBWPE)
30
31 #include "NotImplemented.h"
32 #include "PasteboardStrategy.h"
33 #include "PlatformStrategies.h"
34
35 namespace WebCore {
36
37 std::unique_ptr<Pasteboard> Pasteboard::createForCopyAndPaste()
38 {
39     return makeUnique<Pasteboard>();
40 }
41
42 Pasteboard::Pasteboard()
43 {
44 }
45
46 bool Pasteboard::hasData()
47 {
48     // FIXME: Getting the list of types for this is wasteful. Do this in the UI process.
49     Vector<String> types;
50     platformStrategies()->pasteboardStrategy()->getTypes(types);
51     return !types.isEmpty();
52 }
53
54 Vector<String> Pasteboard::typesSafeForBindings(const String&)
55 {
56     notImplemented();
57     return { };
58 }
59
60 Vector<String> Pasteboard::typesForLegacyUnsafeBindings()
61 {
62     Vector<String> types;
63     platformStrategies()->pasteboardStrategy()->getTypes(types);
64     return types;
65 }
66
67 String Pasteboard::readOrigin()
68 {
69     notImplemented(); // webkit.org/b/177633: [GTK] Move to new Pasteboard API
70     return { };
71 }
72
73 String Pasteboard::readString(const String& type)
74 {
75     return platformStrategies()->pasteboardStrategy()->readStringFromPasteboard(0, type, name());
76 }
77
78 String Pasteboard::readStringInCustomData(const String&)
79 {
80     notImplemented();
81     return { };
82 }
83
84 void Pasteboard::writeString(const String& type, const String& text)
85 {
86     platformStrategies()->pasteboardStrategy()->writeToPasteboard(type, text);
87 }
88
89 void Pasteboard::clear()
90 {
91 }
92
93 void Pasteboard::clear(const String&)
94 {
95 }
96
97 void Pasteboard::read(PasteboardPlainText& text)
98 {
99     text.text = platformStrategies()->pasteboardStrategy()->readStringFromPasteboard(0, "text/plain;charset=utf-8", name());
100 }
101
102 void Pasteboard::read(PasteboardWebContentReader&, WebContentReadingPolicy)
103 {
104     notImplemented();
105 }
106
107 void Pasteboard::read(PasteboardFileReader&)
108 {
109 }
110
111 void Pasteboard::write(const PasteboardURL& url)
112 {
113     platformStrategies()->pasteboardStrategy()->writeToPasteboard("text/plain;charset=utf-8", url.url.string());
114 }
115
116 void Pasteboard::writeTrustworthyWebURLsPboardType(const PasteboardURL&)
117 {
118     notImplemented();
119 }
120
121 void Pasteboard::write(const PasteboardImage&)
122 {
123 }
124
125 void Pasteboard::write(const PasteboardWebContent& content)
126 {
127     platformStrategies()->pasteboardStrategy()->writeToPasteboard(content);
128 }
129
130 Pasteboard::FileContentState Pasteboard::fileContentState()
131 {
132     notImplemented();
133     return FileContentState::NoFileOrImageData;
134 }
135
136 bool Pasteboard::canSmartReplace()
137 {
138     return false;
139 }
140
141 void Pasteboard::writeMarkup(const String&)
142 {
143 }
144
145 void Pasteboard::writePlainText(const String& text, SmartReplaceOption)
146 {
147     writeString("text/plain;charset=utf-8", text);
148 }
149
150 void Pasteboard::writeCustomData(const PasteboardCustomData&)
151 {
152 }
153
154 void Pasteboard::write(const Color&)
155 {
156 }
157
158 } // namespace WebCore
159
160 #endif // USE(LIBWPE)