[webkit-changes] [WebKit/WebKit] 5e2c3f: Versioning.

Jonathan Bedard noreply at github.com
Mon Dec 19 09:29:44 PST 2022


  Branch: refs/heads/safari-7614.3.7.3-branch
  Home:   https://github.com/WebKit/WebKit
  Commit: 5e2c3fc42062159e810cb2759ed9926d058b4c86
      https://github.com/WebKit/WebKit/commit/5e2c3fc42062159e810cb2759ed9926d058b4c86
  Author: Alan Coon <alancoon at apple.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    M Source/JavaScriptCore/Configurations/Version.xcconfig
    M Source/ThirdParty/ANGLE/Configurations/Version.xcconfig
    M Source/ThirdParty/libwebrtc/Configurations/Version.xcconfig
    M Source/WebCore/Configurations/Version.xcconfig
    M Source/WebCore/PAL/Configurations/Version.xcconfig
    M Source/WebGPU/Configurations/Version.xcconfig
    M Source/WebInspectorUI/Configurations/Version.xcconfig
    M Source/WebKit/Configurations/Version.xcconfig
    M Source/WebKitLegacy/mac/Configurations/Version.xcconfig

  Log Message:
  -----------
  Versioning.

WebKit-7614.3.7.3.1

Canonical link: https://commits.webkit.org/252432.805@safari-7614.3.7.3-branch


  Commit: 336a52df9bf4afaf7a4e78b603984bc438dc7512
      https://github.com/WebKit/WebKit/commit/336a52df9bf4afaf7a4e78b603984bc438dc7512
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    M Source/WebCore/Modules/mediastream/RTCNetworkManager.h
    M Source/WebCore/dom/Document.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.h

  Log Message:
  -----------
  Cherry-pick f394e0a05ff1. rdar://problem/99799545

    Explicitly close a document RTCNetworkManager on document teardown
    https://bugs.webkit.org/show_bug.cgi?id=247413
    rdar://99799545

    Reviewed by Eric Carlson.

    The combination of keeping a WeakPtr of a ThreadSafeRefCounted is problematic,
    as we might have lost the last Ref/RefPtr (hence the object is scheduled to be deleted)
    but we still have a non null reference via a WeakPtr, which we could potentially create a new Ref on it.
    We fix the particular issue here by closing explicitly LibWebRTCNetworkManager
    which will remove the LibWebRTCNetworkManager from the WebRTCMonitor WeakHashSet.
    Add ASSERTs to ensure close is called before destroying LibWebRTCNetworkManager.

    * Source/WebCore/Modules/mediastream/RTCNetworkManager.h:
    * Source/WebCore/dom/Document.cpp:
    (WebCore::Document::commonTeardown):
    * Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.cpp:
    (WebKit::LibWebRTCNetworkManager::getOrCreate):
    (WebKit::LibWebRTCNetworkManager::LibWebRTCNetworkManager):
    (WebKit::LibWebRTCNetworkManager::~LibWebRTCNetworkManager):
    (WebKit::LibWebRTCNetworkManager::close):

    Canonical link: https://commits.webkit.org/256319@main

Canonical link: https://commits.webkit.org/252432.806@safari-7614.3.7.3-branch


  Commit: 6ab999a3d417cb5547039d37a747e607611d60a5
      https://github.com/WebKit/WebKit/commit/6ab999a3d417cb5547039d37a747e607611d60a5
  Author: Myles C. Maxfield <mmaxfield at apple.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    A LayoutTests/imported/w3c/web-platform-tests/encoding/resources/unsupported-labels.window.js
    A LayoutTests/imported/w3c/web-platform-tests/encoding/unsupported-labels-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/encoding/unsupported-labels.html
    A LayoutTests/platform/gtk/imported/w3c/web-platform-tests/encoding/unsupported-labels-expected.txt
    M Source/WebCore/PAL/pal/text/TextCodecICU.cpp

  Log Message:
  -----------
  Cherry-pick 996fc9db28be. rdar://problem/100893154

    The EUC-TW encoding doesn't have a canonical name
    https://bugs.webkit.org/show_bug.cgi?id=246242
    rdar://100893154

    Reviewed by Alex Christensen.

    ucnv_getCanonicalName("EUC-TW", "IANA") is returning nullptr, which is causing
    us to memcmp(nullptr, ...). This patch reorganizes the file to call ucnv_getName()
    in the situations where ucnv_getCanonicalName() is returning nullptr, thereby
    elliminating the need for all the special cases.

    Test: imported/w3c/web-platform-tests/encoding/unsupported-labels.html

    * Source/WebCore/PAL/pal/text/TextCodecICU.cpp:
    (PAL::TextCodecICU::registerCodecs):
    (PAL::TextCodecICU::TextCodecICU):

    Canonical link: https://commits.webkit.org/256438@main

