Unreviewed, fix iOS build with recent SDKs.
[WebKit-https.git] / Source / WebKit / UIProcess / API / Cocoa / _WKWebsiteDataStore.mm
1 /*
2  * Copyright (C) 2015 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 #import "config.h"
27 #import "_WKWebsiteDataStoreInternal.h"
28
29 #import <wtf/RetainPtr.h>
30
31 typedef NS_OPTIONS(NSUInteger, _WKWebsiteDataTypes) {
32     _WKWebsiteDataTypeCookies = 1 << 0,
33     _WKWebsiteDataTypeDiskCache = 1 << 1,
34     _WKWebsiteDataTypeMemoryCache = 1 << 2,
35     _WKWebsiteDataTypeOfflineWebApplicationCache = 1 << 3,
36
37     _WKWebsiteDataTypeLocalStorage = 1 << 4,
38     _WKWebsiteDataTypeWebSQLDatabases = 1 << 5,
39 };
40
41 ALLOW_DEPRECATED_DECLARATIONS_BEGIN
42
43 IGNORE_WARNINGS_BEGIN("deprecated-implementations")
44 @implementation _WKWebsiteDataStore
45 IGNORE_WARNINGS_END
46
47 - (instancetype)initWithDataStore:(WKWebsiteDataStore *)dataStore
48 {
49     if (!(self = [super init]))
50         return nil;
51
52     _dataStore = dataStore;
53
54     return self;
55 }
56
57 static RetainPtr<NSSet> toWKWebsiteDataTypes(_WKWebsiteDataTypes websiteDataTypes)
58 {
59     auto wkWebsiteDataTypes = adoptNS([[NSMutableSet alloc] init]);
60
61     if (websiteDataTypes & _WKWebsiteDataTypeCookies)
62         [wkWebsiteDataTypes addObject:WKWebsiteDataTypeCookies];
63     if (websiteDataTypes & _WKWebsiteDataTypeDiskCache)
64         [wkWebsiteDataTypes addObject:WKWebsiteDataTypeDiskCache];
65     if (websiteDataTypes & _WKWebsiteDataTypeMemoryCache)
66         [wkWebsiteDataTypes addObject:WKWebsiteDataTypeMemoryCache];
67     if (websiteDataTypes & _WKWebsiteDataTypeOfflineWebApplicationCache)
68         [wkWebsiteDataTypes addObject:WKWebsiteDataTypeOfflineWebApplicationCache];
69     if (websiteDataTypes & _WKWebsiteDataTypeLocalStorage)
70         [wkWebsiteDataTypes addObject:WKWebsiteDataTypeLocalStorage];
71     if (websiteDataTypes & _WKWebsiteDataTypeWebSQLDatabases)
72         [wkWebsiteDataTypes addObject:WKWebsiteDataTypeWebSQLDatabases];
73
74     return wkWebsiteDataTypes;
75 }
76
77 + (_WKWebsiteDataStore *)defaultDataStore
78 {
79     return adoptNS([[_WKWebsiteDataStore alloc] initWithDataStore:[WKWebsiteDataStore defaultDataStore]]).autorelease();
80 }
81
82 + (_WKWebsiteDataStore *)nonPersistentDataStore
83 {
84     return adoptNS([[_WKWebsiteDataStore alloc] initWithDataStore:[WKWebsiteDataStore nonPersistentDataStore]]).autorelease();
85 }
86
87 - (BOOL)isNonPersistent
88 {
89     return ![_dataStore isPersistent];
90 }
91
92 - (void)fetchDataRecordsOfTypes:(WKWebsiteDataTypes)websiteDataTypes completionHandler:(void (^)(NSArray *))completionHandler
93 {
94     [_dataStore fetchDataRecordsOfTypes:toWKWebsiteDataTypes(websiteDataTypes).get() completionHandler:completionHandler];
95 }
96
97 - (void)removeDataOfTypes:(WKWebsiteDataTypes)websiteDataTypes forDataRecords:(NSArray *)dataRecords completionHandler:(void (^)(void))completionHandler
98 {
99     [_dataStore removeDataOfTypes:toWKWebsiteDataTypes(websiteDataTypes).get() forDataRecords:dataRecords completionHandler:completionHandler];
100 }
101
102 - (void)removeDataOfTypes:(WKWebsiteDataTypes)websiteDataTypes modifiedSince:(NSDate *)date completionHandler:(void (^)(void))completionHandler
103 {
104     [_dataStore removeDataOfTypes:toWKWebsiteDataTypes(websiteDataTypes).get() modifiedSince:date completionHandler:completionHandler];
105 }
106
107 @end
108
109 ALLOW_DEPRECATED_DECLARATIONS_END