Skip to content

Commit e1da4bf

Browse files
authored
Merge pull request #1312 from filipe-norte-red/wpe-2.38-service-worker-add-runtime-enable-support
Add support to enable/disable service workers at runtime
2 parents 38e6e08 + 96d05cb commit e1da4bf

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
@@ -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

@@ -430,6 +431,9 @@ ALLOW_DEPRECATED_DECLARATIONS_END
430431
case PROP_ENABLE_DIRECTORY_UPLOAD:
431432
webkit_settings_set_enable_directory_upload(settings, g_value_get_boolean(value));
432433
break;
434+
case PROP_ENABLE_SERVICE_WORKER:
435+
webkit_settings_set_enable_service_worker(settings, g_value_get_boolean(value));
436+
break;
433437
default:
434438
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
435439
break;
@@ -652,6 +656,9 @@ ALLOW_DEPRECATED_DECLARATIONS_END
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;
@@ -1732,6 +1739,21 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass)
17321739
TRUE,
17331740
readWriteConstructParamFlags);
17341741

1742+
/**
1743+
* WebKitSettings:enable-service-worker:
1744+
*
1745+
* Enable or disable service worker.
1746+
* This property will only work as intended if the ServiceWorker feature is enabled at build time
1747+
* with the ENABLE_SERVICE_WORKER flag.
1748+
*
1749+
*/
1750+
sObjProperties[PROP_ENABLE_SERVICE_WORKER] = g_param_spec_boolean(
1751+
"enable-service-worker",
1752+
_("Enable service worker"),
1753+
_("Whether service worker support should be enabled."),
1754+
TRUE,
1755+
readWriteConstructParamFlags);
1756+
17351757
g_object_class_install_properties(gObjectClass, N_PROPERTIES, sObjProperties);
17361758
}
17371759

@@ -4350,3 +4372,42 @@ void webkit_settings_set_enable_directory_upload(WebKitSettings* settings, gbool
43504372
priv->preferences->setDirectoryUploadEnabled(enabled);
43514373
g_object_notify(G_OBJECT(settings), "enable-directory-upload");
43524374
}
4375+
4376+
/**
4377+
* webkit_settings_get_enable_service_worker:
4378+
* @settings: a #WebKitSettings
4379+
*
4380+
* Get the #WebKitSettings:enable-service-worker property.
4381+
*
4382+
* Returns: %TRUE if Service Worker support is enabled or %FALSE otherwise.
4383+
*
4384+
* Since: 2.38
4385+
*/
4386+
gboolean webkit_settings_get_enable_service_worker(WebKitSettings* settings)
4387+
{
4388+
g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
4389+
4390+
return settings->priv->preferences->serviceWorkersEnabled();
4391+
}
4392+
4393+
/**
4394+
* webkit_settings_set_enable_service_worker:
4395+
* @settings: a #WebKitSettings
4396+
* @enabled: Value to be set
4397+
*
4398+
* Set the #WebKitSettings:enable-service-worker property.
4399+
*
4400+
* Since: 2.38
4401+
*/
4402+
void webkit_settings_set_enable_service_worker(WebKitSettings* settings, gboolean enabled)
4403+
{
4404+
g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
4405+
4406+
WebKitSettingsPrivate* priv = settings->priv;
4407+
bool currentValue = priv->preferences->serviceWorkersEnabled();
4408+
if (currentValue == enabled)
4409+
return;
4410+
4411+
priv->preferences->setServiceWorkersEnabled(enabled);
4412+
g_object_notify_by_pspec(G_OBJECT(settings), sObjProperties[PROP_ENABLE_SERVICE_WORKER]);
4413+
}

Source/WebKit/UIProcess/API/wpe/WebKitSettings.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,12 @@ WEBKIT_API void
527527
webkit_settings_set_enable_directory_upload (WebKitSettings *settings,
528528
gboolean enabled);
529529

530+
WEBKIT_API gboolean
531+
webkit_settings_get_enable_service_worker (WebKitSettings* settings);
532+
WEBKIT_API void
533+
webkit_settings_set_enable_service_worker (WebKitSettings* settings,
534+
gboolean enabled);
535+
530536
G_END_DECLS
531537

532538
#endif /* WebKitSettings_h */

0 commit comments

Comments
 (0)