Canonical link: https://commits.webkit.org/252432.807@safari-7614.3.7.3-branch


  Commit: 4736f9a98dfe27e6fb32bbd72968d2219fafdd34
      https://github.com/WebKit/WebKit/commit/4736f9a98dfe27e6fb32bbd72968d2219fafdd34
  Author: David Degazio <d_degazio at apple.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    A JSTests/stress/intl-locale-invalid-hourCycles.js
    M Source/JavaScriptCore/runtime/IntlLocale.cpp

  Log Message:
  -----------
  Cherry-pick 86fbeb6fcd63. rdar://problem/102031379

    Intl.Locale.prototype.hourCycles leaks empty JSValue to script
    https://bugs.webkit.org/show_bug.cgi?id=247562
    rdar://102031379

    Reviewed by Mark Lam.

    We currently don't check if IntlLocale::hourCycles returns a null JSArray, which allows it
    to be encoded as an empty JSValue and exposed to user code. This patch throws a TypeError
    when udatpg_open returns a failed status.

    * JSTests/stress/intl-locale-invalid-hourCycles.js: Added.
    (main):
    * Source/JavaScriptCore/runtime/IntlLocale.cpp:
    (JSC::IntlLocale::hourCycles):

    Canonical link: https://commits.webkit.org/256473@main

Canonical link: https://commits.webkit.org/252432.808@safari-7614.3.7.3-branch


  Commit: 4a545d562325fe7d635f543d9deb39a5fefb749e
      https://github.com/WebKit/WebKit/commit/4a545d562325fe7d635f543d9deb39a5fefb749e
  Author: Justin Michaud <justin_michaud at apple.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    A JSTests/stress/delete-cache-error.js
    A JSTests/stress/get-own-property-slot-cache-error.js
    A JSTests/stress/get-property-cache-error.js
    M Source/JavaScriptCore/runtime/ErrorInstance.cpp
    M Source/JavaScriptCore/runtime/ErrorInstance.h

  Log Message:
  -----------
  Cherry-pick 28686e63de0d. rdar://problem/101906709

    Error() ICs should not cache special properties.
    https://bugs.webkit.org/show_bug.cgi?id=247699

    Reviewed by Yusuke Suzuki.

    HasOwnProperty/DeleteProperty are not always cacheable for special Error()
    properties like column. These special properties are materialized on-demand
    in materializeErrorInfoIfNeeded, but this function's behaviour can be changed
    by Error.stackTraceLimit without causing a structure transition or firing watchpoints.

    That is, we cannot cache property misses, and we cannot assume HasOwnProperty is deterministic
    for a given structure if we are using one of these properties.

    * Source/JavaScriptCore/runtime/ErrorInstance.cpp:
    (JSC::ErrorInstance::deleteProperty):
    * Source/JavaScriptCore/runtime/ErrorInstance.h:

    Canonical link: https://commits.webkit.org/256519@main

