Changeset 182630 in webkit
- Timestamp:
- Apr 10, 2015, 7:31:48 AM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 2 added
- 37 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/WebCore.xcodeproj/project.pbxproj (modified) (13 diffs)
-
WebCore/dom/Document.cpp (modified) (2 diffs)
-
WebCore/dom/Document.h (modified) (1 diff)
-
WebCore/html/HTMLMediaElement.cpp (modified) (1 diff)
-
WebCore/html/HTMLMediaElement.h (modified) (1 diff)
-
WebCore/html/HTMLMediaSession.cpp (modified) (2 diffs)
-
WebCore/html/HTMLMediaSession.h (modified) (2 diffs)
-
WebCore/page/Page.cpp (modified) (3 diffs)
-
WebCore/page/Page.h (modified) (2 diffs)
-
WebCore/platform/audio/MediaSession.h (modified) (2 diffs)
-
WebCore/platform/graphics/MediaPlaybackTarget.h (modified) (1 diff)
-
WebCore/platform/graphics/MediaPlaybackTargetContext.h (added)
-
WebCore/platform/graphics/MediaPlaybackTargetPicker.h (modified) (2 diffs)
-
WebCore/platform/graphics/MediaPlaybackTargetPickerClient.h (modified) (1 diff)
-
WebCore/platform/graphics/MediaPlayer.cpp (modified) (1 diff)
-
WebCore/platform/graphics/MediaPlayer.h (modified) (1 diff)
-
WebCore/platform/graphics/MediaPlayerPrivate.h (modified) (1 diff)
-
WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.h (added)
-
WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm (modified) (2 diffs)
-
WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm (modified) (2 diffs)
-
WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h (modified) (1 diff)
-
WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (modified) (2 diffs)
-
WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h (modified) (2 diffs)
-
WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm (modified) (1 diff)
-
WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.h (modified) (2 diffs)
-
WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm (modified) (1 diff)
-
WebKit/mac/ChangeLog (modified) (1 diff)
-
WebKit/mac/WebView/WebMediaPlaybackTargetPicker.h (modified) (1 diff)
-
WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm (modified) (1 diff)
-
WebKit2/ChangeLog (modified) (1 diff)
-
WebKit2/Shared/WebCoreArgumentCoders.cpp (modified) (2 diffs)
-
WebKit2/Shared/WebCoreArgumentCoders.h (modified) (2 diffs)
-
WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm (modified) (3 diffs)
-
WebKit2/UIProcess/WebPageProxy.cpp (modified) (2 diffs)
-
WebKit2/UIProcess/WebPageProxy.h (modified) (1 diff)
-
WebKit2/WebProcess/WebPage/WebPage.h (modified) (3 diffs)
-
WebKit2/WebProcess/WebPage/WebPage.messages.in (modified) (1 diff)
-
WebKit2/WebProcess/WebPage/mac/WebPageMac.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r182628 r182630 1 2015-04-10 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Refactor MediaPlaybackTarget 4 https://bugs.webkit.org/show_bug.cgi?id=143571 5 6 Reviewed by Jer Noble. 7 8 * WebCore.xcodeproj/project.pbxproj: 9 * dom/Document.cpp: 10 (WebCore::Document::addPlaybackTargetPickerClient): Don't call client if page playback target 11 is NULL. 12 (WebCore::Document::didChoosePlaybackTarget): MediaPlaybackTarget is passed as a Ref<> 13 * dom/Document.h: 14 15 * html/HTMLMediaElement.cpp: 16 (WebCore::HTMLMediaElement::setWirelessPlaybackTarget): MediaPlaybackTarget is passed as a Ref<> 17 * html/HTMLMediaElement.h: 18 19 * html/HTMLMediaSession.cpp: 20 (WebCore::HTMLMediaSession::HTMLMediaSession): Don't initialize m_playbackTarget. 21 (WebCore::HTMLMediaSession::didChoosePlaybackTarget): MediaPlaybackTarget is passed as a Ref<> 22 * html/HTMLMediaSession.h: 23 24 * page/Page.cpp: 25 (WebCore::Page::Page): 26 (WebCore::Page::playbackTarget): m_playbackTarget is a RefPtr<MediaPlaybackTarget> 27 (WebCore::Page::didChoosePlaybackTarget): Ditto. 28 * page/Page.h: 29 30 * platform/audio/MediaSession.h: 31 (WebCore::MediaSessionClient::setWirelessPlaybackTarget): Take a Ref<MediaPlaybackTarget>&&. 32 33 Make MediaPlaybackTarget RefCounted, and don't require it to be serializable so it can be 34 subclassed to keep port-specific iformation out of the base class. 35 * platform/graphics/MediaPlaybackTarget.h: 36 (WebCore::MediaPlaybackTarget::targetType): 37 (WebCore::MediaPlaybackTarget::targetContext): 38 (WebCore::MediaPlaybackTarget::hasActiveRoute): 39 (WebCore::MediaPlaybackTarget::MediaPlaybackTarget): 40 (WebCore::MediaPlaybackTarget::setDevicePickerContext): Deleted. 41 (WebCore::MediaPlaybackTarget::devicePickerContext): Deleted. 42 43 MediaPlaybackTargetContext is the struct that is serialized to pass across the process boudary. 44 It has union to hold port-specific data. 45 * platform/graphics/MediaPlaybackTargetContext.h: Added. 46 47 * platform/graphics/MediaPlaybackTargetPicker.h: didChoosePlaybackTarget takes a Ref<MediaPlaybackTarget>&& 48 * platform/graphics/MediaPlaybackTargetPickerClient.h: Ditto. 49 * platform/graphics/MediaPlayer.cpp: 50 (WebCore::MediaPlayer::setWirelessPlaybackTarget): Ditto. 51 * platform/graphics/MediaPlayer.h: 52 53 * platform/graphics/MediaPlayerPrivate.h: 54 (WebCore::MediaPlayerPrivateInterface::setWirelessPlaybackTarget): 55 56 * platform/graphics/avfoundation/MediaPlaybackTargetMac.h: Added. 57 (WebCore::MediaPlaybackTargetMac::targetType): 58 (WebCore::MediaPlaybackTargetMac::outputContext): 59 * platform/graphics/avfoundation/MediaPlaybackTargetMac.mm: 60 (WebCore::MediaPlaybackTargetMac::create): 61 (WebCore::MediaPlaybackTargetMac::MediaPlaybackTargetMac): 62 (WebCore::MediaPlaybackTargetMac::~MediaPlaybackTargetMac): 63 (WebCore::MediaPlaybackTargetMac::targetContext): 64 (WebCore::MediaPlaybackTargetMac::hasActiveRoute): 65 (WebCore::toMediaPlaybackTargetMac): 66 (WebCore::MediaPlaybackTarget::encode): Deleted. 67 (WebCore::MediaPlaybackTarget::decode): Deleted. 68 (WebCore::MediaPlaybackTarget::hasActiveRoute): Deleted. 69 70 * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm: 71 (WebCore::MediaPlaybackTargetPickerMac::currentDeviceDidChange): Allocate and pass a MediaPlaybackTargetMac 72 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: 73 74 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 75 (WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget): Take a Ref<MediaPlaybackTarget&& 76 77 * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: 78 * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: 79 (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setWirelessPlaybackTarget): Ditto. 80 81 * platform/graphics/mac/MediaPlayerPrivateQTKit.h: 82 * platform/graphics/mac/MediaPlayerPrivateQTKit.mm: 83 (WebCore::MediaPlayerPrivateQTKit::setWirelessPlaybackTarget): Ditto. 84 1 85 2015-04-09 Sergio Villar Senin <svillar@igalia.com> 2 86 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r182627 r182630 122 122 071A9EC2168FBC43002629F9 /* TextTrackCueGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */; }; 123 123 071A9EC3168FBC55002629F9 /* TextTrackCueGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = 071A9EC1168FB56C002629F9 /* TextTrackCueGeneric.h */; settings = {ATTRIBUTES = (Private, ); }; }; 124 071E496E1AD5AA0D008A50B4 /* MediaPlaybackTargetMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 071E496D1AD5AA0D008A50B4 /* MediaPlaybackTargetMac.mm */; }; 125 071E49701AD5AB5E008A50B4 /* MediaPlaybackTargetMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 071E496F1AD5AB5E008A50B4 /* MediaPlaybackTargetMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; 124 126 0720B0A014D3323500642955 /* GenericEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0720B09E14D3323500642955 /* GenericEventQueue.cpp */; }; 125 127 0720B0A114D3323500642955 /* GenericEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0720B09F14D3323500642955 /* GenericEventQueue.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 176 178 0753860214489E9800B78452 /* CachedTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0753860014489E9800B78452 /* CachedTextTrack.cpp */; }; 177 179 0753860314489E9800B78452 /* CachedTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 0753860114489E9800B78452 /* CachedTextTrack.h */; }; 178 0760C17A1AA8FC7D009ED7B8 /* MediaPlaybackTargetMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */; };179 180 076306D017E1478D005A7C4E /* MediaStreamTrackSourcesCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 076306CC17E1478D005A7C4E /* MediaStreamTrackSourcesCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; 180 181 076306D217E1478D005A7C4E /* MediaStreamTrackSourcesRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 076306CE17E1478D005A7C4E /* MediaStreamTrackSourcesRequest.cpp */; }; … … 342 343 07EDC3EE1AACB75D00983EB5 /* MediaSessionManagerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07EDC3ED1AACB75D00983EB5 /* MediaSessionManagerMac.cpp */; }; 343 344 07F0B97A1AC5DB3300E535D9 /* AVKitSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F0B9791AC5DB3300E535D9 /* AVKitSPI.h */; }; 344 07F0B97C1AC5DB4600E535D9 /* AVFoundationSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F0B97B1AC5DB4600E535D9 /* AVFoundationSPI.h */; }; 345 07F0B97C1AC5DB4600E535D9 /* AVFoundationSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F0B97B1AC5DB4600E535D9 /* AVFoundationSPI.h */; settings = {ATTRIBUTES = (Private, ); }; }; 346 07F876841AD580F900905849 /* MediaPlaybackTargetContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F876831AD4A94500905849 /* MediaPlaybackTargetContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; 345 347 07F944161864D046005D31CB /* MediaSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CDAE8C081746B95700532D78 /* MediaSessionManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; 346 348 07FBDE2C18FED178001A7CFF /* JSDataCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */; }; … … 7113 7115 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackCueGeneric.cpp; sourceTree = "<group>"; }; 7114 7116 071A9EC1168FB56C002629F9 /* TextTrackCueGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackCueGeneric.h; sourceTree = "<group>"; }; 7117 071E496D1AD5AA0D008A50B4 /* MediaPlaybackTargetMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaPlaybackTargetMac.mm; sourceTree = "<group>"; }; 7118 071E496F1AD5AB5E008A50B4 /* MediaPlaybackTargetMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlaybackTargetMac.h; sourceTree = "<group>"; }; 7115 7119 0720B09E14D3323500642955 /* GenericEventQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GenericEventQueue.cpp; sourceTree = "<group>"; }; 7116 7120 0720B09F14D3323500642955 /* GenericEventQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericEventQueue.h; sourceTree = "<group>"; }; … … 7366 7370 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueCustom.cpp; sourceTree = "<group>"; }; 7367 7371 07E3DFD01A9E786500764CA8 /* MediaPlaybackTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlaybackTarget.h; sourceTree = "<group>"; }; 7368 07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MediaPlaybackTargetMac.mm; path = platform/graphics/avfoundation/MediaPlaybackTargetMac.mm; sourceTree = SOURCE_ROOT; };7369 7372 07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandMetadataTextTrackPrivateAVF.h; sourceTree = "<group>"; }; 7370 7373 07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandMetadataTextTrackPrivateAVF.cpp; sourceTree = "<group>"; }; … … 7372 7375 07F0B9791AC5DB3300E535D9 /* AVKitSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVKitSPI.h; sourceTree = "<group>"; }; 7373 7376 07F0B97B1AC5DB4600E535D9 /* AVFoundationSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVFoundationSPI.h; sourceTree = "<group>"; }; 7377 07F876831AD4A94500905849 /* MediaPlaybackTargetContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlaybackTargetContext.h; sourceTree = "<group>"; }; 7374 7378 07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDataCueCustom.cpp; sourceTree = "<group>"; }; 7375 7379 07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaSession.cpp; sourceTree = "<group>"; }; … … 14725 14729 isa = PBXGroup; 14726 14730 children = ( 14731 071E496F1AD5AB5E008A50B4 /* MediaPlaybackTargetMac.h */, 14732 071E496D1AD5AA0D008A50B4 /* MediaPlaybackTargetMac.mm */, 14727 14733 DF9AFD6F13FC31B00015FEB7 /* objc */, 14728 14734 CDE3A85217F5FCE600C5BE20 /* AudioTrackPrivateAVF.h */, … … 14733 14739 078E43DB1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.h */, 14734 14740 078E43DC1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.mm */, 14735 07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */,14736 14741 076F0D0912B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.cpp */, 14737 14742 076F0D0A12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h */, … … 20789 20794 6C568CAE19DAFEA000430CA2 /* MaskImageOperation.cpp */, 20790 20795 6C568CAF19DAFEA000430CA2 /* MaskImageOperation.h */, 20796 07F876831AD4A94500905849 /* MediaPlaybackTargetContext.h */, 20791 20797 078E43D71ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.cpp */, 20792 20798 078E43D81ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.h */, … … 25441 25447 7BE7427381FA906FBB4F0F2C /* JSSVGGraphicsElement.h in Headers */, 25442 25448 8485227C1190162C006EDC7F /* JSSVGHKernElement.h in Headers */, 25449 07F876841AD580F900905849 /* MediaPlaybackTargetContext.h in Headers */, 25443 25450 B2FA3D9F0AB75A6F000E5AC4 /* JSSVGImageElement.h in Headers */, 25444 25451 B2FA3DA10AB75A6F000E5AC4 /* JSSVGLength.h in Headers */, … … 25690 25697 E44613E60CD681A900FADA75 /* MediaPlayerPrivateQTKit.h in Headers */, 25691 25698 4E19592A0A39DACC00220FE5 /* MediaQuery.h in Headers */, 25699 071E49701AD5AB5E008A50B4 /* MediaPlaybackTargetMac.h in Headers */, 25692 25700 4E19592C0A39DACC00220FE5 /* MediaQueryEvaluator.h in Headers */, 25693 25701 4E19592E0A39DACC00220FE5 /* MediaQueryExp.h in Headers */, … … 28043 28051 4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */, 28044 28052 93A38B4B0D0E5808006872C2 /* EditorCommand.cpp in Sources */, 28045 0760C17A1AA8FC7D009ED7B8 /* MediaPlaybackTargetMac.mm in Sources */,28046 28053 FED13D3A0CEA934600D89466 /* EditorIOS.mm in Sources */, 28047 28054 ED501DC60B249F2900AE18D9 /* EditorMac.mm in Sources */, … … 30356 30363 2E4346540F546A8200B0F1BA /* WorkerThread.cpp in Sources */, 30357 30364 0B9056F80F2685F30095FF6A /* WorkerThreadableLoader.cpp in Sources */, 30365 071E496E1AD5AA0D008A50B4 /* MediaPlaybackTargetMac.mm in Sources */, 30358 30366 97AABD2C14FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp in Sources */, 30359 30367 93309E23099E64920056E581 /* WrapContentsInDummySpanCommand.cpp in Sources */, -
trunk/Source/WebCore/dom/Document.cpp
r182556 r182630 6540 6540 m_playbackTargetClients.add(&client); 6541 6541 6542 client.didChoosePlaybackTarget(page->playbackTarget()); 6542 RefPtr<MediaPlaybackTarget> target = page->playbackTarget(); 6543 if (target) 6544 client.didChoosePlaybackTarget(*target); 6543 6545 client.externalOutputDeviceAvailableDidChange(page->hasWirelessPlaybackTarget()); 6544 6546 } … … 6581 6583 } 6582 6584 6583 void Document::didChoosePlaybackTarget( const MediaPlaybackTarget& device)6585 void Document::didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&& device) 6584 6586 { 6585 6587 for (auto* client : m_playbackTargetClients) 6586 client->didChoosePlaybackTarget(device );6588 client->didChoosePlaybackTarget(device.copyRef()); 6587 6589 } 6588 6590 -
trunk/Source/WebCore/dom/Document.h
r182556 r182630 1236 1236 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 1237 1237 void showPlaybackTargetPicker(const HTMLMediaElement&); 1238 void didChoosePlaybackTarget( const MediaPlaybackTarget&);1238 void didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&&); 1239 1239 void addPlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&); 1240 1240 void removePlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&); -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r182555 r182630 4887 4887 } 4888 4888 4889 void HTMLMediaElement::setWirelessPlaybackTarget( const MediaPlaybackTarget& device)4889 void HTMLMediaElement::setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&& device) 4890 4890 { 4891 4891 LOG(Media, "HTMLMediaElement::setWirelessPlaybackTarget(%p)", this); 4892 4892 if (m_player) 4893 m_player->setWirelessPlaybackTarget( device);4893 m_player->setWirelessPlaybackTarget(WTF::move(device)); 4894 4894 } 4895 4895 -
trunk/Source/WebCore/html/HTMLMediaElement.h
r182544 r182630 364 364 virtual bool canPlayToWirelessPlaybackTarget() const override; 365 365 virtual bool isPlayingToWirelessPlaybackTarget() const override; 366 virtual void setWirelessPlaybackTarget( const MediaPlaybackTarget&) override;366 virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&) override; 367 367 virtual void startPlayingToPlaybackTarget() override; 368 368 virtual void stopPlayingToPlaybackTarget() override; -
trunk/Source/WebCore/html/HTMLMediaSession.cpp
r182486 r182630 77 77 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 78 78 , m_targetAvailabilityChangedTimer(*this, &HTMLMediaSession::targetAvailabilityChangedTimerFired) 79 , m_playbackTarget(std::make_unique<MediaPlaybackTarget>())80 79 #endif 81 80 { … … 287 286 } 288 287 289 void HTMLMediaSession::didChoosePlaybackTarget( const MediaPlaybackTarget& device)290 { 291 m_playbackTarget ->setDevicePickerContext(device.devicePickerContext());292 client().setWirelessPlaybackTarget(*m_playbackTarget. get());293 if ( device.hasActiveRoute() && MediaSessionManager::sharedManager().currentSession() == this)288 void HTMLMediaSession::didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&& device) 289 { 290 m_playbackTarget = WTF::move(device); 291 client().setWirelessPlaybackTarget(*m_playbackTarget.copyRef()); 292 if (m_playbackTarget->hasActiveRoute() && MediaSessionManager::sharedManager().currentSession() == this) 294 293 startPlayingToPlaybackTarget(); 295 294 else -
trunk/Source/WebCore/html/HTMLMediaSession.h
r182486 r182630 105 105 106 106 // MediaPlaybackTargetPickerClient 107 virtual void didChoosePlaybackTarget( const MediaPlaybackTarget&) override;107 virtual void didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&&) override; 108 108 virtual void externalOutputDeviceAvailableDidChange(bool) const override; 109 109 virtual bool requiresPlaybackTargetRouteMonitoring() const override; … … 114 114 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 115 115 mutable Timer m_targetAvailabilityChangedTimer; 116 std::unique_ptr<MediaPlaybackTarget> m_playbackTarget;116 RefPtr<MediaPlaybackTarget> m_playbackTarget; 117 117 bool m_hasPlaybackTargetAvailabilityListeners { false }; 118 118 mutable bool m_hasPlaybackTargets { false }; -
trunk/Source/WebCore/page/Page.cpp
r182497 r182630 215 215 , m_visitedLinkStore(*WTF::move(pageConfiguration.visitedLinkStore)) 216 216 , m_sessionID(SessionID::defaultSessionID()) 217 #if ENABLE(WIRELESS_PLAYBACK_TARGET)218 , m_playbackTarget(std::make_unique<MediaPlaybackTarget>())219 #endif220 217 , m_isClosing(false) 221 218 , m_isPlayingAudio(false) … … 1687 1684 1688 1685 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 1686 RefPtr<MediaPlaybackTarget> Page::playbackTarget() const 1687 { 1688 if (!m_playbackTarget) 1689 return nullptr; 1690 1691 return m_playbackTarget.copyRef(); 1692 } 1693 1689 1694 void Page::showPlaybackTargetPicker(const WebCore::IntPoint& location, bool isVideo) 1690 1695 { … … 1698 1703 } 1699 1704 1700 void Page::didChoosePlaybackTarget( const MediaPlaybackTarget& target)1701 { 1702 m_playbackTarget ->setDevicePickerContext(target.devicePickerContext());1705 void Page::didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&& target) 1706 { 1707 m_playbackTarget = WTF::move(target); 1703 1708 for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) 1704 frame->document()->didChoosePlaybackTarget( target);1709 frame->document()->didChoosePlaybackTarget(*m_playbackTarget.copyRef()); 1705 1710 } 1706 1711 -
trunk/Source/WebCore/page/Page.h
r182497 r182630 431 431 void showPlaybackTargetPicker(const WebCore::IntPoint&, bool); 432 432 bool hasWirelessPlaybackTarget() const { return m_hasWirelessPlaybackTarget; } 433 MediaPlaybackTarget& playbackTarget() const { return *m_playbackTarget.get(); }433 RefPtr<MediaPlaybackTarget> playbackTarget() const; 434 434 void configurePlaybackTargetMonitoring(); 435 435 436 WEBCORE_EXPORT void didChoosePlaybackTarget( const MediaPlaybackTarget&);436 WEBCORE_EXPORT void didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&&); 437 437 WEBCORE_EXPORT void playbackTargetAvailabilityDidChange(bool); 438 438 #endif … … 591 591 592 592 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 593 std::unique_ptr<MediaPlaybackTarget> m_playbackTarget;593 RefPtr<MediaPlaybackTarget> m_playbackTarget; 594 594 bool m_hasWirelessPlaybackTarget { false }; 595 595 #endif -
trunk/Source/WebCore/platform/audio/MediaSession.h
r182486 r182630 125 125 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 126 126 // MediaPlaybackTargetPickerClient 127 virtual void didChoosePlaybackTarget( const MediaPlaybackTarget&) override { }127 virtual void didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&&) override { } 128 128 virtual void externalOutputDeviceAvailableDidChange(bool) const override { } 129 129 virtual bool requiresPlaybackTargetRouteMonitoring() const override { return false; } … … 170 170 171 171 virtual void wirelessRoutesAvailableDidChange() { } 172 virtual void setWirelessPlaybackTarget( const MediaPlaybackTarget&) { }172 virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&) { } 173 173 virtual bool canPlayToWirelessPlaybackTarget() const { return false; } 174 174 virtual bool isPlayingToWirelessPlaybackTarget() const { return false; } -
trunk/Source/WebCore/platform/graphics/MediaPlaybackTarget.h
r182255 r182630 29 29 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 30 30 31 #include <wtf/RetainPtr.h> 32 33 #if PLATFORM(COCOA) 34 OBJC_CLASS NSKeyedArchiver; 35 OBJC_CLASS NSKeyedUnarchiver; 36 OBJC_CLASS AVOutputContext; 37 #endif 31 #include "MediaPlaybackTargetContext.h" 32 #include <wtf/RefCounted.h> 38 33 39 34 namespace WebCore { 40 35 41 class MediaPlaybackTarget {36 class MediaPlaybackTarget : public RefCounted<MediaPlaybackTarget> { 42 37 public: 43 38 virtual ~MediaPlaybackTarget() { } 44 39 45 #if PLATFORM(COCOA) 46 WEBCORE_EXPORT MediaPlaybackTarget(AVOutputContext *context = nil) { m_devicePickerContext = context; } 40 enum TargetType { 41 None, 42 AVFoundation, 43 }; 44 virtual TargetType targetType() const { return None; } 47 45 48 WEBCORE_EXPORT void encode(NSKeyedArchiver *) const; 49 WEBCORE_EXPORT static bool decode(NSKeyedUnarchiver *, MediaPlaybackTarget&); 50 51 void setDevicePickerContext(AVOutputContext *context) { m_devicePickerContext = context; } 52 AVOutputContext *devicePickerContext() const { return m_devicePickerContext.get(); } 53 54 #if PLATFORM(IOS) 55 bool hasActiveRoute() const { return false; } 56 #else 57 bool hasActiveRoute() const; 58 #endif 59 60 #else 61 void setDevicePickerContext(AVOutputContext *) { } 62 AVOutputContext *devicePickerContext() const { return nullptr; } 63 bool hasActiveRoute() const { return false; } 64 #endif 46 virtual const MediaPlaybackTargetContext& targetContext() const { return NoMediaPlaybackTargetContext; } 47 virtual bool hasActiveRoute() const { return false; } 65 48 66 49 protected: 67 #if PLATFORM(COCOA) 68 RetainPtr<AVOutputContext> m_devicePickerContext; 69 #endif 50 MediaPlaybackTarget() { } 70 51 }; 71 52 -
trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h
r181777 r182630 29 29 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 30 30 31 #include <wtf/Ref.h> 32 31 33 namespace WebCore { 32 34 … … 41 43 42 44 public: 43 virtual void didChoosePlaybackTarget( const MediaPlaybackTarget&) = 0;45 virtual void didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&&) = 0; 44 46 virtual void externalOutputDeviceAvailableDidChange(bool) = 0; 45 47 -
trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPickerClient.h
r182240 r182630 39 39 virtual ~MediaPlaybackTargetPickerClient() { } 40 40 41 virtual void didChoosePlaybackTarget( const MediaPlaybackTarget&) = 0;41 virtual void didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&&) = 0; 42 42 virtual void externalOutputDeviceAvailableDidChange(bool) const = 0; 43 43 -
trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp
r182486 r182630 884 884 } 885 885 886 void MediaPlayer::setWirelessPlaybackTarget( const MediaPlaybackTarget& device)887 { 888 m_private->setWirelessPlaybackTarget( device);886 void MediaPlayer::setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&& device) 887 { 888 m_private->setWirelessPlaybackTarget(WTF::move(device)); 889 889 } 890 890 -
trunk/Source/WebCore/platform/graphics/MediaPlayer.h
r182486 r182630 482 482 bool canPlayToWirelessPlaybackTarget() const; 483 483 bool isPlayingToWirelessPlaybackTarget() const; 484 void setWirelessPlaybackTarget( const MediaPlaybackTarget&);484 void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&); 485 485 486 486 void startPlayingToPlaybackTarget(); -
trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h
r182486 r182630 172 172 virtual bool canPlayToWirelessPlaybackTarget() const { return false; } 173 173 virtual bool isPlayingToWirelessPlaybackTarget() { return false; } 174 virtual void setWirelessPlaybackTarget( const MediaPlaybackTarget&) { }174 virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&) { } 175 175 176 176 virtual void startPlayingToPlaybackTarget() { } -
trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm
r182240 r182630 25 25 26 26 #import "config.h" 27 #import "MediaPlaybackTarget .h"27 #import "MediaPlaybackTargetMac.h" 28 28 29 29 #if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) … … 38 38 namespace WebCore { 39 39 40 static NSString * const deviceContextKey = @"deviceContext"; 41 42 void MediaPlaybackTarget::encode(NSKeyedArchiver *archiver) const 40 Ref<MediaPlaybackTarget> MediaPlaybackTargetMac::create(AVOutputContext *context) 43 41 { 44 if ([getAVOutputContextClass() conformsToProtocol:@protocol(NSSecureCoding)]) 45 [archiver encodeObject:m_devicePickerContext.get() forKey:deviceContextKey]; 42 return adoptRef(*new MediaPlaybackTargetMac(context)); 46 43 } 47 44 48 bool MediaPlaybackTarget::decode(NSKeyedUnarchiver *unarchiver, MediaPlaybackTarget& playbackTarget) 45 MediaPlaybackTargetMac::MediaPlaybackTargetMac(AVOutputContext *context) 46 : MediaPlaybackTarget() 47 , m_outputContext(context) 49 48 { 50 if (![getAVOutputContextClass() conformsToProtocol:@protocol(NSSecureCoding)])51 return false;52 53 AVOutputContext *context = nil;54 @try {55 context = [unarchiver decodeObjectOfClass:getAVOutputContextClass() forKey:deviceContextKey];56 } @catch (NSException *exception) {57 LOG_ERROR("The target picker being decoded is not a AVOutputContext.");58 return false;59 }60 61 playbackTarget.m_devicePickerContext = context;62 63 return true;64 49 } 65 50 66 bool MediaPlaybackTarget::hasActiveRoute() const 51 MediaPlaybackTargetMac::~MediaPlaybackTargetMac() 67 52 { 68 return m_devicePickerContext && m_devicePickerContext.get().deviceName;69 53 } 70 54 55 const MediaPlaybackTargetContext& MediaPlaybackTargetMac::targetContext() const 56 { 57 m_context.type = MediaPlaybackTargetContext::AVOutputContextType; 58 m_context.context.avOutputContext = m_outputContext.get(); 59 60 return m_context; 61 } 62 63 bool MediaPlaybackTargetMac::hasActiveRoute() const 64 { 65 return m_outputContext && m_outputContext.get().deviceName; 66 } 67 68 69 MediaPlaybackTargetMac* toMediaPlaybackTargetMac(MediaPlaybackTarget* rep) 70 { 71 return const_cast<MediaPlaybackTargetMac*>(toMediaPlaybackTargetMac(const_cast<const MediaPlaybackTarget*>(rep))); 72 } 73 74 const MediaPlaybackTargetMac* toMediaPlaybackTargetMac(const MediaPlaybackTarget* rep) 75 { 76 ASSERT_WITH_SECURITY_IMPLICATION(rep->targetType() == MediaPlaybackTarget::AVFoundation); 77 return static_cast<const MediaPlaybackTargetMac*>(rep); 78 } 71 79 72 80 } // namespace WebCore -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm
r182117 r182630 32 32 #import <WebCore/AVKitSPI.h> 33 33 #import <WebCore/FloatRect.h> 34 #import <WebCore/MediaPlaybackTarget .h>34 #import <WebCore/MediaPlaybackTargetMac.h> 35 35 #import <WebCore/SoftLinking.h> 36 36 #import <objc/runtime.h> … … 134 134 return; 135 135 136 if (devicePicker.isExternalOutputDevicePicked) 137 m_client->didChoosePlaybackTarget(WebCore::MediaPlaybackTarget([devicePicker outputContext])); 138 else 139 m_client->didChoosePlaybackTarget(WebCore::MediaPlaybackTarget(nil)); 136 m_client->didChoosePlaybackTarget(WebCore::MediaPlaybackTargetMac::create([devicePicker outputContext])); 140 137 } 141 138 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
r182486 r182630 283 283 284 284 #if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) 285 virtual void setWirelessPlaybackTarget( const MediaPlaybackTarget&) override;285 virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&) override; 286 286 virtual void startPlayingToPlaybackTarget() override; 287 287 virtual void stopPlayingToPlaybackTarget() override; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r182555 r182630 48 48 #import "URL.h" 49 49 #import "Logging.h" 50 #import "MediaPlaybackTarget .h"50 #import "MediaPlaybackTargetMac.h" 51 51 #import "MediaSelectionGroupAVFObjC.h" 52 52 #import "MediaTimeAVFoundation.h" … … 2778 2778 2779 2779 #if !PLATFORM(IOS) 2780 void MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(const MediaPlaybackTarget& target) 2781 { 2782 m_outputContext = target.devicePickerContext(); 2780 void MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&& target) 2781 { 2782 MediaPlaybackTargetMac* macTarget = toMediaPlaybackTargetMac(&target.get()); 2783 2784 m_outputContext = macTarget->outputContext(); 2783 2785 LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(%p) - target = %p", this, m_outputContext.get()); 2784 2786 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h
r182240 r182630 174 174 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 175 175 virtual bool isCurrentPlaybackTargetSupported() const override; 176 virtual void setWirelessPlaybackTarget( const MediaPlaybackTarget&);176 virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&); 177 177 virtual void startPlayingToPlaybackTarget() override; 178 178 virtual void stopPlayingToPlaybackTarget() override; … … 222 222 bool m_hasAvailableVideoFrame; 223 223 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 224 std::unique_ptr<MediaPlaybackTarget> m_playbackTarget;224 RefPtr<MediaPlaybackTarget> m_playbackTarget; 225 225 bool m_currentPlaybackTargetIsSupported { true }; 226 226 #endif -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm
r182240 r182630 816 816 } 817 817 818 void MediaPlayerPrivateMediaSourceAVFObjC::setWirelessPlaybackTarget(const MediaPlaybackTarget& target) 819 { 820 if (!m_playbackTarget) 821 m_playbackTarget = std::make_unique<MediaPlaybackTarget>(); 822 m_playbackTarget->setDevicePickerContext(target.devicePickerContext()); 818 void MediaPlayerPrivateMediaSourceAVFObjC::setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&& target) 819 { 820 m_playbackTarget = WTF::move(target); 823 821 } 824 822 -
trunk/Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.h
r182240 r182630 182 182 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 183 183 virtual bool isCurrentPlaybackTargetSupported() const override; 184 virtual void setWirelessPlaybackTarget( const MediaPlaybackTarget&);184 virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&); 185 185 virtual void startPlayingToPlaybackTarget() override; 186 186 virtual void stopPlayingToPlaybackTarget() override; … … 216 216 mutable FloatSize m_cachedNaturalSize; 217 217 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 218 std::unique_ptr<MediaPlaybackTarget> m_playbackTarget;218 RefPtr<MediaPlaybackTarget> m_playbackTarget; 219 219 bool m_currentPlaybackTargetIsSupported { true }; 220 220 #endif -
trunk/Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm
r182240 r182630 1550 1550 } 1551 1551 1552 void MediaPlayerPrivateQTKit::setWirelessPlaybackTarget(const MediaPlaybackTarget& target) 1553 { 1554 if (!m_playbackTarget) 1555 m_playbackTarget = std::make_unique<MediaPlaybackTarget>(); 1556 m_playbackTarget->setDevicePickerContext(target.devicePickerContext()); 1552 void MediaPlayerPrivateQTKit::setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&& target) 1553 { 1554 m_playbackTarget = WTF::move(target); 1557 1555 } 1558 1556 -
trunk/Source/WebKit/mac/ChangeLog
r182623 r182630 1 2015-04-10 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Refactor MediaPlaybackTarget 4 https://bugs.webkit.org/show_bug.cgi?id=143571 5 6 Reviewed by Jer Noble. 7 8 * WebView/WebMediaPlaybackTargetPicker.h: 9 * WebView/WebMediaPlaybackTargetPicker.mm: 10 (WebMediaPlaybackTargetPicker::didChoosePlaybackTarget): Take a Ref<MediaPlaybackTarget>&&. 11 1 12 2015-04-09 Andy Estes <aestes@apple.com> 2 13 -
trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.h
r181838 r182630 45 45 46 46 // WebCore::MediaPlaybackTargetPicker::Client 47 virtual void didChoosePlaybackTarget( const WebCore::MediaPlaybackTarget&) override;47 virtual void didChoosePlaybackTarget(Ref<WebCore::MediaPlaybackTarget>&&) override; 48 48 virtual void externalOutputDeviceAvailableDidChange(bool) override; 49 49 -
trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm
r181838 r182630 56 56 } 57 57 58 void WebMediaPlaybackTargetPicker::didChoosePlaybackTarget( const WebCore::MediaPlaybackTarget& target)58 void WebMediaPlaybackTargetPicker::didChoosePlaybackTarget(Ref<WebCore::MediaPlaybackTarget>&& target) 59 59 { 60 60 if (!m_page) 61 61 return; 62 62 63 m_page->didChoosePlaybackTarget( target);63 m_page->didChoosePlaybackTarget(WTF::move(target)); 64 64 } 65 65 -
trunk/Source/WebKit2/ChangeLog
r182626 r182630 1 2015-04-10 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Refactor MediaPlaybackTarget 4 https://bugs.webkit.org/show_bug.cgi?id=143571 5 6 Reviewed by Jer Noble. 7 8 Pass a MediaPlaybackTargetContext across process boundary instead of a MediaPlaybackTarget. 9 * Shared/WebCoreArgumentCoders.h: 10 (IPC::ArgumentCoder<MediaPlaybackTargetContext>::encode): New. 11 (IPC::ArgumentCoder<MediaPlaybackTargetContext>::decode): New. 12 * Shared/mac/WebCoreArgumentCoders.cpp: 13 (IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): New. 14 (IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): New. 15 (IPC::ArgumentCoder<MediaPlaybackTarget>::encode): Deleted. 16 (IPC::ArgumentCoder<MediaPlaybackTarget>::decode): Deleted. 17 * UIProcess/WebPageProxy.cpp: 18 (WebKit::WebPageProxy::didChoosePlaybackTarget): Take a Ref<MediaPlaybackTarget>&&. 19 * UIProcess/WebPageProxy.h: 20 * WebProcess/WebPage/WebPage.h: 21 * WebProcess/WebPage/WebPage.messages.in: 22 * WebProcess/WebPage/mac/WebPageMac.mm: 23 (WebKit::WebPage::playbackTargetSelected): Take a Ref<MediaPlaybackTarget>&&. 24 1 25 2015-04-10 Hunseop Jeong <hs85.jeong@samsung.com> 2 26 -
trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp
r182378 r182630 84 84 #endif // PLATFORM(IOS) 85 85 86 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 87 #import <WebCore/MediaPlaybackTargetContext.h> 88 #endif 89 86 90 using namespace WebCore; 87 91 using namespace WebKit; … … 2133 2137 } 2134 2138 2139 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 2140 void ArgumentCoder<MediaPlaybackTargetContext>::encode(ArgumentEncoder& encoder, const MediaPlaybackTargetContext& target) 2141 { 2142 int32_t targetType = target.type; 2143 encoder << targetType; 2144 2145 if (!target.encodingRequiresPlatformData()) 2146 return; 2147 2148 encodePlatformData(encoder, target); 2149 } 2150 2151 bool ArgumentCoder<MediaPlaybackTargetContext>::decode(ArgumentDecoder& decoder, MediaPlaybackTargetContext& target) 2152 { 2153 int32_t targetType; 2154 if (!decoder.decode(targetType)) 2155 return false; 2156 2157 target.type = static_cast<MediaPlaybackTargetContext::ContextType>(targetType); 2158 if (!target.encodingRequiresPlatformData()) 2159 return false; 2160 2161 return decodePlatformData(decoder, target); 2162 } 2163 #endif 2164 2135 2165 } // namespace IPC -
trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.h
r181423 r182630 118 118 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 119 119 namespace WebCore { 120 class MediaPlaybackTarget;120 struct MediaPlaybackTargetContext; 121 121 } 122 122 #endif … … 462 462 463 463 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 464 template<> struct ArgumentCoder<WebCore::MediaPlaybackTarget> { 465 static void encode(ArgumentEncoder&, const WebCore::MediaPlaybackTarget&); 466 static bool decode(ArgumentDecoder&, WebCore::MediaPlaybackTarget&); 464 template<> struct ArgumentCoder<WebCore::MediaPlaybackTargetContext> { 465 static void encode(ArgumentEncoder&, const WebCore::MediaPlaybackTargetContext&); 466 static bool decode(ArgumentDecoder&, WebCore::MediaPlaybackTargetContext&); 467 static void encodePlatformData(ArgumentEncoder&, const WebCore::MediaPlaybackTargetContext&); 468 static bool decodePlatformData(ArgumentDecoder&, WebCore::MediaPlaybackTargetContext&); 467 469 }; 468 470 #endif -
trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm
r181442 r182630 45 45 46 46 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 47 #import <WebCore/MediaPlaybackTarget.h> 47 #import <WebCore/AVFoundationSPI.h> 48 #import <WebCore/MediaPlaybackTargetContext.h> 49 #import <WebCore/SoftLinking.h> 50 #import <objc/runtime.h> 51 52 SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation) 53 SOFT_LINK_CLASS(AVFoundation, AVOutputContext) 48 54 #endif 49 55 … … 438 444 439 445 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 440 void ArgumentCoder<MediaPlaybackTarget>::encode(ArgumentEncoder& encoder, const MediaPlaybackTarget& target) 441 { 446 447 static NSString *deviceContextKey() 448 { 449 static NSString * const key = @"deviceContext"; 450 return key; 451 } 452 453 void ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData(ArgumentEncoder& encoder, const MediaPlaybackTargetContext& target) 454 { 455 ASSERT(target.type == MediaPlaybackTargetContext::AVOutputContextType); 456 442 457 RetainPtr<NSMutableData> data = adoptNS([[NSMutableData alloc] init]); 443 458 RetainPtr<NSKeyedArchiver> archiver = adoptNS([[NSKeyedArchiver alloc] initForWritingWithMutableData:data.get()]); 444 459 [archiver setRequiresSecureCoding:YES]; 445 target.encode(archiver.get()); 460 461 if ([getAVOutputContextClass() conformsToProtocol:@protocol(NSSecureCoding)]) 462 [archiver encodeObject:target.context.avOutputContext forKey:deviceContextKey()]; 463 446 464 [archiver finishEncoding]; 447 465 IPC::encode(encoder, reinterpret_cast<CFDataRef>(data.get())); 448 } 449 450 bool ArgumentCoder<MediaPlaybackTarget>::decode(ArgumentDecoder& decoder, MediaPlaybackTarget& target) 451 { 466 467 } 468 469 bool ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData(ArgumentDecoder& decoder, MediaPlaybackTargetContext& target) 470 { 471 ASSERT(target.type == MediaPlaybackTargetContext::AVOutputContextType); 472 473 if (![getAVOutputContextClass() conformsToProtocol:@protocol(NSSecureCoding)]) 474 return false; 475 452 476 RetainPtr<CFDataRef> data; 453 477 if (!IPC::decode(decoder, data)) … … 456 480 RetainPtr<NSKeyedUnarchiver> unarchiver = adoptNS([[NSKeyedUnarchiver alloc] initForReadingWithData:(NSData *)data.get()]); 457 481 [unarchiver setRequiresSecureCoding:YES]; 458 if (!MediaPlaybackTarget::decode(unarchiver.get(), target)) 459 return false; 482 483 AVOutputContext *context = nil; 484 @try { 485 context = [unarchiver decodeObjectOfClass:getAVOutputContextClass() forKey:deviceContextKey()]; 486 } @catch (NSException *exception) { 487 LOG_ERROR("The target picker being decoded is not a AVOutputContext."); 488 return false; 489 } 490 491 target.context.avOutputContext = context; 460 492 461 493 [unarchiver finishDecoding]; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r182623 r182630 153 153 #endif 154 154 155 #if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) 156 #include <WebCore/MediaPlaybackTarget.h> 157 #endif 158 155 159 // This controls what strategy we use for mouse wheel coalescing. 156 160 #define MERGE_WHEEL_EVENTS 1 … … 5720 5724 } 5721 5725 5722 void WebPageProxy::didChoosePlaybackTarget( const WebCore::MediaPlaybackTarget& target)5723 { 5724 if (!isValid()) 5725 return; 5726 5727 m_process->send(Messages::WebPage::PlaybackTargetSelected(target ), m_pageID);5726 void WebPageProxy::didChoosePlaybackTarget(Ref<MediaPlaybackTarget>&& target) 5727 { 5728 if (!isValid()) 5729 return; 5730 5731 m_process->send(Messages::WebPage::PlaybackTargetSelected(target->targetContext()), m_pageID); 5728 5732 } 5729 5733 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r182442 r182630 1025 1025 1026 1026 // WebCore::MediaPlaybackTargetPicker::Client 1027 virtual void didChoosePlaybackTarget( const WebCore::MediaPlaybackTarget&) override;1027 virtual void didChoosePlaybackTarget(Ref<WebCore::MediaPlaybackTarget>&&) override; 1028 1028 virtual void externalOutputDeviceAvailableDidChange(bool) override; 1029 1029 #endif -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r182603 r182630 127 127 class IntPoint; 128 128 class KeyboardEvent; 129 class MediaPlaybackTarget;130 129 class Page; 131 130 class PrintContext; … … 140 139 struct Highlight; 141 140 struct KeypressCommand; 141 struct MediaPlaybackTargetContext; 142 142 struct TextCheckingResult; 143 143 } … … 1106 1106 1107 1107 #if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) 1108 void playbackTargetSelected(const WebCore::MediaPlaybackTarget & outputDevice) const;1108 void playbackTargetSelected(const WebCore::MediaPlaybackTargetContext& outputDevice) const; 1109 1109 void playbackTargetAvailabilityDidChange(bool); 1110 1110 #endif -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in
r182338 r182630 419 419 420 420 #if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) 421 PlaybackTargetSelected( WebCore::MediaPlaybackTarget target)421 PlaybackTargetSelected(struct WebCore::MediaPlaybackTargetContext target) 422 422 PlaybackTargetAvailabilityDidChange(bool available) 423 423 #endif -
trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm
r182603 r182630 89 89 90 90 #if ENABLE(WIRELESS_PLAYBACK_TARGET) 91 #include <WebCore/MediaPlaybackTarget .h>91 #include <WebCore/MediaPlaybackTargetMac.h> 92 92 #endif 93 93 … … 1229 1229 1230 1230 #if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) 1231 void WebPage::playbackTargetSelected(const WebCore::MediaPlaybackTarget& playbackTarget) const 1232 { 1233 m_page->didChoosePlaybackTarget(playbackTarget); 1231 void WebPage::playbackTargetSelected(const WebCore::MediaPlaybackTargetContext& targetContext) const 1232 { 1233 ASSERT(targetContext.type == MediaPlaybackTargetContext::AVOutputContextType); 1234 1235 m_page->didChoosePlaybackTarget(WebCore::MediaPlaybackTargetMac::create(targetContext.context.avOutputContext)); 1234 1236 } 1235 1237
Note:
See TracChangeset
for help on using the changeset viewer.