Title: [188775] trunk/Source
Revision
188775
Author
[email protected]
Date
2015-08-21 14:41:53 -0700 (Fri, 21 Aug 2015)

Log Message

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.

WebCore:
* page/Page.cpp:
(WebCore::Page::setVolumeOfMediaElement):
* page/Page.h:

WebKit2:
* 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:

Modified Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to