Diff
Modified: trunk/Source/WTF/ChangeLog (272610 => 272611)
--- trunk/Source/WTF/ChangeLog 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WTF/ChangeLog 2021-02-09 22:05:39 UTC (rev 272611)
@@ -1,3 +1,13 @@
+2021-02-09 Eric Carlson <[email protected]>
+
+ [macOS] Add internal preference to control how AVOutputContext is allocated
+ https://bugs.webkit.org/show_bug.cgi?id=221583
+ <rdar://73830632>
+
+ Reviewed by Jer Noble.
+
+ * Scripts/Preferences/WebPreferencesInternal.yaml:
+
2021-02-06 Alex Christensen <[email protected]>
Non-special URLs should have an opaque origin
Modified: trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml (272610 => 272611)
--- trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml 2021-02-09 22:05:39 UTC (rev 272611)
@@ -775,6 +775,17 @@
WebKit:
default: defaultUseGPUProcessForWebGLEnabled()
+# FIXME: Remove once <rdar://73830961> has been fixed
+UseiTunesAVOutputContext:
+ type: bool
+ humanReadableName: "Use iTunes AVOutputContext"
+ humanReadableDescription: "Use iTunes AVOutputContext"
+ webcoreBinding: none
+ condition: ENABLE(WIRELESS_PLAYBACK_TARGET)
+ defaultValue:
+ WebKit:
+ default: true
+
WebAPIStatisticsEnabled:
type: bool
humanReadableName: "Web API Statistics"
Modified: trunk/Source/WebCore/ChangeLog (272610 => 272611)
--- trunk/Source/WebCore/ChangeLog 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/ChangeLog 2021-02-09 22:05:39 UTC (rev 272611)
@@ -1,3 +1,37 @@
+2021-02-09 Eric Carlson <[email protected]>
+
+ [macOS] Add internal preference to control how AVOutputContext is allocated
+ https://bugs.webkit.org/show_bug.cgi?id=221583
+ <rdar://73830632>
+
+ Reviewed by Jer Noble.
+
+ No new tests, this can only be tested manually.
+
+ * Modules/airplay/WebMediaSessionManager.cpp:
+ (WebCore::WebMediaSessionManager::showPlaybackTargetPicker):
+ * Modules/airplay/WebMediaSessionManagerClient.h:
+ (WebCore::WebMediaSessionManagerClient::alwaysOnLoggingAllowed const):
+ (WebCore::WebMediaSessionManagerClient::useiTunesAVOutputContext const):
+ (WebCore::WebMediaSessionManagerClient::alwaysOnLoggingAllowed): Deleted.
+ * platform/graphics/MediaPlaybackTargetPicker.cpp:
+ (WebCore::MediaPlaybackTargetPicker::showPlaybackTargetPicker):
+ * platform/graphics/MediaPlaybackTargetPicker.h:
+ * platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.h:
+ * platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.mm:
+ (WebCore::AVOutputDeviceMenuControllerTargetPicker::showPlaybackTargetPicker):
+ * platform/graphics/avfoundation/objc/AVPlaybackTargetPicker.h:
+ * platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.h:
+ * platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm:
+ (WebCore::AVRoutePickerViewTargetPicker::outputContextInternal):
+ (WebCore::AVRoutePickerViewTargetPicker::showPlaybackTargetPicker):
+ * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
+ * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
+ (WebCore::MediaPlaybackTargetPickerMac::showPlaybackTargetPicker):
+ * platform/mock/MediaPlaybackTargetPickerMock.cpp:
+ (WebCore::MediaPlaybackTargetPickerMock::showPlaybackTargetPicker):
+ * platform/mock/MediaPlaybackTargetPickerMock.h:
+
2021-02-09 Martin Robinson <[email protected]>
Implement scroll-snap-stop for scroll snapping
Modified: trunk/Source/WebCore/Modules/airplay/WebMediaSessionManager.cpp (272610 => 272611)
--- trunk/Source/WebCore/Modules/airplay/WebMediaSessionManager.cpp 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/Modules/airplay/WebMediaSessionManager.cpp 2021-02-09 22:05:39 UTC (rev 272611)
@@ -256,7 +256,7 @@
ALWAYS_LOG_MEDIASESSIONMANAGER(__func__, m_clientState[index].get());
bool hasActiveRoute = flagsAreSet(m_clientState[index]->flags, MediaProducer::IsPlayingToExternalDevice);
- targetPicker().showPlaybackTargetPicker(client.platformView(), FloatRect(rect), hasActiveRoute, useDarkAppearance);
+ targetPicker().showPlaybackTargetPicker(client.platformView(), FloatRect(rect), hasActiveRoute, useDarkAppearance, client.useiTunesAVOutputContext());
}
void WebMediaSessionManager::clientStateDidChange(WebMediaSessionManagerClient& client, PlaybackTargetClientContextIdentifier contextId, MediaProducer::MediaStateFlags newFlags)
Modified: trunk/Source/WebCore/Modules/airplay/WebMediaSessionManagerClient.h (272610 => 272611)
--- trunk/Source/WebCore/Modules/airplay/WebMediaSessionManagerClient.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/Modules/airplay/WebMediaSessionManagerClient.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -43,7 +43,8 @@
virtual void externalOutputDeviceAvailableDidChange(PlaybackTargetClientContextIdentifier, bool) = 0;
virtual void setShouldPlayToPlaybackTarget(PlaybackTargetClientContextIdentifier, bool) = 0;
virtual void playbackTargetPickerWasDismissed(PlaybackTargetClientContextIdentifier) = 0;
- virtual bool alwaysOnLoggingAllowed() { return false; }
+ virtual bool alwaysOnLoggingAllowed() const { return false; }
+ virtual bool useiTunesAVOutputContext() const { return true; }
virtual PlatformView* platformView() const = 0;
};
Modified: trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.cpp (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.cpp 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.cpp 2021-02-09 22:05:39 UTC (rev 272611)
@@ -73,7 +73,7 @@
m_pendingActionTimer.startOneShot(pendingActionInterval);
}
-void MediaPlaybackTargetPicker::showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool, bool)
+void MediaPlaybackTargetPicker::showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool, bool, bool)
{
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -53,7 +53,7 @@
virtual ~MediaPlaybackTargetPicker();
- virtual void showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance);
+ virtual void showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance, bool useiTunesAVOutputContext);
virtual void startingMonitoringPlaybackTargets();
virtual void stopMonitoringPlaybackTargets();
virtual void invalidatePlaybackTargets();
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.h (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -45,7 +45,7 @@
void currentDeviceDidChange();
private:
- void showPlaybackTargetPicker(NSView *, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance) final;
+ void showPlaybackTargetPicker(NSView *, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance, bool) final;
void startingMonitoringPlaybackTargets() final;
void stopMonitoringPlaybackTargets() final;
void invalidatePlaybackTargets() final;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.mm (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.mm 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.mm 2021-02-09 22:05:39 UTC (rev 272611)
@@ -101,7 +101,7 @@
client()->currentDeviceChanged();
}
-void AVOutputDeviceMenuControllerTargetPicker::showPlaybackTargetPicker(NSView *, const FloatRect& location, bool hasActiveRoute, bool useDarkAppearance)
+void AVOutputDeviceMenuControllerTargetPicker::showPlaybackTargetPicker(NSView *, const FloatRect& location, bool hasActiveRoute, bool useDarkAppearance, bool)
{
if (!client() || m_showingMenu)
return;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVPlaybackTargetPicker.h (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVPlaybackTargetPicker.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVPlaybackTargetPicker.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -56,7 +56,7 @@
}
virtual ~AVPlaybackTargetPicker() = default;
- virtual void showPlaybackTargetPicker(NSView *, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance) = 0;
+ virtual void showPlaybackTargetPicker(NSView *, const FloatRect&, bool checkActiveRoute, bool useDarkAppearancebool, bool useiTunesAVOutputContext) = 0;
virtual void startingMonitoringPlaybackTargets() = 0;
virtual void stopMonitoringPlaybackTargets() = 0;
virtual void invalidatePlaybackTargets() = 0;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.h (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -49,7 +49,7 @@
void devicePickerWasDismissed();
private:
- void showPlaybackTargetPicker(NSView *, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance) final;
+ void showPlaybackTargetPicker(NSView *, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance, bool useiTunesAVOutputContext) final;
void startingMonitoringPlaybackTargets() final;
void stopMonitoringPlaybackTargets() final;
void invalidatePlaybackTargets() final;
@@ -58,7 +58,7 @@
AVRoutePickerView *devicePicker();
AVRouteDetector *routeDetector();
- AVOutputContext * outputContextInternal();
+ AVOutputContext * outputContextInternal(bool);
bool hasActiveRoute() const;
RetainPtr<AVRouteDetector> m_routeDetector;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm 2021-02-09 22:05:39 UTC (rev 272611)
@@ -82,10 +82,13 @@
[m_routePickerViewDelegate clearCallback];
}
-AVOutputContext * AVRoutePickerViewTargetPicker::outputContextInternal()
+AVOutputContext * AVRoutePickerViewTargetPicker::outputContextInternal(bool useiTunesAVOutputContext)
{
if (!m_outputContext) {
- m_outputContext = [PAL::getAVOutputContextClass() iTunesAudioContext];
+ if (useiTunesAVOutputContext)
+ m_outputContext = [PAL::getAVOutputContextClass() iTunesAudioContext];
+ else
+ m_outputContext = [PAL::getAVOutputContextClass() outputContext];
ASSERT(m_outputContext);
if (m_outputContext)
[[NSNotificationCenter defaultCenter] addObserver:m_routePickerViewDelegate.get() selector:@selector(notificationHandler:) name:PAL::get_AVFoundation_AVOutputContextOutputDevicesDidChangeNotification() object:m_outputContext.get()];
@@ -116,7 +119,7 @@
return m_routeDetector.get();
}
-void AVRoutePickerViewTargetPicker::showPlaybackTargetPicker(NSView *view, const FloatRect& rectInScreenCoordinates, bool hasActiveRoute, bool useDarkAppearance)
+void AVRoutePickerViewTargetPicker::showPlaybackTargetPicker(NSView *view, const FloatRect& rectInScreenCoordinates, bool hasActiveRoute, bool useDarkAppearance, bool useiTunesAVOutputContext)
{
if (!client())
return;
@@ -129,7 +132,7 @@
auto rectInWindowCoordinates = [view.window convertRectFromScreen:NSMakeRect(rectInScreenCoordinates.x(), rectInScreenCoordinates.y(), 1.0, 1.0)];
auto rectInViewCoordinates = [view convertRect:rectInWindowCoordinates fromView:view];
- [picker showRoutePickingControlsForOutputContext:outputContextInternal() relativeToRect:rectInViewCoordinates ofView:view];
+ [picker showRoutePickingControlsForOutputContext:outputContextInternal(useiTunesAVOutputContext) relativeToRect:rectInViewCoordinates ofView:view];
}
void AVRoutePickerViewTargetPicker::startingMonitoringPlaybackTargets()
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -41,7 +41,7 @@
explicit MediaPlaybackTargetPickerMac(MediaPlaybackTargetPicker::Client&);
virtual ~MediaPlaybackTargetPickerMac();
- void showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance) final;
+ void showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance, bool useiTunesAVOutputContext) final;
void startingMonitoringPlaybackTargets() final;
void stopMonitoringPlaybackTargets() final;
void invalidatePlaybackTargets() final;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm (272610 => 272611)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm 2021-02-09 22:05:39 UTC (rev 272611)
@@ -86,9 +86,9 @@
return *m_routePicker;
}
-void MediaPlaybackTargetPickerMac::showPlaybackTargetPicker(PlatformView* view, const FloatRect& location, bool hasActiveRoute, bool useDarkAppearance)
+void MediaPlaybackTargetPickerMac::showPlaybackTargetPicker(PlatformView* view, const FloatRect& location, bool hasActiveRoute, bool useDarkAppearance, bool useiTunesAVOutputContext)
{
- routePicker().showPlaybackTargetPicker(view, location, hasActiveRoute, useDarkAppearance);
+ routePicker().showPlaybackTargetPicker(view, location, hasActiveRoute, useDarkAppearance, useiTunesAVOutputContext);
}
void MediaPlaybackTargetPickerMac::startingMonitoringPlaybackTargets()
Modified: trunk/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.cpp (272610 => 272611)
--- trunk/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.cpp 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.cpp 2021-02-09 22:05:39 UTC (rev 272611)
@@ -61,7 +61,7 @@
return WebCore::MediaPlaybackTargetMock::create(m_deviceName, m_state);
}
-void MediaPlaybackTargetPickerMock::showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance)
+void MediaPlaybackTargetPickerMock::showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance, bool)
{
if (!client() || m_showingMenu)
return;
Modified: trunk/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.h (272610 => 272611)
--- trunk/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -43,7 +43,7 @@
virtual ~MediaPlaybackTargetPickerMock();
- void showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance) override;
+ void showPlaybackTargetPicker(PlatformView*, const FloatRect&, bool checkActiveRoute, bool useDarkAppearance, bool) override;
void startingMonitoringPlaybackTargets() override;
void stopMonitoringPlaybackTargets() override;
void invalidatePlaybackTargets() override;
Modified: trunk/Source/WebKit/ChangeLog (272610 => 272611)
--- trunk/Source/WebKit/ChangeLog 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebKit/ChangeLog 2021-02-09 22:05:39 UTC (rev 272611)
@@ -1,3 +1,15 @@
+2021-02-09 Eric Carlson <[email protected]>
+
+ [macOS] Add internal preference to control how AVOutputContext is allocated
+ https://bugs.webkit.org/show_bug.cgi?id=221583
+ <rdar://73830632>
+
+ Reviewed by Jer Noble.
+
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/mac/WebPageProxyMac.mm:
+ (WebKit::WebPageProxy::useiTunesAVOutputContext const):
+
2021-02-09 Martin Robinson <[email protected]>
Implement scroll-snap-stop for scroll snapping
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (272610 => 272611)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-09 22:05:39 UTC (rev 272611)
@@ -1536,8 +1536,10 @@
void externalOutputDeviceAvailableDidChange(WebCore::PlaybackTargetClientContextIdentifier, bool) final;
void setShouldPlayToPlaybackTarget(WebCore::PlaybackTargetClientContextIdentifier, bool) final;
void playbackTargetPickerWasDismissed(WebCore::PlaybackTargetClientContextIdentifier) final;
- bool alwaysOnLoggingAllowed() final { return isAlwaysOnLoggingAllowed(); }
+ bool alwaysOnLoggingAllowed() const final { return isAlwaysOnLoggingAllowed(); }
+ bool useiTunesAVOutputContext() const final;
PlatformView* platformView() const final;
+
#endif
void didChangeBackgroundColor();
Modified: trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm (272610 => 272611)
--- trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm 2021-02-09 21:52:39 UTC (rev 272610)
+++ trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm 2021-02-09 22:05:39 UTC (rev 272611)
@@ -49,6 +49,7 @@
#import "WKSharingServicePickerDelegate.h"
#import "WebContextMenuProxyMac.h"
#import "WebPageMessages.h"
+#import "WebPreferencesKeys.h"
#import "WebProcessProxy.h"
#import <WebCore/AttributedString.h>
#import <WebCore/DictionaryLookup.h>
@@ -651,6 +652,11 @@
return [pageClient().platformWindow() contentView];
}
+bool WebPageProxy::useiTunesAVOutputContext() const
+{
+ return m_preferences->store().getBoolValueForKey(WebPreferencesKey::useiTunesAVOutputContextKey());
+}
+
#if ENABLE(UI_PROCESS_PDF_HUD)
void WebPageProxy::createPDFHUD(PDFPluginIdentifier identifier, const WebCore::IntRect& rect)