|
23 | 23 | #include "APIDictionary.h" |
24 | 24 | #include "APIInjectedBundleBundleClient.h" |
25 | 25 | #include "APIString.h" |
| 26 | +#include "WebKitSecurityOriginPrivate.h" |
26 | 27 | #include "WebKitUserMessagePrivate.h" |
27 | 28 | #include "WebKitWebPagePrivate.h" |
28 | 29 | #include "WebKitWebProcessExtensionPrivate.h" |
@@ -122,6 +123,7 @@ enum { |
122 | 123 | typedef HashMap<WebPage*, GRefPtr<WebKitWebPage> > WebPageMap; |
123 | 124 |
|
124 | 125 | struct _WebKitWebExtensionPrivate { |
| 126 | + RefPtr<InjectedBundle> bundle; |
125 | 127 | WebPageMap pages; |
126 | 128 | #if ENABLE(DEVELOPER_MODE) |
127 | 129 | bool garbageCollectOnPageDestroy; |
@@ -204,6 +206,7 @@ class WebExtensionInjectedBundleClient final : public API::InjectedBundle::Clien |
204 | 206 | WebKitWebExtension* webkitWebProcessExtensionCreate(InjectedBundle* bundle) |
205 | 207 | { |
206 | 208 | WebKitWebExtension* extension = WEBKIT_WEB_EXTENSION(g_object_new(WEBKIT_TYPE_WEB_EXTENSION, NULL)); |
| 209 | + extension->priv->bundle = bundle; |
207 | 210 | bundle->setClient(makeUnique<WebExtensionInjectedBundleClient>(extension)); |
208 | 211 | return extension; |
209 | 212 | } |
@@ -246,6 +249,31 @@ WebKitWebPage* webkit_web_extension_get_page(WebKitWebExtension* extension, guin |
246 | 249 | return 0; |
247 | 250 | } |
248 | 251 |
|
| 252 | +void webkit_web_extension_add_origin_access_whitelist_entry(WebKitWebExtension* extension, WebKitSecurityOrigin* origin, const char* protocol, const char* host, gboolean allowSubdomains) |
| 253 | +{ |
| 254 | + g_return_if_fail(WEBKIT_IS_WEB_EXTENSION(extension)); |
| 255 | + g_return_if_fail(origin); |
| 256 | + g_return_if_fail(protocol); |
| 257 | + |
| 258 | + extension->priv->bundle->addOriginAccessAllowListEntry(webkitSecurityOriginGetSecurityOriginData(origin).toString(), String::fromUTF8(protocol), String::fromUTF8(host), host ? allowSubdomains : true); |
| 259 | +} |
| 260 | + |
| 261 | +void webkit_web_extension_remove_origin_access_whitelist_entry(WebKitWebExtension* extension, WebKitSecurityOrigin* origin, const char* protocol, const char* host, gboolean allowSubdomains) |
| 262 | +{ |
| 263 | + g_return_if_fail(WEBKIT_IS_WEB_EXTENSION(extension)); |
| 264 | + g_return_if_fail(origin); |
| 265 | + g_return_if_fail(protocol); |
| 266 | + |
| 267 | + extension->priv->bundle->removeOriginAccessAllowListEntry(webkitSecurityOriginGetSecurityOriginData(origin).toString(), String::fromUTF8(protocol), String::fromUTF8(host), host ? allowSubdomains : true); |
| 268 | +} |
| 269 | + |
| 270 | +void webkit_web_extension_reset_origin_access_whitelists(WebKitWebExtension* extension) |
| 271 | +{ |
| 272 | + g_return_if_fail(WEBKIT_IS_WEB_EXTENSION(extension)); |
| 273 | + |
| 274 | + extension->priv->bundle->resetOriginAccessAllowLists(); |
| 275 | +} |
| 276 | + |
249 | 277 | /** |
250 | 278 | * webkit_web_extension_send_message_to_context: |
251 | 279 | * @extension: a #WebKitWebExtension |
|
0 commit comments