Skip to content

Commit 52c1e45

Browse files
filipe-norte-redspenap
authored andcommitted
Add setting to enable/disable service workers at runtime
1 parent fb1f93a commit 52c1e45

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ enum {
194194
PROP_ENABLE_DIRECTORY_UPLOAD,
195195
PROP_ALLOW_RUNNING_OF_INSECURE_CONTENT,
196196
PROP_ALLOW_DISPLAY_OF_INSECURE_CONTENT,
197+
PROP_ENABLE_SERVICE_WORKER,
197198
N_PROPERTIES,
198199
};
199200

@@ -439,6 +440,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
439440
case PROP_ALLOW_DISPLAY_OF_INSECURE_CONTENT:
440441
webkit_settings_set_allow_display_of_insecure_content(settings, g_value_get_boolean(value));
441442
break;
443+
case PROP_ENABLE_SERVICE_WORKER:
444+
webkit_settings_set_enable_service_worker(settings, g_value_get_boolean(value));
445+
break;
442446
default:
443447
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
444448
break;
@@ -668,6 +672,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
668672
case PROP_ALLOW_DISPLAY_OF_INSECURE_CONTENT:
669673
g_value_set_boolean(value, webkit_settings_get_allow_display_of_insecure_content(settings));
670674
break;
675+
case PROP_ENABLE_SERVICE_WORKER:
676+
g_value_set_boolean(value, webkit_settings_get_enable_service_worker(settings));
677+
break;
671678
default:
672679
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
673680
break;
@@ -1813,6 +1820,21 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass)
18131820
FALSE,
18141821
readWriteConstructParamFlags);
18151822

1823+
/**
1824+
* WebKitSettings:enable-service-worker:
1825+
*
1826+
* Enable or disable service worker.
1827+
* This property will only work as intended if the ServiceWorker feature is enabled at build time
1828+
* with the ENABLE_SERVICE_WORKER flag.
1829+
*
1830+
*/
1831+
sObjProperties[PROP_ENABLE_SERVICE_WORKER] = g_param_spec_boolean(
1832+
"enable-service-worker",
1833+
_("Enable service worker"),
1834+
_("Whether service worker support should be enabled."),
1835+
TRUE,
1836+
readWriteConstructParamFlags);
1837+
18161838
g_object_class_install_properties(gObjectClass, N_PROPERTIES, sObjProperties.data());
18171839
}
18181840

@@ -4723,3 +4745,42 @@ void webkit_settings_set_allow_display_of_insecure_content(WebKitSettings* setti
47234745

47244746
g_object_notify_by_pspec(G_OBJECT(settings), sObjProperties[PROP_ALLOW_DISPLAY_OF_INSECURE_CONTENT]);
47254747
}
4748+
4749+
/**
4750+
* webkit_settings_get_enable_service_worker:
4751+
* @settings: a #WebKitSettings
4752+
*
4753+
* Get the #WebKitSettings:enable-service-worker property.
4754+
*
4755+
* Returns: %TRUE if Service Worker support is enabled or %FALSE otherwise.
4756+
*
4757+
* Since: 2.38
4758+
*/
4759+
gboolean webkit_settings_get_enable_service_worker(WebKitSettings* settings)
4760+
{
4761+
g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
4762+
4763+
return settings->priv->preferences->serviceWorkersEnabled();
4764+
}
4765+
4766+
/**
4767+
* webkit_settings_set_enable_service_worker:
4768+
* @settings: a #WebKitSettings
4769+
* @enabled: Value to be set
4770+
*
4771+
* Set the #WebKitSettings:enable-service-worker property.
4772+
*
4773+
* Since: 2.38
4774+
*/
4775+
void webkit_settings_set_enable_service_worker(WebKitSettings* settings, gboolean enabled)
4776+
{
4777+
g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
4778+
4779+
WebKitSettingsPrivate* priv = settings->priv;
4780+
bool currentValue = priv->preferences->serviceWorkersEnabled();
4781+
if (currentValue == enabled)
4782+
return;
4783+
4784+
priv->preferences->setServiceWorkersEnabled(enabled);
4785+
g_object_notify_by_pspec(G_OBJECT(settings), sObjProperties[PROP_ENABLE_SERVICE_WORKER]);
4786+
}

Source/WebKit/UIProcess/API/glib/WebKitSettings.h.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,12 @@ WEBKIT_API void
616616
webkit_settings_set_enable_directory_upload (WebKitSettings *settings,
617617
gboolean enabled);
618618

619+
WEBKIT_API gboolean
620+
webkit_settings_get_enable_service_worker (WebKitSettings* settings);
621+
WEBKIT_API void
622+
webkit_settings_set_enable_service_worker (WebKitSettings* settings,
623+
gboolean enabled);
624+
619625
G_END_DECLS
620626

621627
#endif /* WebKitSettings_h */

0 commit comments

Comments
 (0)