Changeset 188097 in webkit
- Timestamp:
- Aug 6, 2015 5:00:58 PM (9 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r188096 r188097 1 2015-08-06 Matt Rajca <mrajca@apple.com> 2 3 Media Session: notify focus manager clients when the playing state of the focused media element changes 4 https://bugs.webkit.org/show_bug.cgi?id=147745 5 6 Reviewed by Tim Horton. 7 8 Added plumbing to allow focus manager's clients to be notified when the focused Content media element begins 9 playing or is paused. 10 11 * UIProcess/API/C/WKMediaSessionFocusManager.cpp: 12 (WKMediaSessionFocusManagerSetClient): 13 * UIProcess/API/C/WKMediaSessionFocusManager.h: 14 * UIProcess/WebMediaSessionFocusManager.cpp: 15 (WebKit::WebMediaSessionFocusManager::initializeClient): 16 (WebKit::WebMediaSessionFocusManager::mediaElementIsPlayingDidChange): 17 * UIProcess/WebMediaSessionFocusManager.h: 18 * UIProcess/WebMediaSessionFocusManagerClient.cpp: 19 (WebKit::WebMediaSessionFocusManagerClient::didChangePlaybackAttribute): 20 * UIProcess/WebMediaSessionFocusManagerClient.h: 21 * WebKit2.xcodeproj/project.pbxproj: 22 1 23 2015-08-06 Alex Christensen <achristensen@webkit.org> 2 24 -
trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.cpp
r188048 r188097 41 41 } 42 42 43 void WKMediaSessionFocusManagerSetClient(WKMediaSessionFocusManagerRef manager, const WKMediaSessionFocusManagerClientBase* client) 44 { 45 #if ENABLE(MEDIA_SESSION) 46 toImpl(manager)->initializeClient(client); 47 #else 48 UNUSED_PARAM(manager); 49 UNUSED_PARAM(client); 50 #endif 51 } 52 43 53 bool WKMediaSessionFocusManagerIsFocusedContentMediaElementPlaying(WKMediaSessionFocusManagerRef manager) 44 54 { -
trunk/Source/WebKit2/UIProcess/API/C/WKMediaSessionFocusManager.h
r188048 r188097 37 37 #endif 38 38 39 enum { 40 IsPlaying = 1 << 0 41 }; 42 typedef uint32_t WKMediaSessionFocusManagerPlaybackAttribute; 43 44 // Media Session Focus Manager Client 45 typedef void (*WKMediaSessionFocusManagerDidChangePlaybackAttribute)(WKMediaSessionFocusManagerRef manager, WKMediaSessionFocusManagerPlaybackAttribute playbackAttribute, bool value, const void *clientInfo); 46 47 typedef struct WKMediaSessionFocusManagerClientBase { 48 int version; 49 const void * clientInfo; 50 } WKMediaSessionFocusManagerClientBase; 51 52 typedef struct WKMediaSessionFocusManagerClientV0 { 53 WKMediaSessionFocusManagerClientBase base; 54 55 // Version 0. 56 WKMediaSessionFocusManagerDidChangePlaybackAttribute didChangePlaybackAttribute; 57 } WKMediaSessionFocusManagerClientV0; 58 39 59 WK_EXPORT WKTypeID WKMediaSessionFocusManagerGetTypeID(); 60 61 WK_EXPORT void WKMediaSessionFocusManagerSetClient(WKMediaSessionFocusManagerRef manager, const WKMediaSessionFocusManagerClientBase* client); 40 62 41 63 WK_EXPORT bool WKMediaSessionFocusManagerIsFocusedContentMediaElementPlaying(WKMediaSessionFocusManagerRef manager); -
trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.cpp
r188048 r188097 58 58 } 59 59 60 void WebMediaSessionFocusManager::initializeClient(const WKMediaSessionFocusManagerClientBase* client) 61 { 62 m_client.initialize(client); 63 } 64 60 65 bool WebMediaSessionFocusManager::isFocusedContentMediaElementPlaying() const 61 66 { … … 69 74 { 70 75 if (m_focusedMediaElement) { 71 if (proxy == m_focusedMediaElement->first && elementID == m_focusedMediaElement->second) 76 if (proxy == m_focusedMediaElement->first && elementID == m_focusedMediaElement->second) { 72 77 m_focusedMediaElementIsPlaying = isPlaying; 78 m_client.didChangePlaybackAttribute(this, IsPlaying, isPlaying); 79 } 73 80 } 74 81 } -
trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManager.h
r188048 r188097 31 31 #include "APIObject.h" 32 32 #include "WebContextSupplement.h" 33 #include "WebMediaSessionFocusManagerClient.h" 33 34 #include "WebPageProxy.h" 34 35 … … 42 43 43 44 static PassRefPtr<WebMediaSessionFocusManager> create(WebProcessPool*); 45 46 void initializeClient(const WKMediaSessionFocusManagerClientBase*); 44 47 45 48 bool isFocusedContentMediaElementPlaying() const; … … 61 64 std::unique_ptr<FocusedMediaElement> m_focusedMediaElement; 62 65 bool m_focusedMediaElementIsPlaying { false }; 66 WebMediaSessionFocusManagerClient m_client; 63 67 }; 64 68 -
trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManagerClient.cpp
r188096 r188097 25 25 26 26 #include "config.h" 27 #include "WKMediaSessionFocusManager.h" 27 #include "WebMediaSessionFocusManagerClient.h" 28 29 #if ENABLE(MEDIA_SESSION) 28 30 29 31 #include "WKAPICast.h" 30 32 #include "WebMediaSessionFocusManager.h" 31 33 32 using namespace WebKit; 34 namespace WebKit { 33 35 34 WKTypeID WKMediaSessionFocusManagerGetTypeID()36 void WebMediaSessionFocusManagerClient::didChangePlaybackAttribute(WebMediaSessionFocusManager* manager, WKMediaSessionFocusManagerPlaybackAttribute playbackAttribute, bool value) 35 37 { 36 #if ENABLE(MEDIA_SESSION) 37 return toAPI(WebMediaSessionFocusManager::APIType); 38 #else 39 return toAPI(API::Object::Type::Null); 40 #endif 38 if (!m_client.didChangePlaybackAttribute) 39 return; 40 41 m_client.didChangePlaybackAttribute(toAPI(manager), playbackAttribute, value, m_client.base.clientInfo); 41 42 } 42 43 43 bool WKMediaSessionFocusManagerIsFocusedContentMediaElementPlaying(WKMediaSessionFocusManagerRef manager) 44 { 45 #if ENABLE(MEDIA_SESSION) 46 return toImpl(manager)->isFocusedContentMediaElementPlaying(); 47 #else 48 UNUSED_PARAM(manager); 49 return false; 50 #endif 51 } 44 } // namespace WebKit 45 46 #endif // ENABLE(MEDIA_SESSION) -
trunk/Source/WebKit2/UIProcess/WebMediaSessionFocusManagerClient.h
r188096 r188097 24 24 */ 25 25 26 #include "config.h" 26 #ifndef WebMediaSessionFocusManagerClient_h 27 #define WebMediaSessionFocusManagerClient_h 28 29 #if ENABLE(MEDIA_SESSION) 30 31 #include "APIClient.h" 27 32 #include "WKMediaSessionFocusManager.h" 33 #include <wtf/Forward.h> 28 34 29 #include "WKAPICast.h" 30 #include "WebMediaSessionFocusManager.h" 31 32 using namespace WebKit; 33 34 WKTypeID WKMediaSessionFocusManagerGetTypeID() 35 { 36 #if ENABLE(MEDIA_SESSION) 37 return toAPI(WebMediaSessionFocusManager::APIType); 38 #else 39 return toAPI(API::Object::Type::Null); 40 #endif 35 namespace API { 36 template<> struct ClientTraits<WKMediaSessionFocusManagerClientBase> { 37 typedef std::tuple<WKMediaSessionFocusManagerClientV0> Versions; 38 }; 41 39 } 42 40 43 bool WKMediaSessionFocusManagerIsFocusedContentMediaElementPlaying(WKMediaSessionFocusManagerRef manager) 44 { 45 #if ENABLE(MEDIA_SESSION) 46 return toImpl(manager)->isFocusedContentMediaElementPlaying(); 47 #else 48 UNUSED_PARAM(manager); 49 return false; 50 #endif 51 } 41 namespace WebKit { 42 43 class WebMediaSessionFocusManager; 44 45 class WebMediaSessionFocusManagerClient : public API::Client<WKMediaSessionFocusManagerClientBase> { 46 public: 47 void didChangePlaybackAttribute(WebMediaSessionFocusManager*, WKMediaSessionFocusManagerPlaybackAttribute, bool); 48 }; 49 50 } // namespace WebKit 51 52 #endif // ENABLE(MEDIA_SESSION) 53 54 #endif // WebMediaSessionFocusManagerClient_h -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r187917 r188097 1664 1664 C98C48A91B6FD5B500145103 /* WKMediaSessionFocusManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C98C48A71B6FD5B500145103 /* WKMediaSessionFocusManager.cpp */; }; 1665 1665 C98C48AA1B6FD5B500145103 /* WKMediaSessionFocusManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C98C48A81B6FD5B500145103 /* WKMediaSessionFocusManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1666 C9C1833B1B74026A007036A7 /* WebMediaSessionFocusManagerClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9C183371B73FD6A007036A7 /* WebMediaSessionFocusManagerClient.cpp */; }; 1667 C9C1833C1B74026D007036A7 /* WebMediaSessionFocusManagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C183381B73FD6A007036A7 /* WebMediaSessionFocusManagerClient.h */; }; 1666 1668 C9CD43971B4B001900239E33 /* WebMediaSessionMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9CD43931B4B000E00239E33 /* WebMediaSessionMetadata.cpp */; }; 1667 1669 C9CD43981B4B001D00239E33 /* WebMediaSessionMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CD43941B4B000E00239E33 /* WebMediaSessionMetadata.h */; }; … … 3892 3894 C98C48A71B6FD5B500145103 /* WKMediaSessionFocusManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKMediaSessionFocusManager.cpp; sourceTree = "<group>"; }; 3893 3895 C98C48A81B6FD5B500145103 /* WKMediaSessionFocusManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKMediaSessionFocusManager.h; sourceTree = "<group>"; }; 3896 C9C183371B73FD6A007036A7 /* WebMediaSessionFocusManagerClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebMediaSessionFocusManagerClient.cpp; sourceTree = "<group>"; }; 3897 C9C183381B73FD6A007036A7 /* WebMediaSessionFocusManagerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaSessionFocusManagerClient.h; sourceTree = "<group>"; }; 3894 3898 C9CD43931B4B000E00239E33 /* WebMediaSessionMetadata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebMediaSessionMetadata.cpp; sourceTree = "<group>"; }; 3895 3899 C9CD43941B4B000E00239E33 /* WebMediaSessionMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaSessionMetadata.h; sourceTree = "<group>"; }; … … 6179 6183 C98C48A31B6FD4C300145103 /* WebMediaSessionFocusManager.cpp */, 6180 6184 C98C48A41B6FD4C300145103 /* WebMediaSessionFocusManager.h */, 6185 C9C183371B73FD6A007036A7 /* WebMediaSessionFocusManagerClient.cpp */, 6186 C9C183381B73FD6A007036A7 /* WebMediaSessionFocusManagerClient.h */, 6181 6187 7CCCC8F81A5F50FD008FB0DA /* WebNavigationState.cpp */, 6182 6188 7CCCC8F91A5F50FD008FB0DA /* WebNavigationState.h */, … … 7989 7995 CD003A5319D49B5D005ABCE0 /* WebMediaKeyStorageManager.h in Headers */, 7990 7996 C98C48A61B6FD4C300145103 /* WebMediaSessionFocusManager.h in Headers */, 7997 C9C1833C1B74026D007036A7 /* WebMediaSessionFocusManagerClient.h in Headers */, 7991 7998 C9CD43981B4B001D00239E33 /* WebMediaSessionMetadata.h in Headers */, 7992 7999 2D3EF4431917646300034184 /* WebMemoryPressureHandlerIOS.h in Headers */, … … 9825 9832 CD003A5219D49B5D005ABCE0 /* WebMediaKeyStorageManager.cpp in Sources */, 9826 9833 C98C48A51B6FD4C300145103 /* WebMediaSessionFocusManager.cpp in Sources */, 9834 C9C1833B1B74026A007036A7 /* WebMediaSessionFocusManagerClient.cpp in Sources */, 9827 9835 C9CD43971B4B001900239E33 /* WebMediaSessionMetadata.cpp in Sources */, 9828 9836 2D3EF4421917646300034184 /* WebMemoryPressureHandlerIOS.mm in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.