- Revision
- 189135
- Author
- [email protected]
- Date
- 2015-08-28 17:14:54 -0700 (Fri, 28 Aug 2015)
Log Message
[Mac] Restructure WebMediaSessionManager for testing
https://bugs.webkit.org/show_bug.cgi?id=148593
Reviewed by Jer Noble.
Source/WebCore:
No new tests, no functional change.
* Modules/mediasession/WebMediaSessionManager.cpp:
(WebCore::mediaProducerStateString): Add some missing states.
(WebCore::webMediaSessionManagerOverride): New.
(WebCore::WebMediaSessionManager::singleton): New.
(WebCore::WebMediaSessionManager::setWebMediaSessionManagerOverride): New, will allow runtime
registration of a mock manager.
* Modules/mediasession/WebMediaSessionManager.h:
* platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp:
(WebCore::WebMediaSessionManager::platformManager): Renamed from singleton.
(WebCore::WebMediaSessionManagerMac::singleton): Deleted.
* platform/graphics/avfoundation/WebMediaSessionManagerMac.h:
Source/WebKit/mac:
* WebView/WebMediaPlaybackTargetPicker.mm:
(WebMediaPlaybackTargetPicker::addPlaybackTargetPickerClient): Call WebMediaSessionManager::singleton,
not WebMediaSessionManagerMac::singleton.
(WebMediaPlaybackTargetPicker::removePlaybackTargetPickerClient): Ditto.
(WebMediaPlaybackTargetPicker::showPlaybackTargetPicker): Ditto.
(WebMediaPlaybackTargetPicker::playbackTargetPickerClientStateDidChange): Ditto.
(WebMediaPlaybackTargetPicker::setPlaybackTarget): Ditto.
(WebMediaPlaybackTargetPicker::invalidate): Ditto.
Source/WebKit2:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::mediaSessionManager): Call WebMediaSessionManager::singleton, not
WebMediaSessionManagerMac::singleton.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (189134 => 189135)
--- trunk/Source/WebCore/ChangeLog 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebCore/ChangeLog 2015-08-29 00:14:54 UTC (rev 189135)
@@ -1,3 +1,25 @@
+2015-08-28 Eric Carlson <[email protected]>
+
+ [Mac] Restructure WebMediaSessionManager for testing
+ https://bugs.webkit.org/show_bug.cgi?id=148593
+
+ Reviewed by Jer Noble.
+
+ No new tests, no functional change.
+
+ * Modules/mediasession/WebMediaSessionManager.cpp:
+ (WebCore::mediaProducerStateString): Add some missing states.
+ (WebCore::webMediaSessionManagerOverride): New.
+ (WebCore::WebMediaSessionManager::singleton): New.
+ (WebCore::WebMediaSessionManager::setWebMediaSessionManagerOverride): New, will allow runtime
+ registration of a mock manager.
+ * Modules/mediasession/WebMediaSessionManager.h:
+
+ * platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp:
+ (WebCore::WebMediaSessionManager::platformManager): Renamed from singleton.
+ (WebCore::WebMediaSessionManagerMac::singleton): Deleted.
+ * platform/graphics/avfoundation/WebMediaSessionManagerMac.h:
+
2015-08-28 Jer Noble <[email protected]>
[iOS] Add WebKit/WebKit2 settings to control automatic data loading
Modified: trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp (189134 => 189135)
--- trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp 2015-08-29 00:14:54 UTC (rev 189135)
@@ -78,6 +78,8 @@
string.append("RequiresPlaybackTargetMonitoring + ");
if (flags & MediaProducer::ExternalDeviceAutoPlayCandidate)
string.append("ExternalDeviceAutoPlayCandidate + ");
+ if (flags & MediaProducer::DidPlayToEnd)
+ string.append("DidPlayToEnd + ");
if (string.isEmpty())
string.append("IsNotPlaying");
else
@@ -87,6 +89,25 @@
}
#endif
+static WebMediaSessionManager*& webMediaSessionManagerOverride()
+{
+ static WebMediaSessionManager* override;
+ return override;
+}
+
+WebMediaSessionManager& WebMediaSessionManager::shared()
+{
+ if (WebMediaSessionManager* override = webMediaSessionManagerOverride())
+ return *override;
+
+ return WebMediaSessionManager::platformManager();
+}
+
+void WebMediaSessionManager::setWebMediaSessionManagerOverride(WebMediaSessionManager* manager)
+{
+ webMediaSessionManagerOverride() = manager;
+}
+
WebMediaSessionManager::WebMediaSessionManager()
: m_taskTimer(RunLoop::current(), this, &WebMediaSessionManager::taskTimerFired)
, m_watchdogTimer(RunLoop::current(), this, &WebMediaSessionManager::watchdogTimerFired)
Modified: trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.h (189134 => 189135)
--- trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.h 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.h 2015-08-29 00:14:54 UTC (rev 189135)
@@ -45,6 +45,9 @@
WTF_MAKE_NONCOPYABLE(WebMediaSessionManager);
public:
+ WEBCORE_EXPORT static WebMediaSessionManager& shared();
+ WEBCORE_EXPORT static void setWebMediaSessionManagerOverride(WebMediaSessionManager*);
+
WEBCORE_EXPORT uint64_t addPlaybackTargetPickerClient(WebMediaSessionManagerClient&, uint64_t);
WEBCORE_EXPORT void removePlaybackTargetPickerClient(WebMediaSessionManagerClient&, uint64_t);
WEBCORE_EXPORT void removeAllPlaybackTargetPickerClients(WebMediaSessionManagerClient&);
@@ -56,6 +59,7 @@
virtual ~WebMediaSessionManager();
virtual WebCore::MediaPlaybackTargetPicker& targetPicker() = 0;
+ static WebMediaSessionManager& platformManager();
private:
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp (189134 => 189135)
--- trunk/Source/WebCore/platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp 2015-08-29 00:14:54 UTC (rev 189135)
@@ -33,7 +33,7 @@
namespace WebCore {
-WebMediaSessionManager& WebMediaSessionManagerMac::singleton()
+WebMediaSessionManager& WebMediaSessionManager::platformManager()
{
static NeverDestroyed<WebMediaSessionManagerMac> sharedManager;
return sharedManager;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/WebMediaSessionManagerMac.h (189134 => 189135)
--- trunk/Source/WebCore/platform/graphics/avfoundation/WebMediaSessionManagerMac.h 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/WebMediaSessionManagerMac.h 2015-08-29 00:14:54 UTC (rev 189135)
@@ -35,7 +35,6 @@
class WebMediaSessionManagerMac : public WebMediaSessionManager {
friend class NeverDestroyed<WebMediaSessionManagerMac>;
public:
- WEBCORE_EXPORT static WebMediaSessionManager& singleton();
private:
WebMediaSessionManagerMac();
Modified: trunk/Source/WebKit/mac/ChangeLog (189134 => 189135)
--- trunk/Source/WebKit/mac/ChangeLog 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-08-29 00:14:54 UTC (rev 189135)
@@ -1,3 +1,19 @@
+2015-08-28 Eric Carlson <[email protected]>
+
+ [Mac] Restructure WebMediaSessionManager for testing
+ https://bugs.webkit.org/show_bug.cgi?id=148593
+
+ Reviewed by Jer Noble.
+
+ * WebView/WebMediaPlaybackTargetPicker.mm:
+ (WebMediaPlaybackTargetPicker::addPlaybackTargetPickerClient): Call WebMediaSessionManager::singleton,
+ not WebMediaSessionManagerMac::singleton.
+ (WebMediaPlaybackTargetPicker::removePlaybackTargetPickerClient): Ditto.
+ (WebMediaPlaybackTargetPicker::showPlaybackTargetPicker): Ditto.
+ (WebMediaPlaybackTargetPicker::playbackTargetPickerClientStateDidChange): Ditto.
+ (WebMediaPlaybackTargetPicker::setPlaybackTarget): Ditto.
+ (WebMediaPlaybackTargetPicker::invalidate): Ditto.
+
2015-08-28 Jer Noble <[email protected]>
[iOS] Add WebKit/WebKit2 settings to control automatic data loading
Modified: trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm (189134 => 189135)
--- trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm 2015-08-29 00:14:54 UTC (rev 189135)
@@ -29,7 +29,7 @@
#import <WebCore/MediaPlaybackTarget.h>
#import <WebCore/Page.h>
-#import <WebCore/WebMediaSessionManagerMac.h>
+#import <WebCore/WebMediaSessionManager.h>
std::unique_ptr<WebMediaPlaybackTargetPicker> WebMediaPlaybackTargetPicker::create(WebCore::Page& page)
{
@@ -43,22 +43,22 @@
void WebMediaPlaybackTargetPicker::addPlaybackTargetPickerClient(uint64_t contextId)
{
- WebCore::WebMediaSessionManagerMac::singleton().addPlaybackTargetPickerClient(*this, contextId);
+ WebCore::WebMediaSessionManager::shared().addPlaybackTargetPickerClient(*this, contextId);
}
void WebMediaPlaybackTargetPicker::removePlaybackTargetPickerClient(uint64_t contextId)
{
- WebCore::WebMediaSessionManagerMac::singleton().removePlaybackTargetPickerClient(*this, contextId);
+ WebCore::WebMediaSessionManager::shared().removePlaybackTargetPickerClient(*this, contextId);
}
void WebMediaPlaybackTargetPicker::showPlaybackTargetPicker(uint64_t contextId, const WebCore::FloatRect& rect, bool hasVideo)
{
- WebCore::WebMediaSessionManagerMac::singleton().showPlaybackTargetPicker(*this, contextId, WebCore::IntRect(rect), hasVideo);
+ WebCore::WebMediaSessionManager::shared().showPlaybackTargetPicker(*this, contextId, WebCore::IntRect(rect), hasVideo);
}
void WebMediaPlaybackTargetPicker::playbackTargetPickerClientStateDidChange(uint64_t contextId, WebCore::MediaProducer::MediaStateFlags state)
{
- WebCore::WebMediaSessionManagerMac::singleton().clientStateDidChange(*this, contextId, state);
+ WebCore::WebMediaSessionManager::shared().clientStateDidChange(*this, contextId, state);
}
void WebMediaPlaybackTargetPicker::setPlaybackTarget(uint64_t contextId, Ref<WebCore::MediaPlaybackTarget>&& target)
@@ -88,7 +88,7 @@
void WebMediaPlaybackTargetPicker::invalidate()
{
m_page = nullptr;
- WebCore::WebMediaSessionManagerMac::singleton().removeAllPlaybackTargetPickerClients(*this);
+ WebCore::WebMediaSessionManager::shared().removeAllPlaybackTargetPickerClients(*this);
}
#endif
Modified: trunk/Source/WebKit2/ChangeLog (189134 => 189135)
--- trunk/Source/WebKit2/ChangeLog 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebKit2/ChangeLog 2015-08-29 00:14:54 UTC (rev 189135)
@@ -1,3 +1,14 @@
+2015-08-28 Eric Carlson <[email protected]>
+
+ [Mac] Restructure WebMediaSessionManager for testing
+ https://bugs.webkit.org/show_bug.cgi?id=148593
+
+ Reviewed by Jer Noble.
+
+ * UIProcess/mac/PageClientImpl.mm:
+ (WebKit::PageClientImpl::mediaSessionManager): Call WebMediaSessionManager::singleton, not
+ WebMediaSessionManagerMac::singleton.
+
2015-08-28 Jer Noble <[email protected]>
[iOS] Add WebKit/WebKit2 settings to control automatic data loading
Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm (189134 => 189135)
--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm 2015-08-29 00:10:07 UTC (rev 189134)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm 2015-08-29 00:14:54 UTC (rev 189135)
@@ -70,7 +70,7 @@
#endif
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
-#include <WebCore/WebMediaSessionManagerMac.h>
+#include <WebCore/WebMediaSessionManager.h>
#endif
@interface NSApplication (WebNSApplicationDetails)
@@ -818,7 +818,7 @@
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
WebCore::WebMediaSessionManager& PageClientImpl::mediaSessionManager()
{
- return WebMediaSessionManagerMac::singleton();
+ return WebMediaSessionManager::shared();
}
#endif