ee7fd25c47886d8ad680bb1b3f507d41d2487220
[WebKit-https.git] / Source / WebKit / UIProcess / API / APIWebsitePolicies.h
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 #pragma once
27
28 #include "APIObject.h"
29 #include "WebsiteAutoplayPolicy.h"
30 #include "WebsiteAutoplayQuirk.h"
31 #include "WebsitePopUpPolicy.h"
32 #include <WebCore/HTTPHeaderField.h>
33 #include <wtf/OptionSet.h>
34 #include <wtf/Optional.h>
35 #include <wtf/Vector.h>
36
37 namespace WebKit {
38 struct WebsitePoliciesData;
39 }
40
41 namespace API {
42
43 class WebsiteDataStore;
44
45 class WebsitePolicies final : public API::ObjectImpl<API::Object::Type::WebsitePolicies> {
46 public:
47     static Ref<WebsitePolicies> create() { return adoptRef(*new WebsitePolicies); }
48     WebsitePolicies();
49     ~WebsitePolicies();
50
51     bool contentBlockersEnabled() const { return m_contentBlockersEnabled; }
52     void setContentBlockersEnabled(bool enabled) { m_contentBlockersEnabled = enabled; }
53
54     bool deviceOrientationEventEnabled() const { return m_deviceOrientationEventEnabled; }
55     void setDeviceOrientationEventEnabled(bool enabled) { m_deviceOrientationEventEnabled = enabled; }
56     
57     OptionSet<WebKit::WebsiteAutoplayQuirk> allowedAutoplayQuirks() const { return m_allowedAutoplayQuirks; }
58     void setAllowedAutoplayQuirks(OptionSet<WebKit::WebsiteAutoplayQuirk> quirks) { m_allowedAutoplayQuirks = quirks; }
59     
60     WebKit::WebsiteAutoplayPolicy autoplayPolicy() const { return m_autoplayPolicy; }
61     void setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy policy) { m_autoplayPolicy = policy; }
62     
63     const Vector<WebCore::HTTPHeaderField>& customHeaderFields() const { return m_customHeaderFields; }
64     Vector<WebCore::HTTPHeaderField>&& takeCustomHeaderFields() { return WTFMove(m_customHeaderFields); }
65     void setCustomHeaderFields(Vector<WebCore::HTTPHeaderField>&& fields) { m_customHeaderFields = WTFMove(fields); }
66
67     WebKit::WebsitePopUpPolicy popUpPolicy() const { return m_popUpPolicy; }
68     void setPopUpPolicy(WebKit::WebsitePopUpPolicy policy) { m_popUpPolicy = policy; }
69
70     WebsiteDataStore* websiteDataStore() const { return m_websiteDataStore.get(); }
71     void setWebsiteDataStore(RefPtr<WebsiteDataStore>&&);
72
73     WebKit::WebsitePoliciesData data();
74
75     void setCustomUserAgent(const WTF::String& customUserAgent) { m_customUserAgent = customUserAgent; }
76     const WTF::String& customUserAgent() const { return m_customUserAgent; }
77
78     void setCustomJavaScriptUserAgent(const WTF::String& customJavaScriptUserAgent) { m_customJavaScriptUserAgent = customJavaScriptUserAgent; }
79     const WTF::String& customJavaScriptUserAgent() const { return m_customJavaScriptUserAgent; }
80
81     void setCustomNavigatorPlatform(const WTF::String& customNavigatorPlatform) { m_customNavigatorPlatform = customNavigatorPlatform; }
82     const WTF::String& customNavigatorPlatform() const { return m_customNavigatorPlatform; }
83
84 private:
85     WebsitePolicies(bool contentBlockersEnabled, OptionSet<WebKit::WebsiteAutoplayQuirk>, WebKit::WebsiteAutoplayPolicy, Vector<WebCore::HTTPHeaderField>&&, WebKit::WebsitePopUpPolicy, RefPtr<WebsiteDataStore>&&);
86
87     bool m_contentBlockersEnabled { true };
88     bool m_deviceOrientationEventEnabled { true };
89     OptionSet<WebKit::WebsiteAutoplayQuirk> m_allowedAutoplayQuirks;
90     WebKit::WebsiteAutoplayPolicy m_autoplayPolicy { WebKit::WebsiteAutoplayPolicy::Default };
91     Vector<WebCore::HTTPHeaderField> m_customHeaderFields;
92     WebKit::WebsitePopUpPolicy m_popUpPolicy { WebKit::WebsitePopUpPolicy::Default };
93     RefPtr<WebsiteDataStore> m_websiteDataStore;
94     WTF::String m_customUserAgent;
95     WTF::String m_customJavaScriptUserAgent;
96     WTF::String m_customNavigatorPlatform;
97 };
98
99 } // namespace API