⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 181431 in webkit


Ignore:
Timestamp:
Mar 11, 2015, 11:05:34 PM (11 years ago)
Author:
bshafiei@apple.com
Message:

Merged r181423. rdar://problem/11903887

Location:
tags/Safari-601.1.22/Source
Files:
31 edited
5 copied

Legend:

Unmodified
Added
Removed
  • tags/Safari-601.1.22/Source/WebCore/ChangeLog

    r181394 r181431  
     12015-03-11  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r181423.
     4
     5    2015-03-11  Eric Carlson  <eric.carlson@apple.com>
     6
     7            [Mac] Update AirPlay handling
     8            https://bugs.webkit.org/show_bug.cgi?id=142541
     9
     10            Reviewed by Sam Weinig.
     11
     12            * WebCore.xcodeproj/project.pbxproj:
     13            * dom/Document.cpp:
     14            (WebCore::Document::showPlaybackTargetPicker):
     15            (WebCore::Document::addPlaybackTargetPickerClient):
     16            (WebCore::Document::removePlaybackTargetPickerClient):
     17            (WebCore::Document::configurePlaybackTargetMonitoring):
     18            (WebCore::Document::requiresPlaybackTargetRouteMonitoring):
     19            (WebCore::Document::playbackTargetAvailabilityDidChange):
     20            (WebCore::Document::didChoosePlaybackTarget):
     21            * dom/Document.h:
     22            * html/HTMLMediaElement.cpp:
     23            (WebCore::HTMLMediaElement::registerWithDocument):
     24            (WebCore::HTMLMediaElement::unregisterWithDocument):
     25            (WebCore::HTMLMediaElement::parseAttribute):
     26            * html/HTMLMediaElement.h:
     27            * html/HTMLMediaSession.cpp:
     28            (WebCore::HTMLMediaSession::HTMLMediaSession):
     29            (WebCore::HTMLMediaSession::registerWithDocument):
     30            (WebCore::HTMLMediaSession::unregisterWithDocument):
     31            (WebCore::HTMLMediaSession::showPlaybackTargetPicker):
     32            (WebCore::HTMLMediaSession::hasWirelessPlaybackTargets):
     33            (WebCore::HTMLMediaSession::setHasPlaybackTargetAvailabilityListeners):
     34            (WebCore::HTMLMediaSession::didChoosePlaybackTarget):
     35            (WebCore::HTMLMediaSession::externalOutputDeviceAvailableDidChange):
     36            (WebCore::HTMLMediaSession::requiresPlaybackTargetRouteMonitoring):
     37            * html/HTMLMediaSession.h:
     38            * page/ChromeClient.h:
     39            * page/Page.cpp:
     40            (WebCore::Page::didChoosePlaybackTarget):
     41            (WebCore::Page::playbackTargetAvailabilityDidChange):
     42            (WebCore::Page::configurePlaybackTargetMonitoring):
     43            * page/Page.h:
     44            (WebCore::Page::hasWirelessPlaybackTarget):
     45            (WebCore::Page::playbackTarget):
     46            * platform/audio/MediaSession.cpp:
     47            (WebCore::MediaSession::clientDataBufferingTimerFired):
     48            (WebCore::MediaSession::wirelessRoutesAvailableDidChange): Deleted.
     49            * platform/audio/MediaSession.h:
     50            (WebCore::MediaSession::didChoosePlaybackTarget):
     51            (WebCore::MediaSession::externalOutputDeviceAvailableDidChange):
     52            (WebCore::MediaSession::requiresPlaybackTargetRouteMonitoring):
     53            (WebCore::MediaSessionClient::setWirelessPlaybackTarget):
     54            * platform/audio/MediaSessionManager.cpp:
     55            (WebCore::MediaSessionManager::wirelessRoutesAvailableChanged): Deleted.
     56            * platform/audio/MediaSessionManager.h:
     57            (WebCore::MediaSessionManager::configureWireLessTargetMonitoring):
     58            * platform/audio/ios/MediaSessionManagerIOS.h:
     59            * platform/audio/ios/MediaSessionManagerIOS.mm:
     60            (WebCore::MediaSessionManageriOS::externalOutputDeviceAvailableDidChange):
     61            (-[WebMediaSessionHelper wirelessRoutesAvailableDidChange:]):
     62            * platform/graphics/AVPlaybackTarget.h: Added.
     63            (WebCore::AVPlaybackTarget::~AVPlaybackTarget):
     64            (WebCore::AVPlaybackTarget::AVPlaybackTarget):
     65            (WebCore::AVPlaybackTarget::setDevicePickerContext):
     66            (WebCore::AVPlaybackTarget::devicePickerContext):
     67            * platform/graphics/AVPlaybackTargetPickerClient.h: Added.
     68            (WebCore::AVPlaybackTargetPickerClient::~AVPlaybackTargetPickerClient):
     69            * platform/graphics/MediaPlayer.cpp:
     70            (WebCore::MediaPlayer::setWirelessPlaybackTarget):
     71            * platform/graphics/MediaPlayer.h:
     72            * platform/graphics/MediaPlayerPrivate.h:
     73            (WebCore::MediaPlayerPrivateInterface::setWirelessPlaybackTarget):
     74            * platform/graphics/avfoundation/AVPlaybackTargetMac.mm: Added.
     75            (WebCore::AVPlaybackTarget::encode):
     76            (WebCore::AVPlaybackTarget::decode):
     77            * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
     78            * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
     79            (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
     80            (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
     81            (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
     82            (WebCore::MediaPlayerPrivateAVFoundationObjC::isCurrentPlaybackTargetWireless):
     83            (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetType):
     84            (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessVideoPlaybackDisabled):
     85            (WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessVideoPlaybackDisabled):
     86            (WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget):
     87            (WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback):
     88            (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
     89
    1902015-03-11  Babak Shafiei  <bshafiei@apple.com>
    291
  • tags/Safari-601.1.22/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r181317 r181431  
    176176                0753860214489E9800B78452 /* CachedTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0753860014489E9800B78452 /* CachedTextTrack.cpp */; };
    177177                0753860314489E9800B78452 /* CachedTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 0753860114489E9800B78452 /* CachedTextTrack.h */; };
     178                0760C17A1AA8FC7D009ED7B8 /* MediaPlaybackTargetMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */; };
    178179                076306D017E1478D005A7C4E /* MediaStreamTrackSourcesCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 076306CC17E1478D005A7C4E /* MediaStreamTrackSourcesCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
    179180                076306D217E1478D005A7C4E /* MediaStreamTrackSourcesRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 076306CE17E1478D005A7C4E /* MediaStreamTrackSourcesRequest.cpp */; };
     
    274275                078E094B17D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 078E094817D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp */; };
    275276                078E094C17D1709600420AA1 /* MediaStreamAudioDestinationNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 078E094917D1709600420AA1 /* MediaStreamAudioDestinationNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
     277                079216551AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 079216531AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
    276278                07941791166E855F009416C2 /* InbandTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0794178F166E855F009416C2 /* InbandTextTrack.cpp */; };
    277279                07941792166E855F009416C2 /* InbandTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 07941790166E855F009416C2 /* InbandTextTrack.h */; };
     
    345347                07E116B11489C9A100EC5ACE /* JSTextTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */; };
    346348                07E117071489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */; };
     349                07E3DFD11A9E786500764CA8 /* MediaPlaybackTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 07E3DFD01A9E786500764CA8 /* MediaPlaybackTarget.h */; settings = {ATTRIBUTES = (Private, ); }; };
    347350                07E9E12E18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h in Headers */ = {isa = PBXBuildFile; fileRef = 07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */; };
    348351                07E9E13018F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */; };
     352                07EDC3EE1AACB75D00983EB5 /* MediaSessionManagerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07EDC3ED1AACB75D00983EB5 /* MediaSessionManagerMac.cpp */; };
    349353                07F944161864D046005D31CB /* MediaSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CDAE8C081746B95700532D78 /* MediaSessionManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
    350354                07FBDE2C18FED178001A7CFF /* JSDataCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */; };
     
    56845688                CD54A762180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54A760180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp */; };
    56855689                CD54A763180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = CD54A761180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h */; };
    5686                 CD54DE4717468B6F005E5B36 /* MediaSessionManagerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4517468B6F005E5B36 /* MediaSessionManagerMac.cpp */; };
    56875690                CD54DE4B17469C6D005E5B36 /* AudioSessionMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */; };
    56885691                CD5596911475B678001D0BD0 /* AudioFileReaderIOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD55968F1475B678001D0BD0 /* AudioFileReaderIOS.cpp */; };
     
    72687271                078E094917D1709600420AA1 /* MediaStreamAudioDestinationNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamAudioDestinationNode.h; sourceTree = "<group>"; };
    72697272                078E094A17D1709600420AA1 /* MediaStreamAudioDestinationNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaStreamAudioDestinationNode.idl; sourceTree = "<group>"; };
     7273                079216531AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlaybackTargetPickerClient.h; path = graphics/MediaPlaybackTargetPickerClient.h; sourceTree = "<group>"; };
    72707274                0794178F166E855F009416C2 /* InbandTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandTextTrack.cpp; sourceTree = "<group>"; };
    72717275                07941790166E855F009416C2 /* InbandTextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandTextTrack.h; sourceTree = "<group>"; };
     
    73487352                07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCustom.cpp; sourceTree = "<group>"; };
    73497353                07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueCustom.cpp; sourceTree = "<group>"; };
     7354                07E3DFD01A9E786500764CA8 /* MediaPlaybackTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlaybackTarget.h; sourceTree = "<group>"; };
     7355                07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MediaPlaybackTargetMac.mm; path = platform/graphics/avfoundation/MediaPlaybackTargetMac.mm; sourceTree = SOURCE_ROOT; };
    73507356                07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandMetadataTextTrackPrivateAVF.h; sourceTree = "<group>"; };
    73517357                07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandMetadataTextTrackPrivateAVF.cpp; sourceTree = "<group>"; };
     7358                07EDC3ED1AACB75D00983EB5 /* MediaSessionManagerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSessionManagerMac.cpp; sourceTree = "<group>"; };
    73527359                07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDataCueCustom.cpp; sourceTree = "<group>"; };
    73537360                07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaSession.cpp; sourceTree = "<group>"; };
     
    1318713194                CD54A760180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioTrackPrivateMediaSourceAVFObjC.cpp; path = objc/AudioTrackPrivateMediaSourceAVFObjC.cpp; sourceTree = "<group>"; };
    1318813195                CD54A761180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioTrackPrivateMediaSourceAVFObjC.h; path = objc/AudioTrackPrivateMediaSourceAVFObjC.h; sourceTree = "<group>"; };
    13189                 CD54DE4517468B6F005E5B36 /* MediaSessionManagerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSessionManagerMac.cpp; sourceTree = "<group>"; };
    1319013196                CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionMac.cpp; sourceTree = "<group>"; };
    1319113197                CD55968F1475B678001D0BD0 /* AudioFileReaderIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioFileReaderIOS.cpp; path = ios/AudioFileReaderIOS.cpp; sourceTree = "<group>"; };
     
    2055020556                        isa = PBXGroup;
    2055120557                        children = (
     20558                                07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */,
    2055220559                                EDE3A4FF0C7A430600956A37 /* ColorMac.h */,
    2055320560                                B275354A0B053814002CE64F /* ColorMac.mm */,
     
    2060020607                                3721493318F0B6D600156EDC /* opentype */,
    2060120608                                49E911B20EF86D27009D0CAF /* transforms */,
     20609                                07E3DFD01A9E786500764CA8 /* MediaPlaybackTarget.h */,
    2060220610                                490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */,
    2060320611                                490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */,
     
    2151821526                        isa = PBXGroup;
    2151921527                        children = (
     21528                                079216531AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h */,
    2152021529                                49E912A40EFAC8E6009D0CAF /* animation */,
    2152121530                                FD31604012B026A300C1A359 /* audio */,
     
    2340823417                        isa = PBXGroup;
    2340923418                        children = (
     23419                                07EDC3ED1AACB75D00983EB5 /* MediaSessionManagerMac.cpp */,
    2341023420                                FD3160B512B0272A00C1A359 /* AudioBusMac.mm */,
    2341123421                                FD3160B612B0272A00C1A359 /* AudioDestinationMac.cpp */,
     
    2341923429                                CDC734131977896C0046BFC5 /* CARingBuffer.h */,
    2342023430                                FD3160BA12B0272A00C1A359 /* FFTFrameMac.cpp */,
    23421                                 CD54DE4517468B6F005E5B36 /* MediaSessionManagerMac.cpp */,
    2342223431                        );
    2342323432                        path = mac;
     
    2372423733                                319FBD5F15D2F464009640A6 /* CachedImageClient.h in Headers */,
    2372523734                                510184690B08602A004A825F /* CachedPage.h in Headers */,
     23735                                07E3DFD11A9E786500764CA8 /* MediaPlaybackTarget.h in Headers */,
    2372623736                                D0EDA775143E303C0028E383 /* CachedRawResource.h in Headers */,
    2372723737                                E1B533491717DEE300F205F9 /* CachedRawResourceClient.h in Headers */,
     
    2618926199                                93C38BFF164473C700091EB2 /* ScrollingStateFixedNode.h in Headers */,
    2619026200                                0FEA3E7B191B2FC5000F1B55 /* ScrollingStateFrameScrollingNode.h in Headers */,
     26201                                079216551AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h in Headers */,
    2619126202                                931CBD0D161A44E900E4C874 /* ScrollingStateNode.h in Headers */,
    2619226203                                0FEA3E84191B31BF000F1B55 /* ScrollingStateOverflowScrollingNode.h in Headers */,
     
    2736127372                                FD315FFB12B0267600C1A359 /* AudioBufferSourceNode.cpp in Sources */,
    2736227373                                FD31607B12B026F700C1A359 /* AudioBus.cpp in Sources */,
     27374                                07EDC3EE1AACB75D00983EB5 /* MediaSessionManagerMac.cpp in Sources */,
    2736327375                                FD3160BB12B0272A00C1A359 /* AudioBusMac.mm in Sources */,
    2736427376                                FD31607D12B026F700C1A359 /* AudioChannel.cpp in Sources */,
     
    2794127953                                4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */,
    2794227954                                93A38B4B0D0E5808006872C2 /* EditorCommand.cpp in Sources */,
     27955                                0760C17A1AA8FC7D009ED7B8 /* MediaPlaybackTargetMac.mm in Sources */,
    2794327956                                FED13D3A0CEA934600D89466 /* EditorIOS.mm in Sources */,
    2794427957                                ED501DC60B249F2900AE18D9 /* EditorMac.mm in Sources */,
     
    2916329176                                CDAE8C091746B95700532D78 /* MediaSessionManager.cpp in Sources */,
    2916429177                                07638A9A1884487200E15A1B /* MediaSessionManagerIOS.mm in Sources */,
    29165                                 CD54DE4717468B6F005E5B36 /* MediaSessionManagerMac.cpp in Sources */,
    2916629178                                CD3A495E17A9D01B00274E42 /* MediaSource.cpp in Sources */,
    2916729179                                CDC8B5A6180474F70016E685 /* MediaSourcePrivateAVFObjC.mm in Sources */,
  • tags/Safari-601.1.22/Source/WebCore/dom/Document.cpp

    r181133 r181431  
    229229#endif
    230230
     231#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     232#include "HTMLVideoElement.h"
     233#endif
     234
    231235using namespace WTF;
    232236using namespace Unicode;
     
    63556359#endif
    63566360
     6361#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     6362void Document::showPlaybackTargetPicker(const HTMLMediaElement& element)
     6363{
     6364    Page* page = this->page();
     6365    if (!page)
     6366        return;
     6367
     6368    page->showPlaybackTargetPicker(this, view()->lastKnownMousePosition(), is<HTMLVideoElement>(element));
     6369}
     6370
     6371void Document::addPlaybackTargetPickerClient(MediaPlaybackTargetPickerClient& client)
     6372{
     6373    Page* page = this->page();
     6374    if (!page)
     6375        return;
     6376
     6377    m_playbackTargetClients.add(&client);
     6378
     6379    client.didChoosePlaybackTarget(page->playbackTarget());
     6380    client.externalOutputDeviceAvailableDidChange(page->hasWirelessPlaybackTarget());
     6381}
     6382
     6383void Document::removePlaybackTargetPickerClient(MediaPlaybackTargetPickerClient& client)
     6384{
     6385    m_playbackTargetClients.remove(&client);
     6386    configurePlaybackTargetMonitoring();
     6387}
     6388
     6389void Document::configurePlaybackTargetMonitoring()
     6390{
     6391    Page* page = this->page();
     6392    if (!page)
     6393        return;
     6394
     6395    page->configurePlaybackTargetMonitoring();
     6396}
     6397
     6398bool Document::requiresPlaybackTargetRouteMonitoring()
     6399{
     6400    for (auto* client : m_playbackTargetClients) {
     6401        if (client->requiresPlaybackTargetRouteMonitoring()) {
     6402            return true;
     6403            break;
     6404        }
     6405    }
     6406
     6407    return false;
     6408}
     6409
     6410void Document::playbackTargetAvailabilityDidChange(bool available)
     6411{
     6412    if (m_playbackTargetsAvailable == available)
     6413        return;
     6414    m_playbackTargetsAvailable = available;
     6415
     6416    for (auto* client : m_playbackTargetClients)
     6417        client->externalOutputDeviceAvailableDidChange(available);
     6418}
     6419
     6420void Document::didChoosePlaybackTarget(MediaPlaybackTarget& device)
     6421{
     6422    MediaPlaybackTargetPickerClient* clientThatRequestedPicker = nullptr;
     6423
     6424    for (auto* client : m_playbackTargetClients) {
     6425        if (client->requestedPlaybackTargetPicker()) {
     6426            clientThatRequestedPicker = client;
     6427            continue;
     6428        }
     6429
     6430        client->didChoosePlaybackTarget(device);
     6431    }
     6432
     6433    if (clientThatRequestedPicker)
     6434        clientThatRequestedPicker->didChoosePlaybackTarget(device);
     6435}
     6436
     6437#endif
     6438
    63576439} // namespace WebCore
  • tags/Safari-601.1.22/Source/WebCore/dom/Document.h

    r181169 r181431  
    125125class Locale;
    126126class MediaCanStartListener;
     127class MediaPlaybackTarget;
     128class MediaPlaybackTargetPickerClient;
    127129class MediaQueryList;
    128130class MediaQueryMatcher;
     
    12151217    WeakPtr<Document> createWeakPtr() { return m_weakFactory.createWeakPtr(); }
    12161218
     1219#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     1220    void showPlaybackTargetPicker(const HTMLMediaElement&);
     1221    void didChoosePlaybackTarget(MediaPlaybackTarget&);
     1222    void addPlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&);
     1223    void removePlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&);
     1224    bool requiresPlaybackTargetRouteMonitoring();
     1225    void configurePlaybackTargetMonitoring();
     1226    void playbackTargetAvailabilityDidChange(bool);
     1227#endif
     1228
    12171229protected:
    12181230    enum ConstructionFlags { Synthesized = 1, NonRenderedPlaceholder = 1 << 1 };
     
    16521664    HashSet<AudioProducer*> m_audioProducers;
    16531665    bool m_isPlayingAudio;
     1666
     1667#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     1668    HashSet<WebCore::MediaPlaybackTargetPickerClient*> m_playbackTargetClients;
     1669    bool m_playbackTargetsAvailable { false };
     1670#endif
    16541671};
    16551672
  • tags/Safari-601.1.22/Source/WebCore/html/HTMLMediaElement.cpp

    r181358 r181431  
    427427void HTMLMediaElement::registerWithDocument(Document& document)
    428428{
     429    m_mediaSession->registerWithDocument(document);
     430
    429431    if (m_isWaitingUntilMediaCanStart)
    430432        document.addMediaCanStartListener(this);
     
    452454void HTMLMediaElement::unregisterWithDocument(Document& document)
    453455{
     456    m_mediaSession->unregisterWithDocument(document);
     457
    454458    if (m_isWaitingUntilMediaCanStart)
    455459        document.removeMediaCanStartListener(this);
     
    24692473void HTMLMediaElement::invalidateCachedTime() const
    24702474{
     2475    if (!m_player->maximumDurationToCacheMediaTime())
     2476        return;
     2477
    24712478#if !LOG_DISABLED
    24722479    if (m_cachedTime.isValid())
     
    48544861    m_asyncEventQueue.enqueueEvent(event.release());
    48554862}
     4863
     4864void HTMLMediaElement::setWirelessPlaybackTarget(const MediaPlaybackTarget& device)
     4865{
     4866    LOG(Media, "HTMLMediaElement::setWirelessPlaybackTarget(%p)", this);
     4867    if (m_player)
     4868        m_player->setWirelessPlaybackTarget(device);
     4869}
    48564870#endif
    48574871
  • tags/Safari-601.1.22/Source/WebCore/html/HTMLMediaElement.h

    r181259 r181431  
    11/*
    2  * Copyright (C) 2007-2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2007-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    358358    virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture) override;
    359359    virtual bool removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture) override;
     360
    360361    virtual void wirelessRoutesAvailableDidChange() override;
     362    virtual void setWirelessPlaybackTarget(const MediaPlaybackTarget&) override;
    361363#endif
    362364
  • tags/Safari-601.1.22/Source/WebCore/html/HTMLMediaSession.cpp

    r180717 r181431  
    3232#include "Chrome.h"
    3333#include "ChromeClient.h"
     34#include "Document.h"
    3435#include "Frame.h"
     36#include "FrameView.h"
    3537#include "HTMLMediaElement.h"
    3638#include "HTMLNames.h"
     
    7375    : MediaSession(client)
    7476    , m_restrictions(NoRestrictions)
    75     , m_hasPlaybackTargetAvailabilityListeners(false)
    76 {
     77#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     78    , m_targetAvailabilityChangedTimer(*this, &HTMLMediaSession::targetAvailabilityChangedTimerFired)
     79#endif
     80{
     81}
     82
     83void HTMLMediaSession::registerWithDocument(Document& document)
     84{
     85#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     86    document.addPlaybackTargetPickerClient(*this);
     87#else
     88    UNUSED_PARAM(document);
     89#endif
     90}
     91
     92void HTMLMediaSession::unregisterWithDocument(Document& document)
     93{
     94#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     95    document.removePlaybackTargetPickerClient(*this);
     96#else
     97    UNUSED_PARAM(document);
     98#endif
    7799}
    78100
     
    178200        return;
    179201
    180 #if PLATFORM(IOS)
    181     element.document().frame()->page()->chrome().client().showPlaybackTargetPicker(element.hasVideo());
    182 #endif
    183 }
    184 
    185 bool HTMLMediaSession::hasWirelessPlaybackTargets(const HTMLMediaElement& element) const
    186 {
    187     UNUSED_PARAM(element);
    188 
    189     bool hasTargets = MediaSessionManager::sharedManager().hasWirelessTargetsAvailable();
    190     LOG(Media, "HTMLMediaSession::hasWirelessPlaybackTargets - returning %s", hasTargets ? "TRUE" : "FALSE");
    191 
    192     return hasTargets;
     202    m_haveRequestedPlaybackTargetPicker = true;
     203    element.document().showPlaybackTargetPicker(element);
     204}
     205
     206bool HTMLMediaSession::hasWirelessPlaybackTargets(const HTMLMediaElement&) const
     207{
     208#if PLATFORM(IOS)
     209    // FIXME: consolidate Mac and iOS implementations
     210    m_hasPlaybackTargets = MediaSessionManager::sharedManager().hasWirelessTargetsAvailable();
     211#endif
     212
     213    LOG(Media, "HTMLMediaSession::hasWirelessPlaybackTargets - returning %s", m_hasPlaybackTargets ? "TRUE" : "FALSE");
     214
     215    return m_hasPlaybackTargets;
    193216}
    194217
     
    245268
    246269    m_hasPlaybackTargetAvailabilityListeners = hasListeners;
     270
     271#if PLATFORM(IOS)
    247272    MediaSessionManager::sharedManager().configureWireLessTargetMonitoring();
     273#else
     274    element.document().configurePlaybackTargetMonitoring();
     275#endif
     276}
     277
     278void HTMLMediaSession::didChoosePlaybackTarget(MediaPlaybackTarget& device)
     279{
     280    m_haveRequestedPlaybackTargetPicker = false;
     281    client().setWirelessPlaybackTarget(device);
     282}
     283
     284void HTMLMediaSession::targetAvailabilityChangedTimerFired()
     285{
     286    client().wirelessRoutesAvailableDidChange();
     287}
     288
     289void HTMLMediaSession::externalOutputDeviceAvailableDidChange(bool hasTargets) const
     290{
     291    if (m_hasPlaybackTargets == hasTargets)
     292        return;
     293
     294    m_hasPlaybackTargets = hasTargets;
     295    if (!m_targetAvailabilityChangedTimer.isActive())
     296        m_targetAvailabilityChangedTimer.startOneShot(0);
     297}
     298
     299bool HTMLMediaSession::requiresPlaybackTargetRouteMonitoring() const
     300{
     301    return m_hasPlaybackTargetAvailabilityListeners;
    248302}
    249303#endif
  • tags/Safari-601.1.22/Source/WebCore/html/HTMLMediaSession.h

    r180717 r181431  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3131#include "MediaPlayer.h"
    3232#include "MediaSession.h"
     33#include "Timer.h"
    3334
    3435namespace WebCore {
    3536
     37class Document;
    3638class HTMLMediaElement;
    3739class SourceBuffer;
     
    4244    virtual ~HTMLMediaSession() { }
    4345
     46    void registerWithDocument(Document&);
     47    void unregisterWithDocument(Document&);
     48
    4449    bool playbackPermitted(const HTMLMediaElement&) const;
    4550    bool dataLoadingPermitted(const HTMLMediaElement&) const;
     
    4752    bool pageAllowsDataLoading(const HTMLMediaElement&) const;
    4853    bool pageAllowsPlaybackAfterResuming(const HTMLMediaElement&) const;
     54
    4955#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    5056    bool showingPlaybackTargetPickerPermitted(const HTMLMediaElement&) const;
    51 
    5257    bool currentPlaybackTargetIsWireless(const HTMLMediaElement&) const;
    5358    void showPlaybackTargetPicker(const HTMLMediaElement&);
     
    5964    void setHasPlaybackTargetAvailabilityListeners(const HTMLMediaElement&, bool);
    6065#endif
     66
    6167    bool requiresFullscreenForVideoPlayback(const HTMLMediaElement&) const;
    6268    WEBCORE_EXPORT bool allowsAlternateFullscreen(const HTMLMediaElement&) const;
     
    8894
    8995private:
    90     virtual bool requiresPlaybackTargetRouteMonitoring() const override { return m_hasPlaybackTargetAvailabilityListeners; }
     96
     97#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     98    void targetAvailabilityChangedTimerFired();
     99
     100    // MediaPlaybackTargetPickerClient
     101    virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) override;
     102    virtual void externalOutputDeviceAvailableDidChange(bool) const override;
     103    virtual bool requiresPlaybackTargetRouteMonitoring() const override;
     104    virtual bool requestedPlaybackTargetPicker() const override { return m_haveRequestedPlaybackTargetPicker; }
     105#endif
    91106
    92107    BehaviorRestrictions m_restrictions;
    93     bool m_hasPlaybackTargetAvailabilityListeners;
     108
     109#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     110    mutable Timer m_targetAvailabilityChangedTimer;
     111    bool m_hasPlaybackTargetAvailabilityListeners { false };
     112    mutable bool m_hasPlaybackTargets { false };
     113    mutable bool m_haveRequestedPlaybackTargetPicker { false };
     114#endif
    94115};
    95116
  • tags/Safari-601.1.22/Source/WebCore/page/ChromeClient.h

    r180607 r181431  
    446446    virtual bool shouldDispatchFakeMouseMoveEvents() const { return true; }
    447447
     448#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     449    virtual void showPlaybackTargetPicker(const WebCore::IntPoint&, bool) { }
     450    virtual void startingMonitoringPlaybackTargets() { }
     451    virtual void stopMonitoringPlaybackTargets() { }
     452#endif
     453
    448454protected:
    449455    virtual ~ChromeClient() { }
  • tags/Safari-601.1.22/Source/WebCore/page/Page.cpp

    r180653 r181431  
    105105#endif
    106106
     107#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     108#include "HTMLVideoElement.h"
     109#include "MediaPlaybackTarget.h"
     110#include "MediaPlaybackTargetPickerClient.h"
     111#endif
     112
    107113namespace WebCore {
    108114
     
    16921698}
    16931699
     1700#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     1701void Page::showPlaybackTargetPicker(Document* document, const WebCore::IntPoint& location, bool isVideo)
     1702{
     1703
     1704    m_documentRequestingPlaybackTargetPicker = document;
     1705#if PLATFORM(IOS)
     1706    // FIXME: refactor iOS implementation.
     1707    UNUSED_PARAM(location);
     1708    chrome().client().showPlaybackTargetPicker(isVideo);
     1709#else
     1710    chrome().client().showPlaybackTargetPicker(location, isVideo);
     1711#endif
     1712}
     1713
     1714void Page::didChoosePlaybackTarget(MediaPlaybackTarget& target)
     1715{
     1716    Document* documentThatRequestedPicker = nullptr;
     1717
     1718    m_playbackTarget = std::make_unique<MediaPlaybackTarget>(target.devicePickerContext());
     1719    for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
     1720        Document* document = frame->document();
     1721        if (frame->document() == m_documentRequestingPlaybackTargetPicker) {
     1722            documentThatRequestedPicker = document;
     1723            continue;
     1724        }
     1725        frame->document()->didChoosePlaybackTarget(target);
     1726    }
     1727
     1728    if (documentThatRequestedPicker)
     1729        documentThatRequestedPicker->didChoosePlaybackTarget(target);
     1730
     1731    m_documentRequestingPlaybackTargetPicker = nullptr;
     1732}
     1733
     1734void Page::playbackTargetAvailabilityDidChange(bool available)
     1735{
     1736    m_hasWirelessPlaybackTarget = available;
     1737    for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext())
     1738        frame->document()->playbackTargetAvailabilityDidChange(available);
     1739}
     1740
     1741void Page::configurePlaybackTargetMonitoring()
     1742{
     1743    bool monitoringRequired = false;
     1744    for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
     1745        if (frame->document()->requiresPlaybackTargetRouteMonitoring()) {
     1746            monitoringRequired = true;
     1747            break;
     1748        }
     1749    }
     1750
     1751    if (m_requiresPlaybackTargetMonitoring == monitoringRequired)
     1752        return;
     1753    m_requiresPlaybackTargetMonitoring = monitoringRequired;
     1754
     1755
     1756    if (monitoringRequired)
     1757        chrome().client().startingMonitoringPlaybackTargets();
     1758    else
     1759        chrome().client().stopMonitoringPlaybackTargets();
     1760}
     1761#endif
     1762
    16941763} // namespace WebCore
  • tags/Safari-601.1.22/Source/WebCore/page/Page.h

    r180301 r181431  
    7777class FrameLoaderClient;
    7878class HistoryItem;
     79class HTMLMediaElement;
    7980class UserInputBridge;
    8081class InspectorClient;
     
    8283class MainFrame;
    8384class MediaCanStartListener;
     85class MediaPlaybackTarget;
    8486class PageConfiguration;
    8587class PageConsoleClient;
     
    423425    WEBCORE_EXPORT void setMuted(bool);
    424426
     427#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     428    void showPlaybackTargetPicker(Document*, const WebCore::IntPoint&, bool);
     429    bool hasWirelessPlaybackTarget() const { return m_hasWirelessPlaybackTarget; }
     430    MediaPlaybackTarget& playbackTarget() const { return *m_playbackTarget.get(); }
     431    void configurePlaybackTargetMonitoring();
     432
     433    WEBCORE_EXPORT void didChoosePlaybackTarget(MediaPlaybackTarget&);
     434    WEBCORE_EXPORT void playbackTargetAvailabilityDidChange(bool);
     435#endif
     436
    425437private:
    426438    WEBCORE_EXPORT void initGroup();
     
    582594    SessionID m_sessionID;
    583595
     596#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     597    Document* m_documentRequestingPlaybackTargetPicker { nullptr };
     598    std::unique_ptr<MediaPlaybackTarget> m_playbackTarget;
     599    bool m_requiresPlaybackTargetMonitoring { false };
     600    bool m_hasWirelessPlaybackTarget { false };
     601#endif
     602
    584603    bool m_isClosing;
    585604
  • tags/Safari-601.1.22/Source/WebCore/platform/audio/MediaSession.cpp

    r180274 r181431  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    191191void MediaSession::clientDataBufferingTimerFired()
    192192{
    193     LOG(Media, "MediaSession::visibilityChanged(%p)- visible = %s", this, m_client.elementIsHidden() ? "false" : "true");
     193    LOG(Media, "MediaSession::clientDataBufferingTimerFired(%p)- visible = %s", this, m_client.elementIsHidden() ? "false" : "true");
    194194
    195195    updateClientDataBuffering();
     
    221221}
    222222
    223 void MediaSession::wirelessRoutesAvailableDidChange() const
    224 {
    225     m_client.wirelessRoutesAvailableDidChange();
    226 }
    227 
    228223String MediaSessionClient::mediaSessionTitle() const
    229224{
  • tags/Safari-601.1.22/Source/WebCore/platform/audio/MediaSession.h

    r179869 r181431  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3131#include <wtf/text/WTFString.h>
    3232
     33#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     34#include "MediaPlaybackTargetPickerClient.h"
     35#endif
     36
    3337namespace WebCore {
    3438
     39class MediaPlaybackTarget;
    3540class MediaSessionClient;
    3641
    37 class MediaSession {
     42class MediaSession
     43#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     44    : public MediaPlaybackTargetPickerClient
     45#endif
     46{
    3847public:
    3948    static std::unique_ptr<MediaSession> create(MediaSessionClient&);
     
    100109    void didReceiveRemoteControlCommand(RemoteControlCommandType);
    101110
    102     virtual bool requiresPlaybackTargetRouteMonitoring() const { return false; }
    103     void wirelessRoutesAvailableDidChange() const;
    104 
    105111    enum DisplayType {
    106112        Normal,
     
    111117
    112118    bool isHidden() const;
     119
     120#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     121    // MediaPlaybackTargetPickerClient
     122    virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) override { }
     123    virtual void externalOutputDeviceAvailableDidChange(bool) const override { }
     124    virtual bool requiresPlaybackTargetRouteMonitoring() const override { return false; }
     125    virtual bool requestedPlaybackTargetPicker() const override { return false; }
     126#endif
    113127
    114128protected:
     
    151165    virtual bool overrideBackgroundPlaybackRestriction() const = 0;
    152166
     167#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    153168    virtual void wirelessRoutesAvailableDidChange() { }
     169    virtual void setWirelessPlaybackTarget(const MediaPlaybackTarget&) { }
     170#endif
    154171
    155172protected:
  • tags/Safari-601.1.22/Source/WebCore/platform/audio/MediaSessionManager.cpp

    r180274 r181431  
    11/*
    2  * Copyright (C) 2013-2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    286286}
    287287
    288 void MediaSessionManager::wirelessRoutesAvailableChanged()
    289 {
    290     LOG(Media, "MediaSessionManager::wirelessRoutesAvailableChanged");
    291     Vector<MediaSession*> sessions = m_sessions;
    292     for (auto* session : sessions)
    293         session->wirelessRoutesAvailableDidChange();
    294 }
    295 
    296288#if !PLATFORM(COCOA)
    297289void MediaSessionManager::updateSessionState()
  • tags/Safari-601.1.22/Source/WebCore/platform/audio/MediaSessionManager.h

    r180416 r181431  
    11/*
    2  * Copyright (C) 2013-2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    5555    WEBCORE_EXPORT void applicationWillEnterForeground() const;
    5656    WEBCORE_EXPORT void applicationWillEnterBackground() const;
    57     void wirelessRoutesAvailableChanged();
    5857
    5958    enum SessionRestrictionFlags {
     
    8079    virtual bool sessionCanLoadMedia(const MediaSession&) const;
    8180
     81#if PLATFORM(IOS)
    8282    virtual void configureWireLessTargetMonitoring() { }
    83 
    84 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
    8583    virtual bool hasWirelessTargetsAvailable() { return false; }
    8684#endif
  • tags/Safari-601.1.22/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h

    r180416 r181431  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    4646    virtual ~MediaSessionManageriOS();
    4747
     48    void externalOutputDeviceAvailableDidChange();
     49    virtual bool hasWirelessTargetsAvailable() override;
     50
    4851private:
    4952    friend class MediaSessionManager;
     53
     54    MediaSessionManageriOS();
    5055
    5156    virtual void sessionWillBeginPlayback(MediaSession&) override;
     
    5661    virtual void resetRestrictions() override;
    5762
    58 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
    59     virtual bool hasWirelessTargetsAvailable() override;
    6063    virtual void configureWireLessTargetMonitoring() override;
    61 #endif
    6264
    6365    virtual bool sessionCanLoadMedia(const MediaSession&) const override;
    64 
    65     MediaSessionManageriOS();
     66   
    6667    RetainPtr<WebMediaSessionHelper> m_objcObserver;
    6768};
  • tags/Safari-601.1.22/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm

    r180416 r181431  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    160160}
    161161
    162 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
    163162bool MediaSessionManageriOS::hasWirelessTargetsAvailable()
    164163{
     
    185184        [m_objcObserver stopMonitoringAirPlayRoutes];
    186185}
    187 #endif
    188    
     186
    189187void MediaSessionManageriOS::sessionWillBeginPlayback(MediaSession& session)
    190188{
     
    232230{
    233231    return session.state() == MediaSession::Playing || !session.isHidden() || session.displayType() == MediaSession::Optimized;
     232}
     233
     234void MediaSessionManageriOS::externalOutputDeviceAvailableDidChange()
     235{
     236    Vector<MediaSession*> sessionList = sessions();
     237    bool haveTargets = [m_objcObserver hasWirelessTargetsAvailable];
     238    for (auto* session : sessionList)
     239        session->externalOutputDeviceAvailableDidChange(haveTargets);
    234240}
    235241
     
    446452            return;
    447453
    448         _callback->wirelessRoutesAvailableChanged();
     454        _callback->externalOutputDeviceAvailableDidChange();
    449455    });
    450456}
  • tags/Safari-601.1.22/Source/WebCore/platform/graphics/MediaPlayer.cpp

    r181153 r181431  
    868868    m_client.mediaPlayerCurrentPlaybackTargetIsWirelessChanged(this);
    869869}
     870
     871void MediaPlayer::setWirelessPlaybackTarget(const MediaPlaybackTarget& device)
     872{
     873    m_private->setWirelessPlaybackTarget(device);
     874}
    870875#endif
    871876
  • tags/Safari-601.1.22/Source/WebCore/platform/graphics/MediaPlayer.h

    r181153 r181431  
    7272class AudioSourceProvider;
    7373class AuthenticationChallenge;
     74class MediaPlaybackTarget;
    7475#if ENABLE(MEDIA_SOURCE)
    7576class MediaSourcePrivateClient;
     
    477478    void currentPlaybackTargetIsWirelessChanged();
    478479    void playbackTargetAvailabilityChanged();
     480
     481    void setWirelessPlaybackTarget(const MediaPlaybackTarget&);
    479482#endif
    480483
  • tags/Safari-601.1.22/Source/WebCore/platform/graphics/MediaPlayerPrivate.h

    r181153 r181431  
    3737class IntRect;
    3838class IntSize;
     39class MediaPlaybackTarget;
    3940class PlatformTextTrack;
    4041
     
    167168    virtual bool wirelessVideoPlaybackDisabled() const { return false; }
    168169    virtual void setWirelessVideoPlaybackDisabled(bool) { }
     170
     171    virtual void setWirelessPlaybackTarget(const MediaPlaybackTarget&) { }
    169172#endif
    170173
  • tags/Safari-601.1.22/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h

    r181006 r181431  
    3535OBJC_CLASS AVAssetResourceLoadingRequest;
    3636OBJC_CLASS AVMediaSelectionGroup;
     37OBJC_CLASS AVOutputDevicePickerContext;
    3738OBJC_CLASS AVPlayer;
    3839OBJC_CLASS AVPlayerItem;
     
    6061namespace WebCore {
    6162
    62 class WebCoreAVFResourceLoader;
     63class AudioSourceProviderAVFObjC;
     64class AudioTrackPrivateAVFObjC;
    6365class InbandMetadataTextTrackPrivateAVF;
    6466class InbandTextTrackPrivateAVFObjC;
    65 class AudioSourceProviderAVFObjC;
    66 class AudioTrackPrivateAVFObjC;
     67class MediaPlaybackTarget;
    6768class MediaSelectionGroupAVFObjC;
    6869class VideoTrackPrivateAVFObjC;
     70class WebCoreAVFResourceLoader;
    6971
    7072class MediaPlayerPrivateAVFoundationObjC : public MediaPlayerPrivateAVFoundation {
     
    275277    virtual MediaPlayer::WirelessPlaybackTargetType wirelessPlaybackTargetType() const override;
    276278    virtual bool wirelessVideoPlaybackDisabled() const override;
     279#if !PLATFORM(IOS)
     280    virtual void setWirelessPlaybackTarget(const MediaPlaybackTarget&) override;
     281#endif
    277282    virtual void setWirelessVideoPlaybackDisabled(bool) override;
    278283    void updateDisableExternalPlayback();
     
    344349#if ENABLE(DATACUE_VALUE)
    345350    RefPtr<InbandMetadataTextTrackPrivateAVF> m_metadataTrack;
     351#endif
     352
     353#if PLATFORM(MAC) && ENABLE(WIRELESS_PLAYBACK_TARGET)
     354    RetainPtr<AVOutputDevicePickerContext> m_outputDevicePickerContext;
    346355#endif
    347356
  • tags/Safari-601.1.22/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm

    r181036 r181431  
    4747#import "URL.h"
    4848#import "Logging.h"
     49#import "MediaPlaybackTarget.h"
    4950#import "MediaSelectionGroupAVFObjC.h"
    5051#import "MediaTimeAVFoundation.h"
     
    136137@end
    137138
     139#if PLATFORM(MAC) && ENABLE(WIRELESS_PLAYBACK_TARGET)
     140typedef AVOutputDevicePickerContext AVOutputDevicePickerContextType;
     141
     142@interface AVPlayer (WebKitExtensions)
     143@property (nonatomic) AVOutputDevicePickerContext *outputDevicePickerContext;
     144@end
     145#endif
     146
    138147typedef AVPlayer AVPlayerType;
    139148typedef AVPlayerItem AVPlayerItemType;
     
    547556#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    548557        [m_avPlayer.get() removeObserver:m_objcObserver.get() forKeyPath:@"externalPlaybackActive"];
     558        [m_avPlayer.get() removeObserver:m_objcObserver.get() forKeyPath:@"outputDevicePickerContext"];
    549559#endif
    550560        m_avPlayer = nil;
     
    928938#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    929939    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@"externalPlaybackActive" options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
     940    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@"outputDevicePickerContext" options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
     941#endif
     942
     943#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    930944    updateDisableExternalPlayback();
    931945#endif
     
    937951#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    938952    [m_avPlayer.get() setAllowsExternalPlayback:m_allowsWirelessVideoPlayback];
     953#endif
     954
     955#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     956    if (m_outputDevicePickerContext)
     957        m_avPlayer.get().outputDevicePickerContext = m_outputDevicePickerContext.get();
    939958#endif
    940959
     
    11351154        [m_videoFullscreenLayer addSublayer:m_textTrackRepresentationLayer.get()];
    11361155    }
    1137 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
     1156
    11381157    updateDisableExternalPlayback();
    1139 #endif
    11401158}
    11411159
     
    26882706        return false;
    26892707
    2690     bool wirelessTarget = [m_avPlayer.get() isExternalPlaybackActive];
     2708    bool wirelessTarget = m_avPlayer.get().externalPlaybackActive;
    26912709    LOG(Media, "MediaPlayerPrivateAVFoundationObjC::isCurrentPlaybackTargetWireless(%p) - returning %s", this, boolString(wirelessTarget));
     2710
    26922711    return wirelessTarget;
    26932712}
     
    26982717        return MediaPlayer::TargetTypeNone;
    26992718
     2719#if PLATFORM(IOS)
    27002720    switch (wkExernalDeviceTypeForPlayer(m_avPlayer.get())) {
    27012721    case wkExternalPlaybackTypeNone:
     
    27092729    ASSERT_NOT_REACHED();
    27102730    return MediaPlayer::TargetTypeNone;
     2731
     2732#else
     2733    return MediaPlayer::TargetTypeAirPlay;
     2734#endif
    27112735}
    27122736
     
    27262750    if (!m_avPlayer)
    27272751        return !m_allowsWirelessVideoPlayback;
    2728    
     2752
    27292753    m_allowsWirelessVideoPlayback = [m_avPlayer.get() allowsExternalPlayback];
    27302754    LOG(Media, "MediaPlayerPrivateAVFoundationObjC::wirelessVideoPlaybackDisabled(%p) - returning %s", this, boolString(!m_allowsWirelessVideoPlayback));
     
    27392763    if (!m_avPlayer)
    27402764        return;
    2741    
     2765
    27422766    [m_avPlayer.get() setAllowsExternalPlayback:!disabled];
    27432767}
    27442768
     2769#if !PLATFORM(IOS)
     2770void MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(const MediaPlaybackTarget& target)
     2771{
     2772    m_outputDevicePickerContext = target.devicePickerContext();
     2773
     2774    LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(%p) - target = %p", this, m_outputDevicePickerContext.get());
     2775
     2776    if (!m_avPlayer)
     2777        return;
     2778
     2779    m_avPlayer.get().outputDevicePickerContext = m_outputDevicePickerContext.get();
     2780}
     2781#endif
     2782
    27452783void MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback()
    27462784{
     
    27482786        return;
    27492787
     2788#if PLATFORM(IOS)
    27502789    [m_avPlayer setUsesExternalPlaybackWhileExternalScreenIsActive:m_videoFullscreenLayer != nil];
     2790#endif
    27512791}
    27522792#endif
     
    31703210        else if ([keyPath isEqualToString:@"externalPlaybackActive"])
    31713211            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::playbackTargetIsWirelessDidChange, m_callback);
     3212        else if ([keyPath isEqualToString:@"outputDevicePickerContext"])
     3213            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::playbackTargetIsWirelessDidChange, m_callback);
    31723214#endif
    31733215    }
  • tags/Safari-601.1.22/Source/WebCore/testing/InternalSettings.cpp

    r181285 r181431  
    9898    , m_touchEventEmulationEnabled(settings.isTouchEventEmulationEnabled())
    9999#endif
     100#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     101    , m_mediaPlaybackAllowsAirPlay(settings.mediaPlaybackAllowsAirPlay())
     102#endif
    100103{
    101104}
     
    202205    , m_backup(page->settings())
    203206{
     207#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     208    page->settings().setMediaPlaybackAllowsAirPlay(false);
     209#endif
    204210}
    205211
  • tags/Safari-601.1.22/Source/WebCore/testing/InternalSettings.h

    r181285 r181431  
    9696        bool m_touchEventEmulationEnabled;
    9797#endif
     98#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     99        bool m_mediaPlaybackAllowsAirPlay;
     100#endif
    98101    };
    99102
  • tags/Safari-601.1.22/Source/WebKit2/ChangeLog

    r181364 r181431  
     12015-03-11  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r181423.
     4
     5    2015-03-11  Eric Carlson  <eric.carlson@apple.com>
     6
     7            [Mac] Update AirPlay handling
     8            https://bugs.webkit.org/show_bug.cgi?id=142541
     9
     10            Reviewed by Sam Weinig.
     11
     12            * Shared/WebCoreArgumentCoders.h:
     13            * Shared/mac/WebCoreArgumentCodersMac.mm:
     14            (IPC::ArgumentCoder<AVPlaybackTarget>::encode):
     15            (IPC::ArgumentCoder<AVPlaybackTarget>::decode):
     16            * UIProcess/PageClient.h:
     17            * UIProcess/WebAVPlaybackTargetPickerProxy.cpp: Added.
     18            (WebKit::WebAVPlaybackTargetPickerProxy::WebAVPlaybackTargetPickerProxy):
     19            (WebKit::WebAVPlaybackTargetPickerProxy::~WebAVPlaybackTargetPickerProxy):
     20            (WebKit::WebAVPlaybackTargetPickerProxy::showPlaybackTargetPicker):
     21            (WebKit::WebAVPlaybackTargetPickerProxy::startingMonitoringPlaybackTargets):
     22            (WebKit::WebAVPlaybackTargetPickerProxy::stopMonitoringPlaybackTargets):
     23            * UIProcess/WebAVPlaybackTargetPickerProxy.h: Added.
     24            (WebKit::WebAVPlaybackTargetPickerProxy::Client::~Client):
     25            * UIProcess/WebPageProxy.cpp:
     26            (WebKit::WebPageProxy::devicePickerProxy):
     27            (WebKit::WebPageProxy::showPlaybackTargetPicker):
     28            (WebKit::WebPageProxy::startingMonitoringPlaybackTargets):
     29            (WebKit::WebPageProxy::stopMonitoringPlaybackTargets):
     30            (WebKit::WebPageProxy::didChoosePlaybackTarget):
     31            (WebKit::WebPageProxy::externalOutputDeviceAvailableDidChange):
     32            * UIProcess/WebPageProxy.h:
     33            * UIProcess/WebPageProxy.messages.in:
     34            * UIProcess/mac/PageClientImpl.h:
     35            * UIProcess/mac/PageClientImpl.mm:
     36            (WebKit::PageClientImpl::createPlaybackTargetPicker):
     37            * UIProcess/mac/WebAVPlaybackTargetPickerProxyMac.h: Added.
     38            * UIProcess/mac/WebAVPlaybackTargetPickerProxyMac.mm: Added.
     39            (WebKit::WebAVPlaybackTargetPickerProxyMac::create):
     40            (WebKit::WebAVPlaybackTargetPickerProxyMac::WebAVPlaybackTargetPickerProxyMac):
     41            (WebKit::WebAVPlaybackTargetPickerProxyMac::~WebAVPlaybackTargetPickerProxyMac):
     42            (WebKit::WebAVPlaybackTargetPickerProxyMac::outputeDeviceAvailabilityChangedTimerFired):
     43            (WebKit::WebAVPlaybackTargetPickerProxyMac::availableDevicesDidChange):
     44            (WebKit::WebAVPlaybackTargetPickerProxyMac::devicePicker):
     45            (WebKit::WebAVPlaybackTargetPickerProxyMac::showPlaybackTargetPicker):
     46            (WebKit::WebAVPlaybackTargetPickerProxyMac::currentDeviceDidChange):
     47            (WebKit::WebAVPlaybackTargetPickerProxyMac::startingMonitoringPlaybackTargets):
     48            (WebKit::WebAVPlaybackTargetPickerProxyMac::stopMonitoringPlaybackTargets):
     49            (-[WebAVOutputDevicePickerMenuControllerHelper initWithCallback:]):
     50            (-[WebAVOutputDevicePickerMenuControllerHelper clearCallback]):
     51            (-[WebAVOutputDevicePickerMenuControllerHelper observeValueForKeyPath:ofObject:change:context:]):
     52            * WebKit2.xcodeproj/project.pbxproj:
     53            * WebProcess/WebCoreSupport/WebAVPlaybackTargetPicker.cpp: Added.
     54            (WebKit::WebAVPlaybackTargetPicker::WebAVPlaybackTargetPicker):
     55            (WebKit::WebAVPlaybackTargetPicker::showPlaybackDevicePicker):
     56            (WebKit::WebAVPlaybackTargetPicker::configureWireLessTargetMonitoring):
     57            (WebKit::WebAVPlaybackTargetPicker::addClient):
     58            (WebKit::WebAVPlaybackTargetPicker::removeClient):
     59            (WebKit::WebAVPlaybackTargetPicker::didChoosePlaybackTarget):
     60            (WebKit::WebAVPlaybackTargetPicker::playbackTargetAvailabilityDidChange):
     61            * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     62            (WebKit::WebChromeClient::showPlaybackTargetPicker):
     63            (WebKit::WebChromeClient::startingMonitoringPlaybackTargets):
     64            (WebKit::WebChromeClient::stopMonitoringPlaybackTargets):
     65            * WebProcess/WebCoreSupport/WebChromeClient.h:
     66            * WebProcess/WebPage/WebPage.h:
     67            * WebProcess/WebPage/WebPage.messages.in:
     68            * WebProcess/WebPage/mac/WebPageMac.mm:
     69            (WebKit::WebPage::playbackTargetSelected):
     70            (WebKit::WebPage::playbackTargetAvailabilityDidChange):
     71            * WebProcess/com.apple.WebProcess.sb.in:
     72
    1732015-03-10  Antti Koivisto  <antti@apple.com>
    274
  • tags/Safari-601.1.22/Source/WebKit2/Shared/WebCoreArgumentCoders.h

    r180985 r181431  
    116116#endif
    117117
     118#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     119namespace WebCore {
     120class MediaPlaybackTarget;
     121}
     122#endif
     123
    118124namespace IPC {
    119125
     
    455461};
    456462
     463#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     464template<> struct ArgumentCoder<WebCore::MediaPlaybackTarget> {
     465    static void encode(ArgumentEncoder&, const WebCore::MediaPlaybackTarget&);
     466    static bool decode(ArgumentDecoder&, WebCore::MediaPlaybackTarget&);
     467};
     468#endif
     469
    457470} // namespace IPC
    458471
  • tags/Safari-601.1.22/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm

    r180985 r181431  
    3939#import <WebCore/ResourceError.h>
    4040#import <WebCore/ResourceRequest.h>
     41#import <WebCore/SoftLinking.h>
     42#import <objc/runtime.h>
    4143
    4244#if USE(CFNETWORK)
    4345#import <CFNetwork/CFURLRequest.h>
     46#endif
     47
     48#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     49#import <WebCore/MediaPlaybackTarget.h>
    4450#endif
    4551
     
    433439}
    434440
     441#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     442void ArgumentCoder<MediaPlaybackTarget>::encode(ArgumentEncoder& encoder, const MediaPlaybackTarget& target)
     443{
     444    RetainPtr<NSMutableData> data = adoptNS([[NSMutableData alloc] init]);
     445    RetainPtr<NSKeyedArchiver> archiver = adoptNS([[NSKeyedArchiver alloc] initForWritingWithMutableData:data.get()]);
     446    [archiver setRequiresSecureCoding:YES];
     447    target.encode(archiver.get());
     448    [archiver finishEncoding];
     449    IPC::encode(encoder, reinterpret_cast<CFDataRef>(data.get()));
     450}
     451
     452bool ArgumentCoder<MediaPlaybackTarget>::decode(ArgumentDecoder& decoder, MediaPlaybackTarget& target)
     453{
     454    RetainPtr<CFDataRef> data;
     455    if (!IPC::decode(decoder, data))
     456        return false;
     457
     458    RetainPtr<NSKeyedUnarchiver> unarchiver = adoptNS([[NSKeyedUnarchiver alloc] initForReadingWithData:(NSData *)data.get()]);
     459    [unarchiver setRequiresSecureCoding:YES];
     460    if (!MediaPlaybackTarget::decode(unarchiver.get(), target))
     461        return false;
     462   
     463    [unarchiver finishDecoding];
     464    return true;
     465}
     466#endif
     467
    435468} // namespace IPC
  • tags/Safari-601.1.22/Source/WebKit2/UIProcess/PageClient.h

    r181023 r181431  
    3535#include <wtf/Forward.h>
    3636
     37#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     38#include "WebMediaPlaybackTargetPickerProxy.h"
     39#endif
     40
    3741#if PLATFORM(COCOA)
    3842#include "PluginComplexTextInputState.h"
     
    314318    virtual void didPerformActionMenuHitTest(const ActionMenuHitTestResult&, bool forImmediateAction, API::Object*) = 0;
    315319#endif
     320
     321#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     322    virtual std::unique_ptr<WebMediaPlaybackTargetPickerProxy> createPlaybackTargetPicker(WebPageProxy*) = 0;
     323#endif
     324
    316325};
    317326
  • tags/Safari-601.1.22/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r181317 r181431  
    55935593}
    55945594
     5595#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     5596
     5597WebMediaPlaybackTargetPickerProxy& WebPageProxy::devicePickerProxy()
     5598{
     5599    if (!m_playbackTargetPicker)
     5600        m_playbackTargetPicker = m_pageClient.createPlaybackTargetPicker(this);
     5601
     5602    return *m_playbackTargetPicker.get();
     5603}
     5604
     5605void WebPageProxy::showPlaybackTargetPicker(const WebCore::FloatRect& rect, bool hasVideo)
     5606{
     5607    devicePickerProxy().showPlaybackTargetPicker(m_pageClient.rootViewToScreen(IntRect(rect)), hasVideo);
     5608}
     5609
     5610void WebPageProxy::startingMonitoringPlaybackTargets()
     5611{
     5612    devicePickerProxy().startingMonitoringPlaybackTargets();
     5613}
     5614
     5615void WebPageProxy::stopMonitoringPlaybackTargets()
     5616{
     5617    devicePickerProxy().stopMonitoringPlaybackTargets();
     5618}
     5619
     5620void WebPageProxy::didChoosePlaybackTarget(const WebCore::MediaPlaybackTarget& target)
     5621{
     5622    if (!isValid())
     5623        return;
     5624
     5625    m_process->send(Messages::WebPage::PlaybackTargetSelected(target), m_pageID);
     5626}
     5627
     5628void WebPageProxy::externalOutputDeviceAvailableDidChange(bool available)
     5629{
     5630    if (!isValid())
     5631        return;
     5632
     5633    m_process->send(Messages::WebPage::PlaybackTargetAvailabilityDidChange(available), m_pageID);
     5634}
     5635
     5636#endif
     5637
    55955638} // namespace WebKit
  • tags/Safari-601.1.22/Source/WebKit2/UIProcess/WebPageProxy.h

    r181317 r181431  
    112112#endif
    113113
     114#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     115#include "WebMediaPlaybackTargetPickerProxy.h"
     116#endif
     117
    114118namespace API {
    115119class ContextMenuClient;
     
    258262#if ENABLE(INPUT_TYPE_COLOR)
    259263    , public WebColorPicker::Client
     264#endif
     265#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     266    , public WebMediaPlaybackTargetPickerProxy::Client
    260267#endif
    261268    , public WebPopupMenuProxy::Client
     
    10001007    void logDiagnosticMessageWithValue(const String& message, const String& description, const String& value, bool shouldSample);
    10011008
     1009#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     1010    WebMediaPlaybackTargetPickerProxy& devicePickerProxy();
     1011    void showPlaybackTargetPicker(const WebCore::FloatRect&, bool hasVideo);
     1012    void startingMonitoringPlaybackTargets();
     1013    void stopMonitoringPlaybackTargets();
     1014
     1015    // WebMediaPlaybackTargetPickerProxy::Client
     1016    virtual void didChoosePlaybackTarget(const WebCore::MediaPlaybackTarget&) override;
     1017    virtual void externalOutputDeviceAvailableDidChange(bool) override;
     1018#endif
     1019
    10021020private:
    10031021    WebPageProxy(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
     
    16631681    Vector<uint64_t> m_nextViewStateChangeCallbacks;
    16641682
     1683#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     1684    std::unique_ptr<WebMediaPlaybackTargetPickerProxy> m_playbackTargetPicker;
     1685#endif
     1686
    16651687    bool m_isPlayingAudio;
    16661688};
  • tags/Safari-601.1.22/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r181023 r181431  
    424424    DidPerformActionMenuHitTest(struct WebKit::ActionMenuHitTestResult result, bool forImmediateAction, WebKit::UserData userData)
    425425#endif
     426
     427#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     428    ShowPlaybackTargetPicker(WebCore::FloatRect pickerLocation, bool hasVideo)
     429    StartingMonitoringPlaybackTargets()
     430    StopMonitoringPlaybackTargets()
     431#endif
     432
    426433}
Note: See TracChangeset for help on using the changeset viewer.