Improve use of NeverDestroyed
[WebKit-https.git] / Source / WebKit / WebProcess / WebCoreSupport / WebPlatformStrategies.h
1 /*
2  * Copyright (C) 2010, 2012, 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 #pragma once
27
28 #include <WebCore/CookiesStrategy.h>
29 #include <WebCore/LoaderStrategy.h>
30 #include <WebCore/PasteboardStrategy.h>
31 #include <WebCore/PlatformStrategies.h>
32
33 namespace WebKit {
34
35 class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::PasteboardStrategy {
36     friend class NeverDestroyed<WebPlatformStrategies>;
37 public:
38     static void initialize();
39     
40 private:
41     WebPlatformStrategies();
42     
43     // WebCore::PlatformStrategies
44     WebCore::CookiesStrategy* createCookiesStrategy() override;
45     WebCore::LoaderStrategy* createLoaderStrategy() override;
46     WebCore::PasteboardStrategy* createPasteboardStrategy() override;
47     WebCore::BlobRegistry* createBlobRegistry() override;
48
49     // WebCore::CookiesStrategy
50     String cookiesForDOM(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&) override;
51     void setCookiesFromDOM(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&, const String&) override;
52     bool cookiesEnabled(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&) override;
53     String cookieRequestHeaderFieldValue(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&) override;
54     String cookieRequestHeaderFieldValue(WebCore::SessionID, const WebCore::URL& firstParty, const WebCore::URL&) override;
55     bool getRawCookies(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&, Vector<WebCore::Cookie>&) override;
56     void deleteCookie(const WebCore::NetworkStorageSession&, const WebCore::URL&, const String&) override;
57
58     // WebCore::PasteboardStrategy
59 #if PLATFORM(IOS)
60     void writeToPasteboard(const WebCore::PasteboardWebContent&, const String& pasteboardName) override;
61     void writeToPasteboard(const WebCore:: PasteboardURL&, const String& pasteboardName) override;
62     void writeToPasteboard(const WebCore::PasteboardImage&, const String& pasteboardName) override;
63     void writeToPasteboard(const String& pasteboardType, const String&, const String& pasteboardName) override;
64     int getPasteboardItemsCount(const String& pasteboardName) override;
65     String readStringFromPasteboard(int index, const String& pasteboardType, const String& pasteboardName) override;
66     RefPtr<WebCore::SharedBuffer> readBufferFromPasteboard(int index, const String& pasteboardType, const String& pasteboardName) override;
67     WebCore::URL readURLFromPasteboard(int index, const String& pasteboardType, const String& pasteboardName, String& title) override;
68     void getFilenamesForDataInteraction(Vector<String>& filenames, const String& pasteboardName) override;
69     void updateSupportedTypeIdentifiers(const Vector<String>& identifiers, const String& pasteboardName) override;
70     void getTypesByFidelityForItemAtIndex(Vector<String>& types, uint64_t index, const String& pasteboardName) override;
71 #endif
72 #if PLATFORM(COCOA)
73     int getNumberOfFiles(const String& pasteboardName) override;
74     void getTypes(Vector<String>& types, const String& pasteboardName) override;
75     RefPtr<WebCore::SharedBuffer> bufferForType(const String& pasteboardType, const String& pasteboardName) override;
76     void getPathnamesForType(Vector<String>& pathnames, const String& pasteboardType, const String& pasteboardName) override;
77     String stringForType(const String& pasteboardType, const String& pasteboardName) override;
78     long changeCount(const String& pasteboardName) override;
79     String uniqueName() override;
80     WebCore::Color color(const String& pasteboardName) override;
81     WebCore::URL url(const String& pasteboardName) override;
82
83     long addTypes(const Vector<String>& pasteboardTypes, const String& pasteboardName) override;
84     long setTypes(const Vector<String>& pasteboardTypes, const String& pasteboardName) override;
85     long copy(const String& fromPasteboard, const String& toPasteboard) override;
86     long setBufferForType(WebCore::SharedBuffer*, const String& pasteboardType, const String& pasteboardName) override;
87     long setPathnamesForType(const Vector<String>&, const String& pasteboardType, const String& pasteboardName) override;
88     long setStringForType(const String&, const String& pasteboardType, const String& pasteboardName) override;
89 #endif
90 #if PLATFORM(GTK)
91     void writeToClipboard(const String& pasteboardName, const WebCore::SelectionData&) override;
92     Ref<WebCore::SelectionData> readFromClipboard(const String& pasteboardName) override;
93 #endif
94 #if PLATFORM(WPE)
95     void getTypes(Vector<String>& types) override;
96     String readStringFromPasteboard(int index, const String& pasteboardType) override;
97     void writeToPasteboard(const WebCore::PasteboardWebContent&) override;
98     void writeToPasteboard(const String& pasteboardType, const String&) override;
99 #endif
100 };
101
102 } // namespace WebKit