Skip to content

Commit 903aacc

Browse files
Add support to enable/disable service workers at runtime
1 parent 30f2909 commit 903aacc

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
@@ -179,6 +179,7 @@ enum {
179179
PROP_ALLOW_SCRIPTS_TO_CLOSE_WINDOWS,
180180
PROP_ALLOW_MOVE_TO_SUSPEND_ON_WINDOW_CLOSE,
181181
PROP_ENABLE_DIRECTORY_UPLOAD,
182+
PROP_ENABLE_SERVICE_WORKER,
182183
N_PROPERTIES,
183184
};
184185

@@ -429,6 +430,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
429430
case PROP_ENABLE_DIRECTORY_UPLOAD:
430431
webkit_settings_set_enable_directory_upload(settings, g_value_get_boolean(value));
431432
break;
433+
case PROP_ENABLE_SERVICE_WORKER:
434+
webkit_settings_set_enable_service_worker(settings, g_value_get_boolean(value));
435+
break;
432436
default:
433437
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
434438
break;
@@ -652,6 +656,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
652656
case PROP_ENABLE_DIRECTORY_UPLOAD:
653657
g_value_set_boolean(value, webkit_settings_get_enable_directory_upload(settings));
654658
break;
659+
case PROP_ENABLE_SERVICE_WORKER:
660+
g_value_set_boolean(value, webkit_settings_get_enable_service_worker(settings));
661+
break;
655662
default:
656663
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
657664
break;
@@ -1716,6 +1723,21 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass)
17161723
TRUE,
17171724
readWriteConstructParamFlags);
17181725

1726+
/**
1727+
* WebKitSettings:enable-service-worker:
1728+
*
1729+
* Enable or disable service worker.
1730+
* This property will only work as intended if the ServiceWorker feature is enabled at build time
1731+
* with the ENABLE_SERVICE_WORKER flag.
1732+
*
1733+
*/
1734+
sObjProperties[PROP_ENABLE_SERVICE_WORKER] = g_param_spec_boolean(
1735+
"enable-service-worker",
1736+
_("Enable service worker"),
1737+
_("Whether service worker support should be enabled."),
1738+
TRUE,
1739+
readWriteConstructParamFlags);
1740+
17191741
g_object_class_install_properties(gObjectClass, N_PROPERTIES, sObjProperties);
17201742
}
17211743

@@ -4406,3 +4428,42 @@ void webkit_settings_set_enable_directory_upload(WebKitSettings* settings, gbool
44064428
priv->preferences->setDirectoryUploadEnabled(enabled);
44074429
g_object_notify(G_OBJECT(settings), "enable-directory-upload");
44084430
}
4431+
4432+
/**
4433+
* webkit_settings_get_enable_service_worker:
4434+
* @settings: a #WebKitSettings
4435+
*
4436+
* Get the #WebKitSettings:enable-service-worker property.
4437+
*
4438+
* Returns: %TRUE if Service Worker support is enabled or %FALSE otherwise.
4439+
*
4440+
* Since: 2.38
4441+
*/
4442+
gboolean webkit_settings_get_enable_service_worker(WebKitSettings* settings)
4443+
{
4444+
g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
4445+
4446+
return settings->priv->preferences->serviceWorkersEnabled();
4447+
}
4448+
4449+
/**
4450+
* webkit_settings_set_enable_service_worker:
4451+
* @settings: a #WebKitSettings
4452+
* @enabled: Value to be set
4453+
*
4454+
* Set the #WebKitSettings:enable-service-worker property.
4455+
*
4456+
* Since: 2.38
4457+
*/
4458+
void webkit_settings_set_enable_service_worker(WebKitSettings* settings, gboolean enabled)
4459+
{
4460+
g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
4461+
4462+
WebKitSettingsPrivate* priv = settings->priv;
4463+
bool currentValue = priv->preferences->serviceWorkersEnabled();
4464+
if (currentValue == enabled)
4465+
return;
4466+
4467+
priv->preferences->setServiceWorkersEnabled(enabled);
4468+
g_object_notify_by_pspec(G_OBJECT(settings), sObjProperties[PROP_ENABLE_SERVICE_WORKER]);
4469+
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,12 @@ WEBKIT_API void
596596
webkit_settings_set_enable_directory_upload (WebKitSettings *settings,
597597
gboolean enabled);
598598

599+
WEBKIT_API gboolean
600+
webkit_settings_get_enable_service_worker (WebKitSettings* settings);
601+
WEBKIT_API void
602+
webkit_settings_set_enable_service_worker (WebKitSettings* settings,
603+
gboolean enabled);
604+
599605
G_END_DECLS
600606

601607
#endif /* WebKitSettings_h */

0 commit comments

Comments
 (0)