Skip to content

Commit 02b1a2c

Browse files
filipe-norte-redmagomez
authored andcommitted
Add support to enable/disable service workers at runtime
1 parent 94674c9 commit 02b1a2c

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

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

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ enum {
186186
PROP_ALLOW_SCRIPTS_TO_CLOSE_WINDOWS,
187187
PROP_ALLOW_MOVE_TO_SUSPEND_ON_WINDOW_CLOSE,
188188
PROP_ENABLE_DIRECTORY_UPLOAD,
189+
PROP_ENABLE_SERVICE_WORKER,
189190
N_PROPERTIES,
190191
};
191192

@@ -432,6 +433,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
432433
case PROP_ENABLE_DIRECTORY_UPLOAD:
433434
webkit_settings_set_enable_directory_upload(settings, g_value_get_boolean(value));
434435
break;
436+
case PROP_ENABLE_SERVICE_WORKER:
437+
webkit_settings_set_enable_service_worker(settings, g_value_get_boolean(value));
438+
break;
435439
default:
436440
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
437441
break;
@@ -658,6 +662,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
658662
case PROP_ENABLE_DIRECTORY_UPLOAD:
659663
g_value_set_boolean(value, webkit_settings_get_enable_directory_upload(settings));
660664
break;
665+
case PROP_ENABLE_SERVICE_WORKER:
666+
g_value_set_boolean(value, webkit_settings_get_enable_service_worker(settings));
667+
break;
661668
default:
662669
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
663670
break;
@@ -1759,6 +1766,21 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass)
17591766
TRUE,
17601767
readWriteConstructParamFlags);
17611768

1769+
/**
1770+
* WebKitSettings:enable-service-worker:
1771+
*
1772+
* Enable or disable service worker.
1773+
* This property will only work as intended if the ServiceWorker feature is enabled at build time
1774+
* with the ENABLE_SERVICE_WORKER flag.
1775+
*
1776+
*/
1777+
sObjProperties[PROP_ENABLE_SERVICE_WORKER] = g_param_spec_boolean(
1778+
"enable-service-worker",
1779+
_("Enable service worker"),
1780+
_("Whether service worker support should be enabled."),
1781+
TRUE,
1782+
readWriteConstructParamFlags);
1783+
17621784
g_object_class_install_properties(gObjectClass, N_PROPERTIES, sObjProperties);
17631785
}
17641786

@@ -4618,3 +4640,42 @@ void webkit_settings_set_enable_directory_upload(WebKitSettings* settings, gbool
46184640
priv->preferences->setDirectoryUploadEnabled(enabled);
46194641
g_object_notify(G_OBJECT(settings), "enable-directory-upload");
46204642
}
4643+
4644+
/**
4645+
* webkit_settings_get_enable_service_worker:
4646+
* @settings: a #WebKitSettings
4647+
*
4648+
* Get the #WebKitSettings:enable-service-worker property.
4649+
*
4650+
* Returns: %TRUE if Service Worker support is enabled or %FALSE otherwise.
4651+
*
4652+
* Since: 2.38
4653+
*/
4654+
gboolean webkit_settings_get_enable_service_worker(WebKitSettings* settings)
4655+
{
4656+
g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
4657+
4658+
return settings->priv->preferences->serviceWorkersEnabled();
4659+
}
4660+
4661+
/**
4662+
* webkit_settings_set_enable_service_worker:
4663+
* @settings: a #WebKitSettings
4664+
* @enabled: Value to be set
4665+
*
4666+
* Set the #WebKitSettings:enable-service-worker property.
4667+
*
4668+
* Since: 2.38
4669+
*/
4670+
void webkit_settings_set_enable_service_worker(WebKitSettings* settings, gboolean enabled)
4671+
{
4672+
g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
4673+
4674+
WebKitSettingsPrivate* priv = settings->priv;
4675+
bool currentValue = priv->preferences->serviceWorkersEnabled();
4676+
if (currentValue == enabled)
4677+
return;
4678+
4679+
priv->preferences->setServiceWorkersEnabled(enabled);
4680+
g_object_notify_by_pspec(G_OBJECT(settings), sObjProperties[PROP_ENABLE_SERVICE_WORKER]);
4681+
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,12 @@ WEBKIT_API void
609609
webkit_settings_set_enable_directory_upload (WebKitSettings *settings,
610610
gboolean enabled);
611611

612+
WEBKIT_API gboolean
613+
webkit_settings_get_enable_service_worker (WebKitSettings* settings);
614+
WEBKIT_API void
615+
webkit_settings_set_enable_service_worker (WebKitSettings* settings,
616+
gboolean enabled);
617+
612618
G_END_DECLS
613619

614620
#endif /* WebKitSettings_h */

0 commit comments

Comments
 (0)