Skip to content

Commit f71742c

Browse files
magomezspenap
authored andcommitted
Add API to get and set screen-supports-HDR setting
1 parent ed78c31 commit f71742c

File tree

5 files changed

+88
-1
lines changed

5 files changed

+88
-1
lines changed

Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6397,6 +6397,19 @@ ScreenOrientationLockingAPIEnabled:
63976397
WebCore:
63986398
default: false
63996399

6400+
ScreenSupportsHDR:
6401+
type: bool
6402+
status: embedder
6403+
humanReadableName: "Screen supports HDR"
6404+
humanReadableDescription: "Screen supports HDR"
6405+
defaultValue:
6406+
WebKitLegacy:
6407+
default: false
6408+
WebKit:
6409+
default: false
6410+
WebCore:
6411+
default: false
6412+
64006413
ScreenTimeEnabled:
64016414
type: bool
64026415
status: internal

Source/WebCore/platform/PlatformScreen.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ WEBCORE_EXPORT DynamicRangeMode preferredDynamicRangeMode(Widget* = nullptr);
9797
constexpr DynamicRangeMode preferredDynamicRangeMode(Widget* = nullptr) { return DynamicRangeMode::Standard; }
9898
#endif
9999

100-
#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
100+
#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY) || PLATFORM(WPE)
101101
WEBCORE_EXPORT bool screenSupportsHighDynamicRange(Widget* = nullptr);
102102
#else
103103
constexpr bool screenSupportsHighDynamicRange(Widget* = nullptr) { return false; }

Source/WebCore/platform/wpe/PlatformScreenWPE.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@
2828

2929
#include "DestinationColorSpace.h"
3030
#include "FloatRect.h"
31+
#include "Frame.h"
32+
#include "FrameView.h"
3133
#include "HostWindow.h"
3234
#include "LocalFrameView.h"
3335
#include "NotImplemented.h"
36+
#include "Settings.h"
3437
#include "ScreenProperties.h"
3538
#include "Widget.h"
3639

@@ -150,4 +153,11 @@ bool screenSupportsExtendedColor(Widget*)
150153
return false;
151154
}
152155

156+
bool screenSupportsHighDynamicRange(Widget* widget)
157+
{
158+
if(!widget || !widget->root())
159+
return false;
160+
161+
return widget->root()->frame().settings().screenSupportsHDR();
162+
}
153163
} // namespace WebCore

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ enum {
196196
PROP_ALLOW_DISPLAY_OF_INSECURE_CONTENT,
197197
PROP_ENABLE_SERVICE_WORKER,
198198
PROP_ENABLE_ICE_CANDIDATE_FILTERING,
199+
PROP_SCREEN_SUPPORTS_HDR,
199200
N_PROPERTIES,
200201
};
201202

@@ -447,6 +448,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
447448
case PROP_ENABLE_ICE_CANDIDATE_FILTERING:
448449
webkit_settings_set_enable_ice_candidate_filtering(settings, g_value_get_boolean(value));
449450
break;
451+
case PROP_SCREEN_SUPPORTS_HDR:
452+
webkit_settings_set_screen_supports_hdr(settings, g_value_get_boolean(value));
453+
break;
450454
default:
451455
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
452456
break;
@@ -682,6 +686,9 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
682686
case PROP_ENABLE_ICE_CANDIDATE_FILTERING:
683687
g_value_set_boolean(value, webkit_settings_get_enable_ice_candidate_filtering(settings));
684688
break;
689+
case PROP_SCREEN_SUPPORTS_HDR:
690+
g_value_set_boolean(value, webkit_settings_get_screen_supports_hdr(settings));
691+
break;
685692
default:
686693
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
687694
break;
@@ -1855,6 +1862,19 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass)
18551862
TRUE,
18561863
readWriteConstructParamFlags);
18571864

1865+
/**
1866+
* WebKitSettings:screen-supports-hdr:
1867+
*
1868+
* Screen supports HDR.
1869+
*
1870+
*/
1871+
sObjProperties[PROP_SCREEN_SUPPORTS_HDR] = g_param_spec_boolean(
1872+
"screen-supports-hdr",
1873+
_("Screen supports HDR"),
1874+
_("Does screen support HDR."),
1875+
FALSE,
1876+
readWriteConstructParamFlags);
1877+
18581878
g_object_class_install_properties(gObjectClass, N_PROPERTIES, sObjProperties.data());
18591879
}
18601880

@@ -4851,3 +4871,40 @@ void webkit_settings_set_enable_non_composited_webgl(WebKitSettings* settings, g
48514871
{
48524872
g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
48534873
}
4874+
4875+
/**
4876+
* webkit_settings_get_screen_supports_hdr:
4877+
* @settings: a #WebKitSettings
4878+
*
4879+
* Get the [property@Settings:screen-supports-hdr] property.
4880+
*
4881+
* Returns: Screen supports HDR, or FALSE if un-set.
4882+
*
4883+
*/
4884+
gboolean
4885+
webkit_settings_get_screen_supports_hdr(WebKitSettings* settings)
4886+
{
4887+
g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
4888+
return settings->priv->preferences->screenSupportsHDR();
4889+
}
4890+
4891+
/**
4892+
* webkit_settings_set_screen_supports_hdr:
4893+
* @settings: a #WebKitSettings
4894+
* @screenSupportsHDR: Value to be set
4895+
*
4896+
* Set the [property@Settings:screen-supports-hdr] property.
4897+
*
4898+
*/
4899+
void
4900+
webkit_settings_set_screen_supports_hdr(WebKitSettings* settings, gboolean screenSupportsHDR)
4901+
{
4902+
g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
4903+
WebKitSettingsPrivate* priv = settings->priv;
4904+
bool currentValue = priv->preferences->screenSupportsHDR();
4905+
if (currentValue == screenSupportsHDR)
4906+
return;
4907+
4908+
priv->preferences->setScreenSupportsHDR(screenSupportsHDR);
4909+
g_object_notify_by_pspec(G_OBJECT(settings), sObjProperties[PROP_SCREEN_SUPPORTS_HDR]);
4910+
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,13 @@ WEBKIT_API void
636636
webkit_settings_set_enable_non_composited_webgl (WebKitSettings *settings,
637637
gboolean enabled);
638638

639+
WEBKIT_API gboolean
640+
webkit_settings_get_screen_supports_hdr (WebKitSettings* settings);
641+
642+
WEBKIT_API void
643+
webkit_settings_set_screen_supports_hdr (WebKitSettings* settings,
644+
gboolean screenSupportsHDR);
645+
639646
G_END_DECLS
640647

641648
#endif /* WebKitSettings_h */

0 commit comments

Comments
 (0)