summaryrefslogtreecommitdiff
path: root/Source/WebKit/gtk/webkit/webkitglobals.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-09-10 19:10:20 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-09-10 19:10:20 +0200
commit284837daa07b29d6a63a748544a90b1f5842ac5c (patch)
treeecd258180bde91fe741e0cfd2638beb3c6da7e8e /Source/WebKit/gtk/webkit/webkitglobals.cpp
parent2e2ba8ff45915f40ed3e014101269c175f2a89a0 (diff)
downloadqtwebkit-284837daa07b29d6a63a748544a90b1f5842ac5c.tar.gz
Imported WebKit commit 68645295d2e3e09af2c942f092556f06aa5f8b0d (http://svn.webkit.org/repository/webkit/trunk@128073)
New snapshot
Diffstat (limited to 'Source/WebKit/gtk/webkit/webkitglobals.cpp')
-rw-r--r--Source/WebKit/gtk/webkit/webkitglobals.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/Source/WebKit/gtk/webkit/webkitglobals.cpp b/Source/WebKit/gtk/webkit/webkitglobals.cpp
index 40356b86b..d2715a6a1 100644
--- a/Source/WebKit/gtk/webkit/webkitglobals.cpp
+++ b/Source/WebKit/gtk/webkit/webkitglobals.cpp
@@ -40,6 +40,7 @@
#include "ResourceHandleClient.h"
#include "ResourceHandleInternal.h"
#include "ResourceResponse.h"
+#include "SchemeRegistry.h"
#include "webkitapplicationcache.h"
#include "webkitfavicondatabase.h"
#include "webkitglobalsprivate.h"
@@ -491,6 +492,71 @@ WebKitContextMenuAction webkit_context_menu_item_get_action(GtkMenuItem* item)
#endif
}
+/**
+ * webkit_set_security_policy_for_uri_scheme:
+ * @scheme: a URI scheme
+ * @policy: a #WebKitSecurityPolicy
+ *
+ * Set the security policy for the given URI scheme.
+ *
+ * Since: 2.0
+ */
+void webkit_set_security_policy_for_uri_scheme(const char *scheme, WebKitSecurityPolicy policy)
+{
+ g_return_if_fail(scheme);
+
+ if (!policy)
+ return;
+
+ String urlScheme = String::fromUTF8(scheme);
+
+ if (policy & WEBKIT_SECURITY_POLICY_LOCAL)
+ SchemeRegistry::registerURLSchemeAsLocal(urlScheme);
+ if (policy & WEBKIT_SECURITY_POLICY_NO_ACCESS_TO_OTHER_SCHEME)
+ SchemeRegistry::registerURLSchemeAsNoAccess(urlScheme);
+ if (policy & WEBKIT_SECURITY_POLICY_DISPLAY_ISOLATED)
+ SchemeRegistry::registerURLSchemeAsDisplayIsolated(urlScheme);
+ if (policy & WEBKIT_SECURITY_POLICY_SECURE)
+ SchemeRegistry::registerURLSchemeAsSecure(urlScheme);
+ if (policy & WEBKIT_SECURITY_POLICY_CORS_ENABLED)
+ SchemeRegistry::registerURLSchemeAsCORSEnabled(urlScheme);
+ if (policy & WEBKIT_SECURITY_POLICY_EMPTY_DOCUMENT)
+ SchemeRegistry::registerURLSchemeAsEmptyDocument(urlScheme);
+}
+
+/**
+ * webkit_get_security_policy_for_uri_scheme:
+ * @scheme: a URI scheme
+ *
+ * Get the security policy for the given URI scheme.
+ *
+ * Returns: a #WebKitSecurityPolicy
+ *
+ * Since: 2.0
+ */
+WebKitSecurityPolicy webkit_get_security_policy_for_uri_scheme(const char *scheme)
+{
+ g_return_val_if_fail(scheme, static_cast<WebKitSecurityPolicy>(0));
+
+ guint policy = 0;
+ String urlScheme = String::fromUTF8(scheme);
+
+ if (SchemeRegistry::shouldTreatURLSchemeAsLocal(urlScheme))
+ policy |= WEBKIT_SECURITY_POLICY_LOCAL;
+ if (SchemeRegistry::shouldTreatURLSchemeAsNoAccess(urlScheme))
+ policy |= WEBKIT_SECURITY_POLICY_NO_ACCESS_TO_OTHER_SCHEME;
+ if (SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated(urlScheme))
+ policy |= WEBKIT_SECURITY_POLICY_DISPLAY_ISOLATED;
+ if (SchemeRegistry::shouldTreatURLSchemeAsSecure(urlScheme))
+ policy |= WEBKIT_SECURITY_POLICY_SECURE;
+ if (SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(urlScheme))
+ policy |= WEBKIT_SECURITY_POLICY_CORS_ENABLED;
+ if (SchemeRegistry::shouldLoadURLSchemeAsEmptyDocument(urlScheme))
+ policy |= WEBKIT_SECURITY_POLICY_EMPTY_DOCUMENT;
+
+ return static_cast<WebKitSecurityPolicy>(policy);
+}
+
void webkitInit()
{
static bool isInitialized = false;