Skip to content

Commit 4fe8840

Browse files
authored
Merge pull request #1448 from WebPlatformForEmbedded/pgorszkowski/2.38/screen_supports_HDR
Added API to get and set screen-supports-HDR setting
2 parents f9ed45c + ae22d69 commit 4fe8840

5 files changed

Lines changed: 84 additions & 1 deletion

File tree

Source/WTF/Scripts/Preferences/WebPreferences.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1918,6 +1918,16 @@ SansSerifFontFamily:
19181918
WebCore:
19191919
default: '""'
19201920

1921+
ScreenSupportsHDR:
1922+
type: bool
1923+
defaultValue:
1924+
WebKitLegacy:
1925+
default: false
1926+
WebKit:
1927+
default: false
1928+
WebCore:
1929+
default: false
1930+
19211931
ScrollAnimatorEnabled:
19221932
type: bool
19231933
defaultValue:

Source/WebCore/platform/PlatformScreen.h

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

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

Source/WebCore/platform/wpe/PlatformScreenWPE.cpp

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

2929
#include "DestinationColorSpace.h"
3030
#include "FloatRect.h"
31+
#include "Frame.h"
32+
#include "FrameView.h"
3133
#include "NotImplemented.h"
3234
#include "Widget.h"
3335

@@ -104,4 +106,11 @@ bool screenIsTouchPrimaryInputDevice()
104106
}
105107
#endif
106108

109+
bool screenSupportsHighDynamicRange(Widget* widget)
110+
{
111+
if(!widget || !widget->root())
112+
return false;
113+
114+
return widget->root()->frame().settings().screenSupportsHDR();
115+
}
107116
} // namespace WebCore

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ enum {
188188
PROP_ENABLE_SERVICE_WORKER,
189189
PROP_ENABLE_ICE_CANDIDATE_FILTERING,
190190
PROP_WEBRTC_UDP_PORTS_RANGE,
191+
PROP_SCREEN_SUPPORTS_HDR,
191192
N_PROPERTIES,
192193
};
193194

@@ -448,6 +449,9 @@ ALLOW_DEPRECATED_DECLARATIONS_END
448449
case PROP_WEBRTC_UDP_PORTS_RANGE:
449450
webkit_settings_set_webrtc_udp_ports_range(settings, g_value_get_string(value));
450451
break;
452+
case PROP_SCREEN_SUPPORTS_HDR:
453+
webkit_settings_set_screen_supports_hdr(settings, g_value_get_boolean(value));
454+
break;
451455
default:
452456
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
453457
break;
@@ -679,6 +683,9 @@ ALLOW_DEPRECATED_DECLARATIONS_END
679683
case PROP_WEBRTC_UDP_PORTS_RANGE:
680684
g_value_set_string(value, webkit_settings_get_webrtc_udp_ports_range(settings));
681685
break;
686+
case PROP_SCREEN_SUPPORTS_HDR:
687+
g_value_set_boolean(value, webkit_settings_get_screen_supports_hdr(settings));
688+
break;
682689
default:
683690
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
684691
break;
@@ -1807,6 +1814,19 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass)
18071814
nullptr, // A null string forces the default value.
18081815
readWriteConstructParamFlags);
18091816

1817+
/**
1818+
* WebKitSettings:screen-supports-hdr:
1819+
*
1820+
* Screen supports HDR.
1821+
*
1822+
*/
1823+
sObjProperties[PROP_SCREEN_SUPPORTS_HDR] = g_param_spec_boolean(
1824+
"screen-supports-hdr",
1825+
_("Screen supports HDR"),
1826+
_("Does screen support HDR."),
1827+
FALSE,
1828+
readWriteConstructParamFlags);
1829+
18101830
g_object_class_install_properties(gObjectClass, N_PROPERTIES, sObjProperties);
18111831
}
18121832

@@ -4547,3 +4567,40 @@ webkit_settings_set_webrtc_udp_ports_range(WebKitSettings* settings, const gchar
45474567
UNUSED_PARAM(udpPortsRange);
45484568
#endif
45494569
}
4570+
4571+
/**
4572+
* webkit_settings_get_screen_supports_hdr:
4573+
* @settings: a #WebKitSettings
4574+
*
4575+
* Get the [property@Settings:screen-supports-hdr] property.
4576+
*
4577+
* Returns: Screen supports HDR, or FALSE if un-set.
4578+
*
4579+
*/
4580+
gboolean
4581+
webkit_settings_get_screen_supports_hdr(WebKitSettings* settings)
4582+
{
4583+
g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
4584+
return settings->priv->preferences->screenSupportsHDR();
4585+
}
4586+
4587+
/**
4588+
* webkit_settings_set_screen_supports_hdr:
4589+
* @settings: a #WebKitSettings
4590+
* @screenSupportsHDR: Value to be set
4591+
*
4592+
* Set the [property@Settings:screen-supports-hdr] property.
4593+
*
4594+
*/
4595+
void
4596+
webkit_settings_set_screen_supports_hdr(WebKitSettings* settings, gboolean screenSupportsHDR)
4597+
{
4598+
g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
4599+
WebKitSettingsPrivate* priv = settings->priv;
4600+
bool currentValue = priv->preferences->screenSupportsHDR();
4601+
if (currentValue == screenSupportsHDR)
4602+
return;
4603+
4604+
priv->preferences->setScreenSupportsHDR(screenSupportsHDR);
4605+
g_object_notify_by_pspec(G_OBJECT(settings), sObjProperties[PROP_SCREEN_SUPPORTS_HDR]);
4606+
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,13 @@ WEBKIT_API void
547547
webkit_settings_set_webrtc_udp_ports_range (WebKitSettings *settings,
548548
const gchar *udp_port_range);
549549

550+
WEBKIT_API gboolean
551+
webkit_settings_get_screen_supports_hdr (WebKitSettings* settings);
552+
553+
WEBKIT_API void
554+
webkit_settings_set_screen_supports_hdr (WebKitSettings* settings,
555+
gboolean screenSupportsHDR);
556+
550557
G_END_DECLS
551558

552559
#endif /* WebKitSettings_h */

0 commit comments

Comments
 (0)