Delete WebMetal implementation in favor of WebGPU
[WebKit-https.git] / Source / WebCore / platform / StaticPasteboard.cpp
1 /*
2 * Copyright (C) 2016 Apple Inc. All rights reserved.
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 "StaticPasteboard.h"
28
29 namespace WebCore {
30
31 StaticPasteboard::StaticPasteboard()
32 {
33 }
34
35 bool StaticPasteboard::hasData()
36 {
37     return !m_platformData.isEmpty() || !m_customData.isEmpty();
38 }
39
40 String StaticPasteboard::readString(const String& type)
41 {
42     return m_platformData.get(type);
43 }
44
45 String StaticPasteboard::readStringInCustomData(const String& type)
46 {
47     return m_customData.get(type);
48 }
49
50 static void updateTypes(Vector<String>& types, String type, bool moveToEnd)
51 {
52     if (moveToEnd)
53         types.removeFirst(type);
54     ASSERT(!types.contains(type));
55     types.append(type);
56 }
57
58 void StaticPasteboard::writeString(const String& type, const String& value)
59 {
60     bool typeWasAlreadyPresent = !m_platformData.set(type, value).isNewEntry || m_customData.contains(type);
61     updateTypes(m_types, type, typeWasAlreadyPresent);
62 }
63
64 void StaticPasteboard::writeStringInCustomData(const String& type, const String& value)
65 {
66     bool typeWasAlreadyPresent = !m_customData.set(type, value).isNewEntry || m_platformData.contains(type);
67     updateTypes(m_types, type, typeWasAlreadyPresent);
68 }
69
70 void StaticPasteboard::clear()
71 {
72     m_customData.clear();
73     m_platformData.clear();
74     m_types.clear();
75 }
76
77 void StaticPasteboard::clear(const String& type)
78 {
79     if (!m_platformData.remove(type) && !m_customData.remove(type))
80         return;
81     m_types.removeFirst(type);
82     ASSERT(!m_types.contains(type));
83 }
84
85 PasteboardCustomData StaticPasteboard::takeCustomData()
86 {
87     return { { }, WTFMove(m_types), WTFMove(m_platformData), WTFMove(m_customData) };
88 }
89
90 }