Changeset 186484 in webkit


Ignore:
Timestamp:
Jul 7, 2015 4:52:29 PM (9 years ago)
Author:
mrajca@apple.com
Message:

Media Session: propagate metadata changes to UI clients
https://bugs.webkit.org/show_bug.cgi?id=146660

Reviewed by Tim Horton.

  • CMakeLists.txt: Added WebMediaSessionMetadata and WKMediaSessionMetadata.
  • Shared/API/APIObject.h: Added a media session metadata type.
  • Shared/API/c/WKBase.h:
  • Shared/WebMediaSessionMetadata.cpp: Added API adapter for WebCore::MediaSessionMetadata.

(WebKit::WebMediaSessionMetadata::create):
(WebKit::WebMediaSessionMetadata::WebMediaSessionMetadata):
(WebKit::WebMediaSessionMetadata::~WebMediaSessionMetadata):

  • Shared/WebMediaSessionMetadata.h: Added API adapter for WebCore::MediaSessionMetadata.

(WebKit::WebMediaSessionMetadata::title):
(WebKit::WebMediaSessionMetadata::artist):
(WebKit::WebMediaSessionMetadata::album):

  • UIProcess/API/APIUIClient.h: Added 'mediaSessionMetadataDidChange' interface.

(API::UIClient::mediaSessionMetadataDidChange):

  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKMediaSessionMetadata.cpp: Added C wrapper for WebMediaSessionMetadata.

(WKMediaSessionMetadataGetTypeID):
(WKMediaSessionMetadataCopyTitle):
(WKMediaSessionMetadataCopyArtist):
(WKMediaSessionMetadataCopyAlbum):

  • UIProcess/API/C/WKMediaSessionMetadata.h: Added C wrapper for WebMediaSessionMetadata.
  • UIProcess/API/C/WKPage.cpp: Forward 'mediaSessionMetadataDidChange' to client.

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h: Added 'mediaSessionMetadataDidChange' callback.
  • UIProcess/WebPageProxy.cpp: Forward 'mediaSessionMetadataDidChange' to UI client.

(WebKit::WebPageProxy::mediaSessionMetadataDidChange):

  • WebKit2.xcodeproj/project.pbxproj: Added WebMediaSessionMetadata and WKMediaSessionMetadata.
