Diff
Modified: trunk/Source/WebCore/ChangeLog (188774 => 188775)
--- trunk/Source/WebCore/ChangeLog 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebCore/ChangeLog 2015-08-21 21:41:53 UTC (rev 188775)
@@ -1,3 +1,14 @@
+2015-08-20 Matt Rajca <[email protected]>
+
+ Media Session: let UI clients change the volume of the focused media element
+ https://bugs.webkit.org/show_bug.cgi?id=148289
+
+ Reviewed by Tim Horton.
+
+ * page/Page.cpp:
+ (WebCore::Page::setVolumeOfMediaElement):
+ * page/Page.h:
+
2015-08-21 Anders Carlsson <[email protected]>
Get rid of uses of the old callOnMainThread function that takes a function ptr + context
Modified: trunk/Source/WebCore/page/Page.cpp (188774 => 188775)
--- trunk/Source/WebCore/page/Page.cpp 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebCore/page/Page.cpp 2015-08-21 21:41:53 UTC (rev 188775)
@@ -1224,6 +1224,12 @@
break;
}
}
+
+void Page::setVolumeOfMediaElement(double volume, uint64_t elementID)
+{
+ if (HTMLMediaElement* element = HTMLMediaElement::elementWithID(elementID))
+ element->setVolume(volume, ASSERT_NO_EXCEPTION);
+}
#endif
#if !ASSERT_DISABLED
Modified: trunk/Source/WebCore/page/Page.h (188774 => 188775)
--- trunk/Source/WebCore/page/Page.h 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebCore/page/Page.h 2015-08-21 21:41:53 UTC (rev 188775)
@@ -442,6 +442,7 @@
#if ENABLE(MEDIA_SESSION)
WEBCORE_EXPORT void handleMediaEvent(MediaEventType);
+ WEBCORE_EXPORT void setVolumeOfMediaElement(double, uint64_t);
#endif
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
Modified: trunk/Source/WebKit2/ChangeLog (188774 => 188775)
--- trunk/Source/WebKit2/ChangeLog 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/ChangeLog 2015-08-21 21:41:53 UTC (rev 188775)
@@ -1,3 +1,25 @@
+2015-08-20 Matt Rajca <[email protected]>
+
+ Media Session: let UI clients change the volume of the focused media element
+ https://bugs.webkit.org/show_bug.cgi?id=148289
+
+ Reviewed by Tim Horton.
+
+ * UIProcess/API/C/WKMediaSessionFocusManager.cpp:
+ (WKMediaSessionFocusManagerSetVolumeOfFocusedMediaElement):
+ * UIProcess/API/C/WKMediaSessionFocusManager.h:
+ * UIProcess/WebMediaSessionFocusManager.cpp:
+ (WebKit::WebMediaSessionFocusManager::updatePlaybackAttribute):
+ (WebKit::WebMediaSessionFocusManager::setVolumeOfFocusedMediaElement):
+ * UIProcess/WebMediaSessionFocusManager.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::setVolumeOfMediaElement):
+ * UIProcess/WebPageProxy.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::setVolumeOfMediaElement):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
2015-08-21 Anders Carlsson <[email protected]>
Get rid of uses of the old callOnMainThread function that takes a function ptr + context
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.cpp (188774 => 188775)
--- trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.cpp 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.cpp 2015-08-21 21:41:53 UTC (rev 188775)
@@ -60,3 +60,13 @@
return false;
#endif
}
+
+void WKMediaSessionFocusManagerSetVolumeOfFocusedMediaElement(WKMediaSessionFocusManagerRef manager, double volume)
+{
+#if ENABLE(MEDIA_SESSION)
+ toImpl(manager)->setVolumeOfFocusedMediaElement(volume);
+#else
+ UNUSED_PARAM(manager);
+ UNUSED_PARAM(volume);
+#endif
+}
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.h (188774 => 188775)
--- trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.h 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.h 2015-08-21 21:41:53 UTC (rev 188775)
@@ -63,6 +63,7 @@
WK_EXPORT void WKMediaSessionFocusManagerSetClient(WKMediaSessionFocusManagerRef manager, const WKMediaSessionFocusManagerClientBase* client);
WK_EXPORT bool WKMediaSessionFocusManagerValueForPlaybackAttribute(WKMediaSessionFocusManagerRef, WKMediaSessionFocusManagerPlaybackAttribute);
+WK_EXPORT void WKMediaSessionFocusManagerSetVolumeOfFocusedMediaElement(WKMediaSessionFocusManagerRef, double);
#ifdef __cplusplus
}
Modified: trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.cpp (188774 => 188775)
--- trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.cpp 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.cpp 2015-08-21 21:41:53 UTC (rev 188775)
@@ -80,6 +80,15 @@
m_client.didChangePlaybackAttribute(this, attribute, value);
}
+void WebMediaSessionFocusManager::setVolumeOfFocusedMediaElement(double volume)
+{
+ if (!m_focusedMediaElement)
+ return;
+
+ if (WebPageProxy* proxy = m_focusedMediaElement->first)
+ proxy->setVolumeOfMediaElement(volume, m_focusedMediaElement->second);
+}
+
void WebMediaSessionFocusManager::updatePlaybackAttributesFromMediaState(WebPageProxy* proxy, uint64_t elementID, WebCore::MediaProducer::MediaStateFlags flags)
{
if (m_focusedMediaElement) {
Modified: trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.h (188774 => 188775)
--- trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.h 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.h 2015-08-21 21:41:53 UTC (rev 188775)
@@ -47,6 +47,7 @@
bool valueForPlaybackAttribute(WKMediaSessionFocusManagerPlaybackAttribute) const;
void updatePlaybackAttributesFromMediaState(WebPageProxy*, uint64_t, WebCore::MediaProducer::MediaStateFlags);
+ void setVolumeOfFocusedMediaElement(double);
void setFocusedMediaElement(WebPageProxy&, uint64_t);
void clearFocusedMediaElement();
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (188774 => 188775)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-08-21 21:41:53 UTC (rev 188775)
@@ -3890,6 +3890,14 @@
m_process->send(Messages::WebPage::HandleMediaEvent(eventType), m_pageID);
}
+
+void WebPageProxy::setVolumeOfMediaElement(double volume, uint64_t elementID)
+{
+ if (!isValid())
+ return;
+
+ m_process->send(Messages::WebPage::SetVolumeOfMediaElement(volume, elementID), m_pageID);
+}
#endif
void WebPageProxy::setMayStartMediaWhenInWindow(bool mayStartMedia)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (188774 => 188775)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-08-21 21:41:53 UTC (rev 188775)
@@ -923,6 +923,7 @@
#if ENABLE(MEDIA_SESSION)
bool hasMediaSessionWithActiveMediaElements() const { return m_hasMediaSessionWithActiveMediaElements; }
void handleMediaEvent(WebCore::MediaEventType);
+ void setVolumeOfMediaElement(double, uint64_t);
#endif
// WebPopupMenuProxy::Client
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (188774 => 188775)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-08-21 21:41:53 UTC (rev 188775)
@@ -4064,6 +4064,11 @@
{
m_page->handleMediaEvent(static_cast<MediaEventType>(eventType));
}
+
+void WebPage::setVolumeOfMediaElement(double volume, uint64_t elementID)
+{
+ m_page->setVolumeOfMediaElement(volume, elementID);
+}
#endif
void WebPage::setMayStartMediaWhenInWindow(bool mayStartMedia)
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (188774 => 188775)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-08-21 21:41:53 UTC (rev 188775)
@@ -750,6 +750,7 @@
#if ENABLE(MEDIA_SESSION)
void handleMediaEvent(uint32_t /* WebCore::MediaEventType */);
+ void setVolumeOfMediaElement(double, uint64_t);
#endif
void updateMainFrameScrollOffsetPinning();
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (188774 => 188775)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-08-21 21:41:49 UTC (rev 188774)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-08-21 21:41:53 UTC (rev 188775)
@@ -316,6 +316,7 @@
#if ENABLE(MEDIA_SESSION)
HandleMediaEvent(uint32_t eventType)
+ SetVolumeOfMediaElement(double volume, uint64_t elementID)
#endif
// FIXME: This a dummy message, to avoid breaking the build for platforms that don't require