Canonical link: https://commits.webkit.org/252432.809@safari-7614.3.7.3-branch


  Commit: 32c06a27ecc7c921cb47baebd2391d7993161fca
      https://github.com/WebKit/WebKit/commit/32c06a27ecc7c921cb47baebd2391d7993161fca
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    A LayoutTests/fast/mediastream/mediastreamtrack-configurationchange-expected.txt
    A LayoutTests/fast/mediastream/mediastreamtrack-configurationchange.html
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
    M Source/WebCore/Modules/mediastream/MediaStreamTrack.h
    M Source/WebCore/Modules/mediastream/MediaStreamTrack.idl
    M Source/WebCore/dom/EventNames.h
    M Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp
    M Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h
    M Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp
    M Source/WebCore/platform/mediastream/RealtimeMediaSource.h
    M Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h
    M Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm
    M Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.cpp
    M Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.h
    M Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp
    M Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h
    M Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.mm
    M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp
    M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h
    M Source/WebKit/GPUProcess/GPUProcess.cpp
    M Source/WebKit/GPUProcess/GPUProcess.h
    M Source/WebKit/GPUProcess/GPUProcess.messages.in
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/C/WKPagePrivate.h
    M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.h
    M Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp
    M Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h
    M Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.messages.in
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
    M Tools/WebKitTestRunner/TestController.cpp
    M Tools/WebKitTestRunner/TestController.h
    M Tools/WebKitTestRunner/TestInvocation.cpp

  Log Message:
  -----------
  Cherry-pick 78a2a0119f7b. rdar://problem/100335624

    [iOS] Fire configurationchange event in case of switching automatically to another microphone while capturing
    https://bugs.webkit.org/show_bug.cgi?id=244535
    rdar://problem/99331061

    Reviewed by Eric Carlson.

    On iOS, the user may change of audio device through control center, while capturing.
    In that case, the microphone automatically switches to the new device.
    To expose this to the WebPage, we can use configurationchange event.
    The flow is:
    - AVAudioSessionCaptureDeviceManager detects microphone change
    - CoreAudioSharedUnit notifies CoreAudioCaptureSource in GPUProcess.
    - UserMediaCaptureManagerProxy is notified by CoreAudioCaptureSource and notifies UserMediaCaptureManager through IPC.
    - UserMediaCaptureManager in WebProcess notifies its source which notifies its MediaStreamTrack(s).
    - At the same time, settings and capabilities are updated.

    We add a mock API to test this code path.

    Covered by LayoutTests/fast/mediastream/mediastreamtrack-configurationchange.html.

    * LayoutTests/fast/mediastream/mediastreamtrack-configurationchange-expected.txt: Added.
    * LayoutTests/fast/mediastream/mediastreamtrack-configurationchange.html: Added.
    * Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:
    (WebCore::MediaStreamTrack::trackConfigurationChanged):
    * Source/WebCore/Modules/mediastream/MediaStreamTrack.h:
    * Source/WebCore/Modules/mediastream/MediaStreamTrack.idl:
    * Source/WebCore/dom/EventNames.h:
    * Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:
    (WebCore::MediaStreamTrackPrivate::sourceConfigurationChanged):
    * Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:
    * Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:
    (WebCore::RealtimeMediaSource::RealtimeMediaSource):
    (WebCore::RealtimeMediaSource::setPersistentId):
    (WebCore::RealtimeMediaSource::initializePersistentId):
    * Source/WebCore/platform/mediastream/RealtimeMediaSource.h:
    * Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
    * Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:
    (WebCore::AVAudioSessionCaptureDeviceManager::retrieveAudioSessionCaptureDevices const):
    * Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.cpp:
    (WebCore::BaseAudioSharedUnit::handleNewCurrentMicrophoneDevice):
    * Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.h:
    * Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:
    (WebCore::CoreAudioCaptureSource::handleNewCurrentMicrophoneDevice):
    * Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h:
    * Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.mm:
    (WebCore::RealtimeMediaSourceCenter::shouldInterruptAudioOnPageVisibilityChange):
    * Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:
    (WebCore::MockRealtimeMediaSourceCenter::triggerMockMicrophoneConfigurationChange):
    * Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h:
    * Source/WebKit/GPUProcess/GPUProcess.cpp:
    (WebKit::GPUProcess::triggerMockMicrophoneConfigurationChange):
    * Source/WebKit/GPUProcess/GPUProcess.h:
    * Source/WebKit/GPUProcess/GPUProcess.messages.in:
    * Source/WebKit/UIProcess/API/C/WKPage.cpp:
    (WKPageTriggerMockMicrophoneConfigurationChange):
    * Source/WebKit/UIProcess/API/C/WKPagePrivate.h:
    * Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
    * Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
    (WebKit::GPUProcessProxy::triggerMockMicrophoneConfigurationChange):
    * Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:
    (WebKit::RemoteRealtimeMediaSource::configurationChanged):
    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.h:
    * Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:
    (WebKit::UserMediaCaptureManager::sourceConfigurationChanged):
    * Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h:
    * Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.messages.in:
    * Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
    * Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
    (WTR::TestRunner::triggerMockMicrophoneConfigurationChange):
    * Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
    * Tools/WebKitTestRunner/TestController.cpp:
    (WTR::TestController::triggerMockMicrophoneConfigurationChange):
    * Tools/WebKitTestRunner/TestController.h:
    * Tools/WebKitTestRunner/TestInvocation.cpp:
    (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

    Canonical link: https://commits.webkit.org/254035@main

Canonical link: https://commits.webkit.org/252432.810@safari-7614.3.7.3-branch


  Commit: 7740674c0a718397b3e1d8a2ee68b83be153d3b0
      https://github.com/WebKit/WebKit/commit/7740674c0a718397b3e1d8a2ee68b83be153d3b0
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp
    M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h
    M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm
    M Tools/TestWebKitAPI/Tests/WebKit/getUserMedia.html

  Log Message:
  -----------
  Cherry-pick 3142453d3762. rdar://problem/100335624

    enumerateDevices may return filtered devices even if page is capturing
    https://bugs.webkit.org/show_bug.cgi?id=244713
    rdar://problem/99484964

    Reviewed by Eric Carlson.

    Stop using m_grantedRequests for enumerateDevices since it might be reset to ask for prompting again.
    Instead, manage a HashSet<FrameID> to store whether a particular document can get access to the whole information.
    We still reset this hash set in case we are ordered to stop capture.

    * Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
    (WebKit::UserMediaPermissionRequestManagerProxy::grantRequest):
    (WebKit::UserMediaPermissionRequestManagerProxy::resetAccess):
    (WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest const):
    (WebKit::UserMediaPermissionRequestManagerProxy::updateStoredRequests):
    (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
    (WebKit::UserMediaPermissionRequestManagerProxy::shouldChangeDeniedToPromptForCamera const):
    (WebKit::UserMediaPermissionRequestManagerProxy::shouldChangeDeniedToPromptForMicrophone const):
    (WebKit::UserMediaPermissionRequestManagerProxy::wasGrantedVideoOrAudioAccess):
    (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
    (WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged):
    (WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired):
    * Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h:
    * Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:
    * Tools/TestWebKitAPI/Tests/WebKit/getUserMedia.html:

    Canonical link: https://commits.webkit.org/254165@main

Canonical link: https://commits.webkit.org/252432.811@safari-7614.3.7.3-branch


  Commit: 52fc5d336f56508e14bfdd3481eae79db77893b4
      https://github.com/WebKit/WebKit/commit/52fc5d336f56508e14bfdd3481eae79db77893b4
  Author: Philippe Normand <philn at igalia.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    M Source/WebCore/platform/mediastream/RealtimeMediaSource.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.h

  Log Message:
  -----------
  Cherry-pick e6b4012424bf. rdar://problem/100335624

    [GStreamer][WebRTC] Events forwarding between end-point and its consumers
    https://bugs.webkit.org/show_bug.cgi?id=247126

    Reviewed by Xabier Rodriguez-Calvar.

    We need to relay upstream events coming from depayloaders to webrtcbin and we also need to relay
    downstream events from webrtcbin to the incoming media sources. This should help improving RTP
    retransmission, for instance.

    RealtimeIncomingSourceGStreamer now directly inherits from RealtimeMediaSource in order to avoid
    duplication of the downstream event handling in each sub-class.

    * Source/WebCore/platform/mediastream/RealtimeMediaSource.h:
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.cpp:
    (WebCore::RealtimeIncomingAudioSourceGStreamer::RealtimeIncomingAudioSourceGStreamer):
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.h:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.cpp:
    (WebCore::RealtimeIncomingSourceGStreamer::RealtimeIncomingSourceGStreamer):
    (WebCore::RealtimeIncomingSourceGStreamer::registerClient):
    (WebCore::RealtimeIncomingSourceGStreamer::handleUpstreamEvent):
    (WebCore::RealtimeIncomingSourceGStreamer::handleDownstreamEvent):
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.h:

    Canonical link: https://commits.webkit.org/256149@main

Canonical link: https://commits.webkit.org/252432.812@safari-7614.3.7.3-branch


  Commit: f3396356f7db1ede55a73d688a81d8efcab3637d
      https://github.com/WebKit/WebKit/commit/f3396356f7db1ede55a73d688a81d8efcab3637d
  Author: Eric Carlson <eric.carlson at apple.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    A LayoutTests/http/tests/media/media-stream/enumerate-devices-ephemeral-id-expected.txt
    A LayoutTests/http/tests/media/media-stream/enumerate-devices-ephemeral-id.html
    A LayoutTests/http/tests/media/media-stream/resources/enumerate-devices-ephemeral-id-iframe.html
    M Source/WTF/wtf/PlatformHave.h
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp
    A Source/WebCore/Modules/mediastream/MediaDeviceHashSalts.h
    M Source/WebCore/Modules/mediastream/MediaDevices.cpp
    M Source/WebCore/Modules/mediastream/MediaDevices.h
    M Source/WebCore/Modules/mediastream/UserMediaClient.h
    M Source/WebCore/Modules/mediastream/UserMediaController.cpp
    M Source/WebCore/Modules/mediastream/UserMediaController.h
    M Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
    M Source/WebCore/Modules/mediastream/UserMediaRequest.h
    M Source/WebCore/Modules/speech/SpeechRecognitionCaptureSource.cpp
    M Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/platform/mediastream/CaptureDevice.h
    M Source/WebCore/platform/mediastream/RealtimeIncomingAudioSource.cpp
    M Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp
    M Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp
    M Source/WebCore/platform/mediastream/RealtimeMediaSource.h
    M Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp
    M Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h
    M Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.h
    M Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.cpp
    M Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.h
    M Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp
    M Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp
    M Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.h
    M Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm
    M Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm
    M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h
    M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm
    M Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp
    M Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h
    M Source/WebCore/platform/mediastream/mac/MockAudioSharedUnit.mm
    M Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.h
    M Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm
    M Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp
    M Source/WebCore/platform/mock/MockMediaDevice.h
    M Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp
    M Source/WebCore/platform/mock/MockRealtimeAudioSource.h
    M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp
    M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h
    M Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp
    M Source/WebCore/platform/mock/MockRealtimeVideoSource.h
    M Source/WebKit/GPUProcess/GPUProcess.cpp
    M Source/WebKit/GPUProcess/GPUProcess.h
    M Source/WebKit/GPUProcess/GPUProcess.messages.in
    M Source/WebKit/UIProcess/API/C/WKMockMediaDevice.cpp
    M Source/WebKit/UIProcess/API/C/WKMockMediaDevice.h
    M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp
    M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h
    M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
    M Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp
    M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp
    M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h
    M Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/UIProcess/glib/UserMediaPermissionRequestManagerProxyGLib.cpp
    M Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp
    M Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h
    M Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
    M Source/WebKit/WebProcess/WebProcess.cpp
    M Source/WebKit/WebProcess/WebProcess.h
    M Source/WebKit/WebProcess/WebProcess.messages.in
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeAudioSource.cpp
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeAudioSource.h
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.h
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeVideoSource.cpp
    M Source/WebKit/WebProcess/cocoa/RemoteRealtimeVideoSource.h
    M Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp
    M Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h
    M Source/WebKit/WebProcess/glib/UserMediaCaptureManager.cpp
    M Source/WebKit/WebProcess/glib/UserMediaCaptureManager.h
    M Source/WebKit/WebProcess/glib/UserMediaCaptureManager.messages.in
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
    M Tools/WebKitTestRunner/TestController.cpp
    M Tools/WebKitTestRunner/TestController.h
    M Tools/WebKitTestRunner/TestInvocation.cpp

  Log Message:
  -----------
  Cherry-pick 0ee91ab89adb. rdar://problem/100335624

    Use an ephemeral device ID for the Continuity camera when it is not the system preferred
    https://bugs.webkit.org/show_bug.cgi?id=247208
    rdar://100335624

    Reviewed by Jer Noble.

    A "Continuity Camera", an iPhone used as a camera for a Macintosh, is listed as an
    AVCaptureDevice whenever it is in close enough to the Macintosh to be used, but it is only
    the "system preferred camera" when it is in an appropriate position and orientation to be
    used as a camera for the device. This means that a script may remember the device ID when
    a user has set up the phone to be used as a camera, and then pass it to getUserMedia later
    when the phone is near the Macintosh but not usable as a camera - e.g. in the user's pocket.

    To prevent this problem, use a device ID that is only valid for the lifetime of the
    current frame when a Continuity Camera is available but is not the system preferred camera.

    * LayoutTests/http/tests/media/media-stream/enumerate-devices-ephemeral-id-expected.txt: Added.
    * LayoutTests/http/tests/media/media-stream/enumerate-devices-ephemeral-id.html: Added.
    * LayoutTests/http/tests/media/media-stream/resources/enumerate-devices-ephemeral-id-iframe.html: Added.

    * Source/WTF/wtf/PlatformHave.h: Define HAVE_CONTINUITY_CAMEARA

    * Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
    (WebCore::CanvasCaptureMediaStreamTrack::Source::Source): Update for RealtimeMediaSource constructor
    changes.
    * Source/WebCore/Modules/mediastream/MediaDevices.cpp:
    (WebCore::MediaDevices::exposeDevices): Take a MediaDeviceHashSalts instead of a String
    because there are now two hash salts.
    (WebCore::MediaDevices::enumerateDevices): Ditto.
    * Source/WebCore/Modules/mediastream/MediaDevices.h:

    * Source/WebCore/Modules/mediastream/UserMediaClient.h: Ditto.
    * Source/WebCore/Modules/mediastream/UserMediaController.cpp:
    * Source/WebCore/Modules/mediastream/UserMediaController.h:
    (WebCore::UserMediaController::enumerateMediaDevices): Ditto.

    * Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:
    (WebCore::UserMediaRequest::allow): Ditto.
    * Source/WebCore/Modules/mediastream/UserMediaRequest.h:

    * Source/WebCore/Modules/speech/SpeechRecognitionCaptureSource.cpp:
    (WebCore::SpeechRecognitionCaptureSource::createRealtimeMediaSource): Update for
    RealtimeMediaSource constructor changes.

    * Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp:
    (WebCore::MediaStreamAudioSource::MediaStreamAudioSource): Ditto.

    * Source/WebCore/WebCore.xcodeproj/project.pbxproj:

    * Source/WebCore/platform/mediastream/CaptureDevice.h:
    (WebCore::CaptureDevice::CaptureDevice): Add `isEphemeral` parameter.
    (WebCore::CaptureDevice::setPersistentId):
    (WebCore::CaptureDevice::setLabel):
    (WebCore::CaptureDevice::isEphemeral const):
    (WebCore::CaptureDevice::setIsEphemeral):
    (WebCore::CaptureDevice::encode const):
    (WebCore::CaptureDevice::decode):
    (WebCore::CaptureDevice::isolatedCopy):

    * Source/WebCore/platform/mediastream/RealtimeIncomingAudioSource.cpp:
    (WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource): Update for
    RealtimeMediaSource constructor changes.

    * Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp:
    (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource): Ditto.

    * Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:
    (WebCore::toSourceType):
    (WebCore::RealtimeMediaSource::RealtimeMediaSource): Take a CaptureDevice instead of a
    type, name, and device ID. Take a MediaDeviceHashSalts instead of a String for the salts.
    (WebCore::RealtimeMediaSource::setPersistentId):
    (WebCore::RealtimeMediaSource::initializePersistentId): Calculate persistent and ephemeral
    hashed IDs.
    (WebCore::RealtimeMediaSource::fitnessDistance): m_hashedID -> hashedID()
    (WebCore::RealtimeMediaSource::hashedId const): Consider ephemeral state.
    (WebCore::RealtimeMediaSource::deviceIDHashSalts const):
    (WebCore::RealtimeMediaSource::setLogger):
    (WebCore::RealtimeMediaSource::deviceIDHashSalt const): Deleted.
    * Source/WebCore/platform/mediastream/RealtimeMediaSource.h:

    * Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:
    (WebCore::RealtimeMediaSourceCenter::createMediaStream): Take MediaDeviceHashSalts with the
    hash salts.
    (WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices): Ditto.
    (WebCore::RealtimeMediaSourceCenter::getUserMediaDevices): Ditto.
    (WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Ditto.
    (WebCore::RealtimeMediaSourceCenter::validateRequestConstraintsAfterEnumeration): Ditto.
    * Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h:

    * Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.h: Ditto.
    * Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h: Ditto.

    * Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.cpp:
    (WebCore::RealtimeVideoCaptureSource::RealtimeVideoCaptureSource): Update for RealtimeMediaSource
    constructor changes.
    * Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.h:

    * Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:
    (WebCore::RealtimeVideoSource::RealtimeVideoSource): Ditto.

    * Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:
    (WebCore::DisplayCaptureSourceCocoa::create): Ditto.
    (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Ditto.
    * Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:

    * Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.h:
    * Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
    (WebCore::CoreAudioCaptureSourceFactoryIOS::createAudioCaptureSource): Ditto.

    * Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:
    (WebCore::AVCaptureDeviceManager::updateCachedAVCaptureDevices):
    (WebCore::toCaptureDevice): Make Continuity Camera ephemeral when it is not the system
    preferred camera.
    (WebCore::AVCaptureDeviceManager::retrieveCaptureDevices):

    * Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h:
    * Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:
    (WebCore::AVVideoCaptureSource::create): Update for RealtimeMediaSource constructor changes.
    (WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Ditto.

    * Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:
    (WebCore::CoreAudioCaptureSource::create): Ditto.
    (WebCore::CoreAudioCaptureSource::createForTesting): Ditto.
    (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): Ditto.
    * Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h:
    (WebCore::CoreAudioCaptureSourceFactory::createAudioCaptureSource):

    * Source/WebCore/platform/mediastream/mac/MockAudioSharedUnit.mm:
    (WebCore::MockRealtimeAudioSource::create): Ditto.

    * Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
    * Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
    (WebCore::MockRealtimeVideoSource::create): Ditto.
    (WebCore::MockRealtimeVideoSourceMac::createForMockDisplayCapturer): Ditto.
    (WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): Ditto.

    * Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
    * Source/WebCore/platform/mock/MockMediaDevice.h:
    (WebCore::MockMediaDevice::captureDevice const): Allow to be ephemeral .
    (WebCore::MockMediaDevice::encode const):
    (WebCore::MockMediaDevice::decodeMockMediaDevice):
    (WebCore::MockMediaDevice::decode):

    * Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:
    (WebCore::MockRealtimeAudioSource::create): Update for RealtimeMediaSource constructor changes.
    (WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): Ditto.
    * Source/WebCore/platform/mock/MockRealtimeAudioSource.h:

    * Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:
    (WebCore::defaultDevices): No devices are ephemeral by default.
    (WebCore::MockDisplayCapturer::MockDisplayCapturer): Update for RealtimeMediaSource constructor
    changes.
    (WebCore::MockRealtimeMediaSourceCenter::setDeviceIsEphemeral):
    * Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h:

    * Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:
    (WebCore::MockRealtimeVideoSource::create): Ditto.
    (WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Ditto.
    * Source/WebCore/platform/mock/MockRealtimeVideoSource.h:

    * Source/WebKit/GPUProcess/GPUProcess.cpp:
    (WebKit::GPUProcess::setMockMediaDeviceIsEphemeral): Added for testing.
    * Source/WebKit/GPUProcess/GPUProcess.h:
    * Source/WebKit/GPUProcess/GPUProcess.messages.in:
    * Source/WebKit/UIProcess/API/C/WKMockMediaDevice.cpp:
    (WKAddMockMediaDevice):
    (WKSetMockMediaDeviceIsEphemeral):
    * Source/WebKit/UIProcess/API/C/WKMockMediaDevice.h:

    * Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
    (WebKit::UserMediaCaptureManagerProxy::createMicrophoneSource):
    (WebKit::UserMediaCaptureManagerProxy::createCameraSource):
    (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
    * Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
    * Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
    * Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
    (WebKit::GPUProcessProxy::setMockMediaDeviceIsEphemeral):
    * Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
    * Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:
    (WebKit::SpeechRecognitionRemoteRealtimeMediaSource::SpeechRecognitionRemoteRealtimeMediaSource):
    (): Deleted.
    * Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
    (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest): Take MediaDeviceHashSalts
    for hash salts.
    (WebKit::UserMediaPermissionRequestManagerProxy::didCommitLoadForFrame): Clear ephemeral
    salt for a frame.
    (WebKit::UserMediaPermissionRequestManagerProxy::resetAccess): Ditto.
    (WebKit::UserMediaPermissionRequestManagerProxy::ephemeralDeviceHashSaltForFrame): Calculate
    or lookup an ephemeral salt for a frame.
    (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest): Use
    MediaDeviceHashSalts.
    (WebKit::UserMediaPermissionRequestManagerProxy::platformValidateUserMediaRequestConstraints): Ditto.
    (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest): Ditto.
    (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.
    * Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h:

    * Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.h:
    (WebKit::UserMediaPermissionRequestProxy::setDeviceIdentifierHashSalts): *HashSalt -> *HashSalts
    (WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalts const): Ditto
    (WebKit::UserMediaPermissionRequestProxy::setDeviceIdentifierHashSalt): Deleted.
    (WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalt const): Deleted.

    * Source/WebKit/UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didCommitLoadForFrame): Let UserMediaPermissionRequestManager know the
    frame has reloaded so it can clear the ephemeral salt ID.
    (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
    * Source/WebKit/UIProcess/WebPageProxy.h:
    * Source/WebKit/UIProcess/WebPageProxy.messages.in:

    * Source/WebKit/UIProcess/WebProcessPool.cpp:
    (WebKit::WebProcessPool::setMockMediaDeviceIsEphemeral):
    * Source/WebKit/UIProcess/WebProcessPool.h:

    * Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
    (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):
    (WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices):
    * Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

    * Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
    (WebKit::WebUserMediaClient::enumerateMediaDevices):
    * Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.h:

    * Source/WebKit/WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::userMediaAccessWasGranted):
    * Source/WebKit/WebProcess/WebPage/WebPage.h:
    * Source/WebKit/WebProcess/WebPage/WebPage.messages.in:

    * Source/WebKit/WebProcess/WebProcess.cpp:
    (WebKit::WebProcess::setMockMediaDeviceIsEphemeral):
    * Source/WebKit/WebProcess/WebProcess.h:
    * Source/WebKit/WebProcess/WebProcess.messages.in:

    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeAudioSource.cpp:
    (WebKit::RemoteRealtimeAudioSource::create): Update for RealtimeMediaSource constructor change.
    (WebKit::RemoteRealtimeAudioSource::RemoteRealtimeAudioSource): Ditto.
    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeAudioSource.h:

    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:
    (WebKit::RemoteRealtimeMediaSource::RemoteRealtimeMediaSource): Ditto.
    (WebKit::RemoteRealtimeMediaSource::createRemoteMediaSource): Ditto.
    (WebKit::toSourceType): Deleted.
    (WebKit::m_manager): Deleted.
    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.h:

    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
    (WebKit::RemoteRealtimeMediaSourceProxy::createRemoteMediaSource): Ditto.
    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:

    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:
    (WebKit::RemoteRealtimeVideoSource::create): Ditto.
    (WebKit::RemoteRealtimeVideoSource::RemoteRealtimeVideoSource): Ditto.
    (WebKit::RemoteRealtimeVideoSource::clone): Ditto.
    * Source/WebKit/WebProcess/cocoa/RemoteRealtimeVideoSource.h:

    * Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:
    (WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource): Ditto.
    (WebKit::UserMediaCaptureManager::VideoFactory::createVideoCaptureSource): Ditto.
    (WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource): Ditto.
    * Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h:

    * Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: Add setMockMediaDeviceIsEphemeral.
    * Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
    (WTR::TestRunner::setMockMediaDeviceIsEphemeral):
    * Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:

    * Tools/WebKitTestRunner/TestController.cpp:
    (WTR::TestController::setMockMediaDeviceIsEphemeral):
    * Tools/WebKitTestRunner/TestController.h:

    * Tools/WebKitTestRunner/TestInvocation.cpp:
    (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

    Canonical link: https://commits.webkit.org/256161@main

Canonical link: https://commits.webkit.org/252432.813@safari-7614.3.7.3-branch


  Commit: ef0fd890e34b769f727b355206271653ca070445
      https://github.com/WebKit/WebKit/commit/ef0fd890e34b769f727b355206271653ca070445
  Author: Eric Carlson <eric.carlson at apple.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    M Source/WebKit/UIProcess/WebPageProxy.cpp

  Log Message:
  -----------
  Cherry-pick ff70798d7add. rdar://problem/100335624

    REGRESSION (256161 at main): [ macOS Debug ] TestWebKitAPI.GPUProcess.OnlyLaunchesGPUProcessWhenNecessaryMediaFeatureDetection is a consistent failure
    https://bugs.webkit.org/show_bug.cgi?id=247775
    rdar://102221029

    Reviewed by Darin Adler and John Wilander.

    * Source/WebKit/UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didCommitLoadForFrame): Use `m_userMediaPermissionRequestManager`
    instead of `userMediaPermissionRequestManager()`` so we don't create the manager, and thus
    the GPU process, if it doesn't already exist.

    Canonical link: https://commits.webkit.org/256591@main

Canonical link: https://commits.webkit.org/252432.814@safari-7614.3.7.3-branch


  Commit: 9bce162d726b09884dee1a1a9c60ed2229b3c741
      https://github.com/WebKit/WebKit/commit/9bce162d726b09884dee1a1a9c60ed2229b3c741
  Author: Alan Coon <alancoon at apple.com>
  Date:   2022-11-12 (Sat, 12 Nov 2022)

  Changed paths:
    M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

  Log Message:
  -----------
  Cherry-pick 082f404b4d5a. rdar://problem/100335624

    Apply build fix. rdar://problem/100335624

    Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:316:39: error: no member named 'object' in 'WTF::ObjectIdentifier<WebCore::FrameIdentifierType>'

    Canonical link: https://commits.webkit.org/252432.818@safari-7614.3.7.0-branch

Canonical link: https://commits.webkit.org/252432.815@safari-7614.3.7.3-branch


  Commit: 37d428e8e750b82be96e2c9614e3fd7564eefbd4
      https://github.com/WebKit/WebKit/commit/37d428e8e750b82be96e2c9614e3fd7564eefbd4
  Author: Alan Coon <alancoon at apple.com>
  Date:   2022-11-14 (Mon, 14 Nov 2022)

  Changed paths:
    M Source/JavaScriptCore/Configurations/Version.xcconfig
    M Source/ThirdParty/ANGLE/Configurations/Version.xcconfig
    M Source/ThirdParty/libwebrtc/Configurations/Version.xcconfig
    M Source/WebCore/Configurations/Version.xcconfig
    M Source/WebCore/PAL/Configurations/Version.xcconfig
    M Source/WebGPU/Configurations/Version.xcconfig
    M Source/WebInspectorUI/Configurations/Version.xcconfig
    M Source/WebKit/Configurations/Version.xcconfig
    M Source/WebKitLegacy/mac/Configurations/Version.xcconfig

  Log Message:
  -----------
  Versioning.

WebKit-7614.3.7.3.2

Canonical link: https://commits.webkit.org/252432.816@safari-7614.3.7.3-branch


  Commit: 2dc85478ce82504cf5f97c9ac37babbce9cf7494
      https://github.com/WebKit/WebKit/commit/2dc85478ce82504cf5f97c9ac37babbce9cf7494
  Author: Alan Coon <alancoon at apple.com>
  Date:   2022-11-14 (Mon, 14 Nov 2022)

  Changed paths:
    M LayoutTests/platform/wk2/webarchive/loading/test-loading-archive-subresource-null-mimetype-expected.txt
    M LayoutTests/webarchive/loading/test-loading-archive-subresource-null-mimetype-expected.txt
    M Source/WTF/Scripts/Preferences/WebPreferences.yaml
    M Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebCore/loader/DocumentLoader.h
    M Source/WebCore/loader/ResourceLoader.cpp
    M Source/WebCore/loader/archive/ArchiveResourceCollection.cpp
    M Source/WebCore/loader/archive/ArchiveResourceCollection.h
    M Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
    M Source/WebCore/loader/archive/cf/LegacyWebArchive.h
    M Source/WebCore/page/SecurityOrigin.cpp
    M Source/WebKit/UIProcess/API/C/WKPreferences.cpp
    M Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h
    M Source/WebKitLegacy/mac/WebView/WebView.mm
    M Tools/TestWebKitAPI/Tests/mac/LoadWebArchive.mm

  Log Message:
  -----------
  Revert 1eb47513afb8. rdar://problem/88406961

This reverts commit cd668439f112861d26613c1adca9629fd89c1c35.

Canonical link: https://commits.webkit.org/252432.817@safari-7614.3.7.3-branch


  Commit: 89076359167b4ffb96a6ae0acd7a2f1ed56c2e16
      https://github.com/WebKit/WebKit/commit/89076359167b4ffb96a6ae0acd7a2f1ed56c2e16
  Author: Russell Epstein <repstein at apple.com>
  Date:   2022-11-27 (Sun, 27 Nov 2022)

  Changed paths:
    M Source/JavaScriptCore/Configurations/Version.xcconfig
    M Source/ThirdParty/ANGLE/Configurations/Version.xcconfig
    M Source/ThirdParty/libwebrtc/Configurations/Version.xcconfig
    M Source/WebCore/Configurations/Version.xcconfig
    M Source/WebCore/PAL/Configurations/Version.xcconfig
    M Source/WebGPU/Configurations/Version.xcconfig
    M Source/WebInspectorUI/Configurations/Version.xcconfig
    M Source/WebKit/Configurations/Version.xcconfig
    M Source/WebKitLegacy/mac/Configurations/Version.xcconfig

  Log Message:
  -----------
  Versioning.

WebKit-7614.3.7.3.3

Canonical link: https://commits.webkit.org/252432.818@safari-7614.3.7.3-branch


  Commit: 4b3a15556f0a737d5ca476445c7ce6490ec4e237
      https://github.com/WebKit/WebKit/commit/4b3a15556f0a737d5ca476445c7ce6490ec4e237
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2022-11-27 (Sun, 27 Nov 2022)

  Changed paths:
    A JSTests/stress/speculate-real-number-in-object-is.js
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

  Log Message:
  -----------
  Cherry-pick 71cdc1c09ef1. rdar://problem/102700508

    The provenType filtering in FTL's speculateRealNumber is incorrect.
    https://bugs.webkit.org/show_bug.cgi?id=248266
    <rdar://problem/102531234>

    Reviewed by Justin Michaud.

    speculateRealNumber does a doubleEqual compare, which filters out double values which
    are not NaN.  NaN values will fall through to the `intCase` block.  In the `intCase` block,
    the isNotInt32() check there was given a proven type that wrongly filters out ~SpecFullDouble.

    Consider a scenario where the edge was proven to be { SpecInt32Only, SpecDoubleReal,
    SpecDoublePureNaN }.  SpecFullDouble is defined as SpecDoubleReal | SpecDoubleNaN, and
    SpecDoubleNaN is defined as SpecDoublePureNaN | SpecDoubleImpureNaN.  Hence, the filtering
    of the proven type with ~SpecFullDouble means that isNotInt32() will effectively be given
    a proven type of

        { SpecInt32Only, SpecDoubleReal, SpecDoublePureNaN } - { SpecDoubleReal, SpecDoublePureNaN }

    which yields

        { SpecInt32Only }.

    As a result, the compiler will think that that isNotIn32() check will always fail.  This
    is not correct if the actual incoming value for that edge is actually a PureNaN.  In this
    case, speculateRealNumber should have OSR exited, but it doesn't because it thinks that
    the isNotInt32() check will always fail and elide the check altogether.

    In this patch, we fix this by replacing the ~SpecFullDouble with ~SpecDoubleReal.  We also
    rename the `intCase` block to `intOrNaNCase` to document what it actually handles.

    * JSTests/stress/speculate-real-number-in-object-is.js: Added.
    (test.object_is_opt):
    (test):
    * Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
    (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

    Canonical link: https://commits.webkit.org/252432.839@safari-7614-branch

Canonical link: https://commits.webkit.org/252432.819@safari-7614.3.7.3-branch


Compare: https://github.com/WebKit/WebKit/compare/5e2c3fc42062%5E...4b3a15556f0a


More information about the webkit-changes mailing list