Changeset 255881 in webkit


Ignore:
Timestamp:
Feb 5, 2020 5:03:01 PM (4 years ago)
Author:
jer.noble@apple.com
Message:

Adopt MTOverrideShouldPlayHDRVideo()
https://bugs.webkit.org/show_bug.cgi?id=207275
<rdar://problem/58837093>

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm:

(WebCore::setShouldOverrideScreenSupportsHighDynamicRange):

Source/WebCore/PAL:

  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h:

Source/WebKit:

The WebProcess sandbox can block access to the services necessary for MediaToolbox to determine whether
the current display is capable of displaying HDR. Rather than opening up the sandbox, provide the information
gathered by the UIProcess by way of MTOverrideShouldPlayHDRVideo().

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::windowScreenDidChange):
(WebKit::WebPage::displayID const):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setScreenProperties): Deleted.

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::setScreenProperties):
(WebKit::WebProcess::updatePageScreenProperties):

Location:
trunk/Source
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r255876 r255881  
     12020-02-05  Jer Noble  <jer.noble@apple.com>
     2
     3        Adopt MTOverrideShouldPlayHDRVideo()
     4        https://bugs.webkit.org/show_bug.cgi?id=207275
     5        <rdar://problem/58837093>
     6
     7        Reviewed by Eric Carlson.
     8
     9        * platform/PlatformScreen.h:
     10        * platform/mac/PlatformScreenMac.mm:
     11        (WebCore::setShouldOverrideScreenSupportsHighDynamicRange):
     12
    1132020-02-05  Chris Dumez  <cdumez@apple.com>
    214
  • trunk/Source/WebCore/PAL/ChangeLog

    r255819 r255881  
     12020-02-05  Jer Noble  <jer.noble@apple.com>
     2
     3        Adopt MTOverrideShouldPlayHDRVideo()
     4        https://bugs.webkit.org/show_bug.cgi?id=207275
     5        <rdar://problem/58837093>
     6
     7        Reviewed by Eric Carlson.
     8
     9        * pal/cocoa/MediaToolboxSoftLink.cpp:
     10        * pal/cocoa/MediaToolboxSoftLink.h:
     11
    1122020-02-05  Commit Queue  <commit-queue@webkit.org>
    213
  • trunk/Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.cpp

    r252762 r255881  
    3434
    3535SOFT_LINK_FUNCTION_MAY_FAIL_FOR_SOURCE_WITH_EXPORT(PAL, MediaToolbox, MTShouldPlayHDRVideo, Boolean, (CFArrayRef displayList), (displayList), PAL_EXPORT)
     36SOFT_LINK_FUNCTION_MAY_FAIL_FOR_SOURCE_WITH_EXPORT(PAL, MediaToolbox, MTOverrideShouldPlayHDRVideo, void, (Boolean override, Boolean playHDRVideo), (override, playHDRVideo), PAL_EXPORT)
    3637
    3738#endif
  • trunk/Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.h

    r252762 r255881  
    3434
    3535SOFT_LINK_FUNCTION_MAY_FAIL_FOR_HEADER(PAL, MediaToolbox, MTShouldPlayHDRVideo, Boolean, (CFArrayRef displayList), (displayList))
     36SOFT_LINK_FUNCTION_MAY_FAIL_FOR_HEADER(PAL, MediaToolbox, MTOverrideShouldPlayHDRVideo, void, (Boolean override, Boolean playHDRVideo), (override, playHDRVideo))
    3637
    3738#endif
  • trunk/Source/WebCore/platform/PlatformScreen.h

    r252762 r255881  
    7777
    7878#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
    79 bool screenSupportsHighDynamicRange(Widget* = nullptr);
     79WEBCORE_EXPORT bool screenSupportsHighDynamicRange(Widget* = nullptr);
    8080#else
    8181constexpr bool screenSupportsHighDynamicRange(Widget* = nullptr) { return false; }
     
    105105WEBCORE_EXPORT ScreenProperties collectScreenProperties();
    106106WEBCORE_EXPORT void setScreenProperties(const ScreenProperties&);
     107
     108WEBCORE_EXPORT void setShouldOverrideScreenSupportsHighDynamicRange(bool shouldOverride, bool supportsHighDynamicRange);
    107109
    108110WEBCORE_EXPORT PlatformDisplayID primaryScreenDisplayID();
  • trunk/Source/WebCore/platform/mac/PlatformScreenMac.mm

    r253062 r255881  
    157157}
    158158
     159void setShouldOverrideScreenSupportsHighDynamicRange(bool shouldOverride, bool supportsHighDynamicRange)
     160{
     161    if (PAL::canLoad_MediaToolbox_MTOverrideShouldPlayHDRVideo())
     162        PAL::softLink_MediaToolbox_MTOverrideShouldPlayHDRVideo(shouldOverride, supportsHighDynamicRange);
     163}
     164
    159165static ScreenData screenData(PlatformDisplayID screendisplayID)
    160166{
  • trunk/Source/WebKit/ChangeLog

    r255879 r255881  
     12020-02-05  Jer Noble  <jer.noble@apple.com>
     2
     3        Adopt MTOverrideShouldPlayHDRVideo()
     4        https://bugs.webkit.org/show_bug.cgi?id=207275
     5        <rdar://problem/58837093>
     6
     7        Reviewed by Eric Carlson.
     8
     9        The WebProcess sandbox can block access to the services necessary for MediaToolbox to determine whether
     10        the current display is capable of displaying HDR. Rather than opening up the sandbox, provide the information
     11        gathered by the UIProcess by way of MTOverrideShouldPlayHDRVideo().
     12
     13        * WebProcess/WebPage/WebPage.cpp:
     14        (WebKit::WebPage::windowScreenDidChange):
     15        (WebKit::WebPage::displayID const):
     16        * WebProcess/WebPage/WebPage.h:
     17        * WebProcess/WebProcess.cpp:
     18        (WebKit::WebProcess::setScreenProperties): Deleted.
     19        * WebProcess/WebProcess.h:
     20        * WebProcess/cocoa/WebProcessCocoa.mm:
     21        (WebKit::WebProcess::setScreenProperties):
     22        (WebKit::WebProcess::updatePageScreenProperties):
     23
    1242020-02-05  Wenson Hsieh  <wenson_hsieh@apple.com>
    225
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r255532 r255881  
    19941994{
    19951995    m_page->chrome().windowScreenDidChange(static_cast<PlatformDisplayID>(displayID));
     1996
     1997#if PLATFORM(MAC)
     1998    WebProcess::singleton().updatePageScreenProperties();
     1999#endif
    19962000}
    19972001
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r255681 r255881  
    18781878#endif
    18791879
    1880 #if PLATFORM(MAC)
    1881 void WebProcess::setScreenProperties(const WebCore::ScreenProperties& properties)
    1882 {
    1883     WebCore::setScreenProperties(properties);
    1884     for (auto& page : m_pageMap.values())
    1885         page->screenPropertiesDidChange();
    1886 }
    1887 #endif
    1888 
    18891880#if ENABLE(MEDIA_STREAM)
    18901881void WebProcess::addMockMediaDevice(const WebCore::MockMediaDevice& device)
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r255681 r255881  
    324324#endif
    325325
     326#if PLATFORM(MAC)
     327    void updatePageScreenProperties();
     328#endif
     329
    326330private:
    327331    WebProcess();
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r255457 r255881  
    7979#import <stdio.h>
    8080#import <wtf/FileSystem.h>
     81#import <wtf/ProcessPrivilege.h>
    8182#import <wtf/cocoa/NSURLExtras.h>
    8283
     
    930931#endif
    931932
     933#if PLATFORM(MAC)
     934void WebProcess::setScreenProperties(const ScreenProperties& properties)
     935{
     936    WebCore::setScreenProperties(properties);
     937    for (auto& page : m_pageMap.values())
     938        page->screenPropertiesDidChange();
     939    updatePageScreenProperties();
     940}
     941
     942void WebProcess::updatePageScreenProperties()
     943{
     944    if (hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer)) {
     945        setShouldOverrideScreenSupportsHighDynamicRange(false, false);
     946        return;
     947    }
     948
     949    bool allPagesAreOnHDRScreens = allOf(m_pageMap.values(), [] (auto& page) {
     950        return screenSupportsHighDynamicRange(page->mainFrameView());
     951    });
     952    setShouldOverrideScreenSupportsHighDynamicRange(true, allPagesAreOnHDRScreens);
     953}
     954#endif
     955
    932956} // namespace WebKit
    933957
Note: See TracChangeset for help on using the changeset viewer.