Move legacy directory configuration from WebProcessPool to API::WebsiteDataStore
[WebKit-https.git] / Source / WebKit / UIProcess / API / APIWebsiteDataStore.h
1 /*
2  * Copyright (C) 2014-2017 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 "APIHTTPCookieStore.h"
29 #include "WebsiteDataStore.h"
30 #include <pal/SessionID.h>
31 #include <wtf/text/WTFString.h>
32
33 namespace API {
34
35 class WebsiteDataStore final : public ObjectImpl<Object::Type::WebsiteDataStore> {
36 public:
37     static Ref<WebsiteDataStore> defaultDataStore();
38     static bool defaultDataStoreExists();
39
40     static Ref<WebsiteDataStore> createNonPersistentDataStore();
41     static Ref<WebsiteDataStore> createLegacy(WebKit::WebsiteDataStore::Configuration);
42
43     explicit WebsiteDataStore(WebKit::WebsiteDataStore::Configuration, PAL::SessionID);
44     virtual ~WebsiteDataStore();
45
46     bool isPersistent();
47
48     bool resourceLoadStatisticsEnabled() const;
49     void setResourceLoadStatisticsEnabled(bool);
50     bool resourceLoadStatisticsDebugMode() const;
51     void setResourceLoadStatisticsDebugMode(bool);
52
53     WebKit::WebsiteDataStore& websiteDataStore() { return m_websiteDataStore.get(); }
54     HTTPCookieStore& httpCookieStore();
55
56     static String defaultApplicationCacheDirectory();
57     static String defaultCacheStorageDirectory();
58     static String defaultNetworkCacheDirectory();
59     static String defaultMediaCacheDirectory();
60     static String defaultIndexedDBDatabaseDirectory();
61     static String defaultServiceWorkerRegistrationDirectory();
62     static String defaultLocalStorageDirectory();
63     static String defaultMediaKeysStorageDirectory();
64     static String defaultWebSQLDatabaseDirectory();
65     static String defaultResourceLoadStatisticsDirectory();
66     static String defaultJavaScriptConfigurationDirectory();
67
68     static WebKit::WebsiteDataStore::Configuration defaultDataStoreConfiguration();
69
70     static String legacyDefaultApplicationCacheDirectory();
71     static String legacyDefaultNetworkCacheDirectory();
72     static String legacyDefaultLocalStorageDirectory();
73     static String legacyDefaultIndexedDBDatabaseDirectory();
74     static String legacyDefaultWebSQLDatabaseDirectory();
75     static String legacyDefaultMediaKeysStorageDirectory();
76     static String legacyDefaultMediaCacheDirectory();
77     static String legacyDefaultJavaScriptConfigurationDirectory();
78
79     static WebKit::WebsiteDataStore::Configuration legacyDefaultDataStoreConfiguration();
80
81 private:
82     enum ShouldCreateDirectory { CreateDirectory, DontCreateDirectory };
83
84     WebsiteDataStore();
85
86     static String tempDirectoryFileSystemRepresentation(const String& directoryName, ShouldCreateDirectory shouldCreateDirectory = CreateDirectory);
87     static String cacheDirectoryFileSystemRepresentation(const String& directoryName);
88     static String websiteDataDirectoryFileSystemRepresentation(const String& directoryName);
89
90     Ref<WebKit::WebsiteDataStore> m_websiteDataStore;
91     RefPtr<HTTPCookieStore> m_apiHTTPCookieStore;
92 };
93
94 }