Location:
trunk
Files:
4 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/CMakeLists.txt

    r186103 r186484  
    252252    Shared/WebKeyboardEvent.cpp
    253253    Shared/WebKit2Initialize.cpp
     254    Shared/WebMediaSessionMetadata.cpp
    254255    Shared/WebMemorySampler.cpp
    255256    Shared/WebMouseEvent.cpp
     
    426427    UIProcess/API/C/WKKeyValueStorageManager.cpp
    427428    UIProcess/API/C/WKMediaCacheManager.cpp
     429    UIProcess/API/C/WKMediaSessionMetadata.cpp
    428430    UIProcess/API/C/WKNavigationActionRef.cpp
    429431    UIProcess/API/C/WKNavigationDataRef.cpp
  • trunk/Source/WebKit2/ChangeLog

    r186476 r186484  
     12015-07-06  Matt Rajca  <mrajca@apple.com>
     2
     3        Media Session: propagate metadata changes to UI clients
     4        https://bugs.webkit.org/show_bug.cgi?id=146660
     5
     6        Reviewed by Tim Horton.
     7
     8        * CMakeLists.txt: Added WebMediaSessionMetadata and WKMediaSessionMetadata.
     9        * Shared/API/APIObject.h: Added a media session metadata type.
     10        * Shared/API/c/WKBase.h:
     11        * Shared/WebMediaSessionMetadata.cpp: Added API adapter for WebCore::MediaSessionMetadata.
     12        (WebKit::WebMediaSessionMetadata::create):
     13        (WebKit::WebMediaSessionMetadata::WebMediaSessionMetadata):
     14        (WebKit::WebMediaSessionMetadata::~WebMediaSessionMetadata):
     15        * Shared/WebMediaSessionMetadata.h: Added API adapter for WebCore::MediaSessionMetadata.
     16        (WebKit::WebMediaSessionMetadata::title):
     17        (WebKit::WebMediaSessionMetadata::artist):
     18        (WebKit::WebMediaSessionMetadata::album):
     19        * UIProcess/API/APIUIClient.h: Added 'mediaSessionMetadataDidChange' interface.
     20        (API::UIClient::mediaSessionMetadataDidChange):
     21        * UIProcess/API/C/WKAPICast.h:
     22        * UIProcess/API/C/WKMediaSessionMetadata.cpp: Added C wrapper for WebMediaSessionMetadata.
     23        (WKMediaSessionMetadataGetTypeID):
     24        (WKMediaSessionMetadataCopyTitle):
     25        (WKMediaSessionMetadataCopyArtist):
     26        (WKMediaSessionMetadataCopyAlbum):
     27        * UIProcess/API/C/WKMediaSessionMetadata.h: Added C wrapper for WebMediaSessionMetadata.
     28        * UIProcess/API/C/WKPage.cpp: Forward 'mediaSessionMetadataDidChange' to client.
     29        (WKPageSetPageUIClient):
     30        * UIProcess/API/C/WKPageUIClient.h: Added 'mediaSessionMetadataDidChange' callback.
     31        * UIProcess/WebPageProxy.cpp: Forward 'mediaSessionMetadataDidChange' to UI client.
     32        (WebKit::WebPageProxy::mediaSessionMetadataDidChange):
     33        * WebKit2.xcodeproj/project.pbxproj: Added WebMediaSessionMetadata and WKMediaSessionMetadata.
     34
    1352015-07-07  Brady Eidson  <beidson@apple.com>
    236
  • trunk/Source/WebKit2/Shared/API/APIObject.h

    r181808 r186484  
    150150        WebsiteDataStore,
    151151
     152#if ENABLE(MEDIA_SESSION)
     153        MediaSessionMetadata,
     154#endif
     155
    152156        // Bundle types
    153157        Bundle,
  • trunk/Source/WebKit2/Shared/API/c/WKBase.h

    r183697 r186484  
    113113typedef const struct OpaqueWKKeyValueStorageManager* WKKeyValueStorageManagerRef;
    114114typedef const struct OpaqueWKMediaCacheManager* WKMediaCacheManagerRef;
     115typedef const struct OpaqueWKMediaSessionMetadata* WKMediaSessionMetadataRef;
    115116typedef const struct OpaqueWKNavigationAction* WKNavigationActionRef;
    116117typedef const struct OpaqueWKNavigationData* WKNavigationDataRef;
  • trunk/Source/WebKit2/UIProcess/API/APIUIClient.h

    r185877 r186484  
    5858struct NavigationActionData;
    5959struct SecurityOriginData;
     60
     61#if ENABLE(MEDIA_SESSION)
     62class WebMediaSessionMetadata;
     63#endif
    6064}
    6165
     
    151155    virtual void isPlayingAudioDidChange(WebKit::WebPageProxy&) { }
    152156
     157#if ENABLE(MEDIA_SESSION)
     158    virtual void mediaSessionMetadataDidChange(WebKit::WebPageProxy&, WebKit::WebMediaSessionMetadata*) { }
     159#endif
     160
    153161#if PLATFORM(IOS)
    154162    virtual RetainPtr<NSArray> actionsForElement(_WKActivatedElementInfo *, RetainPtr<NSArray> defaultActions) { return WTF::move(defaultActions); }
  • trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h

    r185623 r186484  
    9393class WebInspectorProxy;
    9494class WebMediaCacheManagerProxy;
     95class WebMediaSessionMetadata;
    9596class WebNotification;
    9697class WebNotificationManagerProxy;
     
    136137WK_ADD_API_MAPPING(WKInspectorRef, WebInspectorProxy)
    137138WK_ADD_API_MAPPING(WKMediaCacheManagerRef, WebMediaCacheManagerProxy)
     139WK_ADD_API_MAPPING(WKMediaSessionMetadataRef, WebMediaSessionMetadata)
    138140WK_ADD_API_MAPPING(WKNavigationActionRef, API::NavigationAction)
    139141WK_ADD_API_MAPPING(WKNavigationDataRef, API::NavigationData)
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r186059 r186484  
    8181
    8282#if ENABLE(MEDIA_SESSION)
     83#include "WebMediaSessionMetadata.h"
    8384#include <WebCore/MediaEventTypes.h>
    8485#endif
     
    18011802            m_client.didClickAutoFillButton(toAPI(&page), toAPI(userInfo), m_client.base.clientInfo);
    18021803        }
     1804
     1805#if ENABLE(MEDIA_SESSION)
     1806        virtual void mediaSessionMetadataDidChange(WebPageProxy& page, WebMediaSessionMetadata* metadata) override
     1807        {
     1808            if (!m_client.mediaSessionMetadataDidChange)
     1809                return;
     1810
     1811            m_client.mediaSessionMetadataDidChange(toAPI(&page), toAPI(metadata), m_client.base.clientInfo);
     1812        }
     1813#endif
    18031814    };
    18041815
  • trunk/Source/WebKit2/UIProcess/API/C/WKPageUIClient.h

    r186046 r186484  
    9292typedef void (*WKPageDecidePolicyForUserMediaPermissionRequestCallback)(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef origin, WKUserMediaPermissionRequestRef permissionRequest, const void* clientInfo);
    9393typedef void (*WKPageDidClickAutoFillButtonCallback)(WKPageRef page, WKTypeRef userData, const void *clientInfo);
     94typedef void (*WKPageMediaSessionMetadataDidChangeCallback)(WKPageRef page, WKMediaSessionMetadataRef metadata, const void* clientInfo);
    9495
    9596// Deprecated
     
    453454    WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
    454455    WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
     456    WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
    455457} WKPageUIClientV5;
    456458
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r186279 r186484  
    160160#endif
    161161
     162#if ENABLE(MEDIA_SESSION)
     163#include "WebMediaSessionMetadata.h"
     164#include <WebCore/MediaSessionMetadata.h>
     165#endif
     166
    162167// This controls what strategy we use for mouse wheel coalescing.
    163168#define MERGE_WHEEL_EVENTS 1
     
    58075812void WebPageProxy::mediaSessionMetadataDidChange(const WebCore::MediaSessionMetadata& metadata)
    58085813{
     5814    Ref<WebMediaSessionMetadata> webMetadata = WebMediaSessionMetadata::create(metadata);
     5815    m_uiClient->mediaSessionMetadataDidChange(*this, webMetadata.ptr());
    58095816}
    58105817#endif
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r186268 r186484  
    16601660                C5FA1ED318E1062200B3F402 /* WKAirPlayRoutePicker.h in Headers */ = {isa = PBXBuildFile; fileRef = C5FA1ED118E1062200B3F402 /* WKAirPlayRoutePicker.h */; };
    16611661                C5FA1ED418E1062200B3F402 /* WKAirPlayRoutePicker.mm in Sources */ = {isa = PBXBuildFile; fileRef = C5FA1ED218E1062200B3F402 /* WKAirPlayRoutePicker.mm */; };
     1662                C9CD43971B4B001900239E33 /* WebMediaSessionMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9CD43931B4B000E00239E33 /* WebMediaSessionMetadata.cpp */; };
     1663                C9CD43981B4B001D00239E33 /* WebMediaSessionMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CD43941B4B000E00239E33 /* WebMediaSessionMetadata.h */; };
     1664                C9CD439D1B4B024F00239E33 /* WKMediaSessionMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CD439A1B4B024200239E33 /* WKMediaSessionMetadata.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1665                C9CD439E1B4B025300239E33 /* WKMediaSessionMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9CD43991B4B024200239E33 /* WKMediaSessionMetadata.cpp */; };
    16621666                CD003A5219D49B5D005ABCE0 /* WebMediaKeyStorageManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD003A5019D49B5D005ABCE0 /* WebMediaKeyStorageManager.cpp */; };
    16631667                CD003A5319D49B5D005ABCE0 /* WebMediaKeyStorageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CD003A5119D49B5D005ABCE0 /* WebMediaKeyStorageManager.h */; };
     
    38803884                C5FA1ED118E1062200B3F402 /* WKAirPlayRoutePicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKAirPlayRoutePicker.h; path = ios/forms/WKAirPlayRoutePicker.h; sourceTree = "<group>"; };
    38813885                C5FA1ED218E1062200B3F402 /* WKAirPlayRoutePicker.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKAirPlayRoutePicker.mm; path = ios/forms/WKAirPlayRoutePicker.mm; sourceTree = "<group>"; };
     3886                C9CD43931B4B000E00239E33 /* WebMediaSessionMetadata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebMediaSessionMetadata.cpp; sourceTree = "<group>"; };
     3887                C9CD43941B4B000E00239E33 /* WebMediaSessionMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaSessionMetadata.h; sourceTree = "<group>"; };
     3888                C9CD43991B4B024200239E33 /* WKMediaSessionMetadata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKMediaSessionMetadata.cpp; sourceTree = "<group>"; };
     3889                C9CD439A1B4B024200239E33 /* WKMediaSessionMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKMediaSessionMetadata.h; sourceTree = "<group>"; };
    38823890                CD003A5019D49B5D005ABCE0 /* WebMediaKeyStorageManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebMediaKeyStorageManager.cpp; path = MediaCache/WebMediaKeyStorageManager.cpp; sourceTree = "<group>"; };
    38833891                CD003A5119D49B5D005ABCE0 /* WebMediaKeyStorageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebMediaKeyStorageManager.h; path = MediaCache/WebMediaKeyStorageManager.h; sourceTree = "<group>"; };
     
    47644772                                BC9BA5021697C45300E44616 /* WebKit2Initialize.cpp */,
    47654773                                BC9BA5031697C45300E44616 /* WebKit2Initialize.h */,
     4774                                C9CD43931B4B000E00239E33 /* WebMediaSessionMetadata.cpp */,
     4775                                C9CD43941B4B000E00239E33 /* WebMediaSessionMetadata.h */,
    47664776                                905620E812BC248B000799B6 /* WebMemorySampler.cpp */,
    47674777                                905620E912BC248B000799B6 /* WebMemorySampler.h */,
     
    63036313                                33D3A3B31339600B00709BE4 /* WKMediaCacheManager.cpp */,
    63046314                                33D3A3B41339600B00709BE4 /* WKMediaCacheManager.h */,
     6315                                C9CD43991B4B024200239E33 /* WKMediaSessionMetadata.cpp */,
     6316                                C9CD439A1B4B024200239E33 /* WKMediaSessionMetadata.h */,
    63056317                                C09AE5E8125257C20025825D /* WKNativeEvent.h */,
    63066318                                2D3A65D81A7C3A1F00CAC637 /* WKNavigationActionRef.cpp */,
     
    79687980                                33D3A3CB1339617900709BE4 /* WebMediaCacheManagerProxyMessages.h in Headers */,
    79697981                                CD003A5319D49B5D005ABCE0 /* WebMediaKeyStorageManager.h in Headers */,
     7982                                C9CD43981B4B001D00239E33 /* WebMediaSessionMetadata.h in Headers */,
    79707983                                2D3EF4431917646300034184 /* WebMemoryPressureHandlerIOS.h in Headers */,
    79717984                                909854ED12BC4E18000AD080 /* WebMemorySampler.h in Headers */,
     
    81858198                                2D790A9F1AD7164900AB90B3 /* WKLayoutMode.h in Headers */,
    81868199                                33D3A3B61339600B00709BE4 /* WKMediaCacheManager.h in Headers */,
     8200                                C9CD439D1B4B024F00239E33 /* WKMediaSessionMetadata.h in Headers */,
    81878201                                BC4075FE124FF0270068F20A /* WKMutableArray.h in Headers */,
    81888202                                BC407600124FF0270068F20A /* WKMutableDictionary.h in Headers */,
     
    97839797                                33D3A3CA1339617900709BE4 /* WebMediaCacheManagerProxyMessageReceiver.cpp in Sources */,
    97849798                                CD003A5219D49B5D005ABCE0 /* WebMediaKeyStorageManager.cpp in Sources */,
     9799                                C9CD43971B4B001900239E33 /* WebMediaSessionMetadata.cpp in Sources */,
    97859800                                2D3EF4421917646300034184 /* WebMemoryPressureHandlerIOS.mm in Sources */,
    97869801                                909854EC12BC4E17000AD080 /* WebMemorySampler.cpp in Sources */,
     
    99699984                                51A9E10A1315CD18009E7031 /* WKKeyValueStorageManager.cpp in Sources */,
    99709985                                33D3A3B51339600B00709BE4 /* WKMediaCacheManager.cpp in Sources */,
     9986                                C9CD439E1B4B025300239E33 /* WKMediaSessionMetadata.cpp in Sources */,
    99719987                                BC4075FD124FF0270068F20A /* WKMutableArray.cpp in Sources */,
    99729988                                BC4075FF124FF0270068F20A /* WKMutableDictionary.cpp in Sources */,
  • trunk/Tools/ChangeLog

    r186476 r186484  
     12015-07-06  Matt Rajca  <mrajca@apple.com>
     2
     3        Media Session: propagate metadata changes to UI clients
     4        https://bugs.webkit.org/show_bug.cgi?id=146660
     5
     6        Reviewed by Tim Horton.
     7
     8        * WebKitTestRunner/TestController.cpp: Build fixes for updated PageUIClient.
     9        (WTR::TestController::createOtherPage):
     10        (WTR::TestController::createWebViewWithOptions):
     11
    1122015-07-07  Brady Eidson  <beidson@apple.com>
    213
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r185915 r186484  
    264264        0, // runJavaScriptConfirm
    265265        0, // runJavaScriptPrompt
     266        0, // mediaSessionMetadataDidChange
    266267    };
    267268    WKPageSetPageUIClient(newPage, &otherPageUIClient.base);
     
    512513        0, // runJavaScriptConfirm
    513514        0, // runJavaScriptPrompt
     515        0, // mediaSessionMetadataDidChange
    514516    };
    515517    WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient.base);
Note: See TracChangeset for help on using the changeset viewer.