WebKitWebsitePolicies.cpp [plain text]
#include "config.h"
#include "WebKitWebsitePolicies.h"
#include "APIWebsitePolicies.h"
#include "WebKitEnumTypes.h"
#include "WebsitePoliciesData.h"
#include <glib/gi18n-lib.h>
#include <wtf/glib/WTFGType.h>
using namespace WebKit;
using namespace WebKit;
enum {
PROP_0,
PROP_AUTOPLAY_POLICY
};
struct _WebKitWebsitePoliciesPrivate {
_WebKitWebsitePoliciesPrivate()
: websitePolicies(API::WebsitePolicies::create())
{
}
RefPtr<API::WebsitePolicies> websitePolicies;
};
WEBKIT_DEFINE_TYPE(WebKitWebsitePolicies, webkit_website_policies, G_TYPE_OBJECT)
API::WebsitePolicies& webkitWebsitePoliciesGetWebsitePolicies(WebKitWebsitePolicies* policies)
{
return *policies->priv->websitePolicies.get();
}
WebsitePoliciesData webkitWebsitePoliciesGetPoliciesData(WebKitWebsitePolicies* policies)
{
WebsitePoliciesData policiesData;
switch (webkit_website_policies_get_autoplay_policy(policies)) {
case WEBKIT_AUTOPLAY_ALLOW:
policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Allow;
break;
case WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND:
policiesData.autoplayPolicy = WebsiteAutoplayPolicy::AllowWithoutSound;
break;
case WEBKIT_AUTOPLAY_DENY:
policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Deny;
break;
default:
policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Default;
}
return policiesData;
}
static void webkitWebsitePoliciesGetProperty(GObject* object, guint propID, GValue* value, GParamSpec* paramSpec)
{
WebKitWebsitePolicies* policies = WEBKIT_WEBSITE_POLICIES(object);
switch (propID) {
case PROP_AUTOPLAY_POLICY:
g_value_set_enum(value, webkit_website_policies_get_autoplay_policy(policies));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propID, paramSpec);
}
}
void webkitWebsitePoliciesSetAutoplayPolicy(WebKitWebsitePolicies* policies, WebKitAutoplayPolicy policy)
{
g_return_if_fail(WEBKIT_IS_WEBSITE_POLICIES(policies));
switch (policy) {
case WEBKIT_AUTOPLAY_ALLOW:
policies->priv->websitePolicies->setAutoplayPolicy(WebsiteAutoplayPolicy::Allow);
break;
case WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND:
policies->priv->websitePolicies->setAutoplayPolicy(WebsiteAutoplayPolicy::AllowWithoutSound);
break;
case WEBKIT_AUTOPLAY_DENY:
policies->priv->websitePolicies->setAutoplayPolicy(WebsiteAutoplayPolicy::Deny);
break;
}
}
static void webkitWebsitePoliciesSetProperty(GObject* object, guint propID, const GValue* value, GParamSpec* paramSpec)
{
WebKitWebsitePolicies* policies = WEBKIT_WEBSITE_POLICIES(object);
switch (propID) {
case PROP_AUTOPLAY_POLICY:
webkitWebsitePoliciesSetAutoplayPolicy(policies, static_cast<WebKitAutoplayPolicy>(g_value_get_enum(value)));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propID, paramSpec);
}
}
static void webkit_website_policies_class_init(WebKitWebsitePoliciesClass* findClass)
{
GObjectClass* gObjectClass = G_OBJECT_CLASS(findClass);
gObjectClass->get_property = webkitWebsitePoliciesGetProperty;
gObjectClass->set_property = webkitWebsitePoliciesSetProperty;
g_object_class_install_property(
gObjectClass,
PROP_AUTOPLAY_POLICY,
g_param_spec_enum(
"autoplay",
"Autoplay Policy",
_("The policy to use when deciding to autoplay media"),
WEBKIT_TYPE_AUTOPLAY_POLICY,
WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND,
static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
}
WebKitWebsitePolicies* webkit_website_policies_new(void)
{
return WEBKIT_WEBSITE_POLICIES(g_object_new(WEBKIT_TYPE_WEBSITE_POLICIES, nullptr));
}
WebKitWebsitePolicies* webkit_website_policies_new_with_policies(const gchar* firstPolicyName, ...)
{
va_list args;
va_start(args, firstPolicyName);
WebKitWebsitePolicies* policies = WEBKIT_WEBSITE_POLICIES(g_object_new_valist(WEBKIT_TYPE_WEBSITE_POLICIES, firstPolicyName, args));
va_end(args);
return policies;
}
WebKitAutoplayPolicy webkit_website_policies_get_autoplay_policy(WebKitWebsitePolicies* policies)
{
g_return_val_if_fail(WEBKIT_IS_WEBSITE_POLICIES(policies), WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND);
auto apiAutoplayPolicyType = policies->priv->websitePolicies->autoplayPolicy();
switch (apiAutoplayPolicyType) {
case WebsiteAutoplayPolicy::Allow:
return WEBKIT_AUTOPLAY_ALLOW;
case WebsiteAutoplayPolicy::AllowWithoutSound:
return WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND;
case WebsiteAutoplayPolicy::Deny:
return WEBKIT_AUTOPLAY_DENY;
default:
return WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND;
}
}