Changeset 181838 in webkit


Ignore:
Timestamp:
Mar 22, 2015 6:08:42 PM (9 years ago)
Author:
eric.carlson@apple.com
Message:

[Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
https://bugs.webkit.org/show_bug.cgi?id=142940

Reviewed by Sam Weinig.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::didChoosePlaybackTarget): const-ify the didChoosePlaybackTarget argument.

  • dom/Document.h:
  • html/HTMLMediaSession.cpp:

(WebCore::HTMLMediaSession::didChoosePlaybackTarget): Ditto.

  • html/HTMLMediaSession.h:
  • page/Page.cpp:

(WebCore::Page::didChoosePlaybackTarget): Ditto.

  • page/Page.h:
  • platform/audio/MediaSession.h:
  • platform/graphics/MediaPlaybackTargetPickerClient.h:
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:

(WebCore::MediaPlaybackTargetPickerMac::devicePicker): Ditto.

Source/WebKit/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::showPlaybackTargetPicker): New.
(WebChromeClient::startingMonitoringPlaybackTargets): New.
(WebChromeClient::stopMonitoringPlaybackTargets): New.

  • WebView/WebView.mm:

(-[WebView _close]): Invalidate and free the target picker.
(-[WebView _devicePicker]): New.
(-[WebView _showPlaybackTargetPicker:hasVideo:]): New.
(-[WebView _startingMonitoringPlaybackTargets]): New.
(-[WebView _stopMonitoringPlaybackTargets]): New.

  • WebView/WebMediaPlaybackTargetPicker.h:
  • WebView/WebMediaPlaybackTargetPicker.mm:

(WebMediaPlaybackTargetPicker::create): New.
(WebMediaPlaybackTargetPicker::WebMediaPlaybackTargetPicker): New.
(WebMediaPlaybackTargetPicker::showPlaybackTargetPicker): New.
(WebMediaPlaybackTargetPicker::startingMonitoringPlaybackTargets): New.
(WebMediaPlaybackTargetPicker::stopMonitoringPlaybackTargets): New.
(WebMediaPlaybackTargetPicker::didChoosePlaybackTarget): New.
(WebMediaPlaybackTargetPicker::externalOutputDeviceAvailableDidChange): New.
(WebMediaPlaybackTargetPicker::invalidate): New.
(WebMediaPlaybackTargetPicker::targetPicker): New.

  • WebView/WebViewData.h:

(WebMediaPlaybackTargetPicker::~WebMediaPlaybackTargetPicker):

  • WebView/WebViewData.mm:
  • WebView/WebViewInternal.h:

Source/WebKit2:

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::playbackTargetSelected): Argument to didChoosePlaybackTarget is now const.

Location:
trunk/Source
Files:
2 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r181837 r181838  
     12015-03-22  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
     4        https://bugs.webkit.org/show_bug.cgi?id=142940
     5
     6        Reviewed by Sam Weinig.
     7
     8        * dom/Document.cpp:
     9        (WebCore::Document::didChoosePlaybackTarget): const-ify the didChoosePlaybackTarget argument.
     10        * dom/Document.h:
     11
     12        * html/HTMLMediaSession.cpp:
     13        (WebCore::HTMLMediaSession::didChoosePlaybackTarget): Ditto.
     14        * html/HTMLMediaSession.h:
     15
     16        * page/Page.cpp:
     17        (WebCore::Page::didChoosePlaybackTarget):  Ditto.
     18        * page/Page.h:
     19
     20        * platform/audio/MediaSession.h:
     21        * platform/graphics/MediaPlaybackTargetPickerClient.h:
     22        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
     23        (WebCore::MediaPlaybackTargetPickerMac::devicePicker):  Ditto.
     24
    1252015-03-22  Anders Carlsson  <andersca@apple.com>
    226
  • trunk/Source/WebCore/dom/Document.cpp

    r181753 r181838  
    65186518}
    65196519
    6520 void Document::didChoosePlaybackTarget(MediaPlaybackTarget& device)
     6520void Document::didChoosePlaybackTarget(const MediaPlaybackTarget& device)
    65216521{
    65226522    MediaPlaybackTargetPickerClient* clientThatRequestedPicker = nullptr;
  • trunk/Source/WebCore/dom/Document.h

    r181615 r181838  
    12241224#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    12251225    void showPlaybackTargetPicker(const HTMLMediaElement&);
    1226     void didChoosePlaybackTarget(MediaPlaybackTarget&);
     1226    void didChoosePlaybackTarget(const MediaPlaybackTarget&);
    12271227    void addPlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&);
    12281228    void removePlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&);
  • trunk/Source/WebCore/html/HTMLMediaSession.cpp

    r181423 r181838  
    276276}
    277277
    278 void HTMLMediaSession::didChoosePlaybackTarget(MediaPlaybackTarget& device)
     278void HTMLMediaSession::didChoosePlaybackTarget(const MediaPlaybackTarget& device)
    279279{
    280280    m_haveRequestedPlaybackTargetPicker = false;
  • trunk/Source/WebCore/html/HTMLMediaSession.h

    r181423 r181838  
    9999
    100100    // MediaPlaybackTargetPickerClient
    101     virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) override;
     101    virtual void didChoosePlaybackTarget(const MediaPlaybackTarget&) override;
    102102    virtual void externalOutputDeviceAvailableDidChange(bool) const override;
    103103    virtual bool requiresPlaybackTargetRouteMonitoring() const override;
  • trunk/Source/WebCore/page/Page.cpp

    r181753 r181838  
    16951695}
    16961696
    1697 void Page::didChoosePlaybackTarget(MediaPlaybackTarget& target)
     1697void Page::didChoosePlaybackTarget(const MediaPlaybackTarget& target)
    16981698{
    16991699    Document* documentThatRequestedPicker = nullptr;
  • trunk/Source/WebCore/page/Page.h

    r181753 r181838  
    431431    void configurePlaybackTargetMonitoring();
    432432
    433     WEBCORE_EXPORT void didChoosePlaybackTarget(MediaPlaybackTarget&);
     433    WEBCORE_EXPORT void didChoosePlaybackTarget(const MediaPlaybackTarget&);
    434434    WEBCORE_EXPORT void playbackTargetAvailabilityDidChange(bool);
    435435#endif
  • trunk/Source/WebCore/platform/audio/MediaSession.h

    r181423 r181838  
    120120#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    121121    // MediaPlaybackTargetPickerClient
    122     virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) override { }
     122    virtual void didChoosePlaybackTarget(const MediaPlaybackTarget&) override { }
    123123    virtual void externalOutputDeviceAvailableDidChange(bool) const override { }
    124124    virtual bool requiresPlaybackTargetRouteMonitoring() const override { return false; }
  • trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPickerClient.h

    r181423 r181838  
    3939    virtual ~MediaPlaybackTargetPickerClient() { }
    4040
    41     virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) = 0;
     41    virtual void didChoosePlaybackTarget(const MediaPlaybackTarget&) = 0;
    4242    virtual void externalOutputDeviceAvailableDidChange(bool) const = 0;
    4343
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm

    r181777 r181838  
    119119        [m_devicePickerMenuController addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName options:NSKeyValueObservingOptionNew context:nil];
    120120
    121         if (devicePicker().externalOutputDeviceAvailable)
     121        if (m_devicePickerMenuController.get().externalOutputDeviceAvailable)
    122122            availableDevicesDidChange();
    123123    }
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r180876 r181838  
    1414                070F549B17F1E42B00169E04 /* WebUserMediaClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F549917F1E42B00169E04 /* WebUserMediaClient.h */; };
    1515                070F549C17F1E42B00169E04 /* WebUserMediaClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 070F549A17F1E42B00169E04 /* WebUserMediaClient.mm */; };
     16                072E5F451ABF88750003B164 /* WebMediaPlaybackTargetPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 072E5F431ABF88750003B164 /* WebMediaPlaybackTargetPicker.h */; };
     17                072E5F461ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm in Sources */ = {isa = PBXBuildFile; fileRef = 072E5F441ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm */; };
    1618                0AB752370FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */; };
    1719                0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */; };
     
    477479                070F549917F1E42B00169E04 /* WebUserMediaClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUserMediaClient.h; sourceTree = "<group>"; };
    478480                070F549A17F1E42B00169E04 /* WebUserMediaClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebUserMediaClient.mm; sourceTree = "<group>"; };
     481                072E5F431ABF88750003B164 /* WebMediaPlaybackTargetPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaPlaybackTargetPicker.h; sourceTree = "<group>"; };
     482                072E5F441ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebMediaPlaybackTargetPicker.mm; sourceTree = "<group>"; };
    479483                0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapeContainerCheckContextInfo.h; sourceTree = "<group>"; };
    480484                0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckContextInfo.mm; sourceTree = "<group>"; };
     
    13371341                        isa = PBXGroup;
    13381342                        children = (
     1343                                072E5F431ABF88750003B164 /* WebMediaPlaybackTargetPicker.h */,
     1344                                072E5F441ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm */,
    13391345                                F52CA6BD02DF9D0F018635CA /* HTML */,
    13401346                                51E94C0706C02CA300A9B09E /* PDF */,
     
    19781984                                939810750824BF01008DF038 /* WebUIDelegate.h in Headers */,
    19791985                                A10C1D6B1820300E0036883A /* WebFrameIOS.h in Headers */,
     1986                                072E5F451ABF88750003B164 /* WebMediaPlaybackTargetPicker.h in Headers */,
    19801987                                939810830824BF01008DF038 /* WebUIDelegatePrivate.h in Headers */,
    19811988                                A10C1D3418202FC50036883A /* WebGeolocationCoreLocationProvider.h in Headers */,
     
    22942301                                0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */,
    22952302                                0AEBFF640F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm in Sources */,
     2303                                072E5F461ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm in Sources */,
    22962304                                1AEA66D50DC6B1FF003D12BF /* WebNetscapePluginEventHandler.mm in Sources */,
    22972305                                A10C1D651820300E0036883A /* WebChromeClientIOS.mm in Sources */,
  • trunk/Source/WebKit/mac/ChangeLog

    r181791 r181838  
     12015-03-22  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
     4        https://bugs.webkit.org/show_bug.cgi?id=142940
     5
     6        Reviewed by Sam Weinig.
     7
     8        * WebCoreSupport/WebChromeClient.h:
     9        * WebCoreSupport/WebChromeClient.mm:
     10        (WebChromeClient::showPlaybackTargetPicker): New.
     11        (WebChromeClient::startingMonitoringPlaybackTargets): New.
     12        (WebChromeClient::stopMonitoringPlaybackTargets): New.
     13
     14        * WebView/WebView.mm:
     15        (-[WebView _close]): Invalidate and free the target picker.
     16        (-[WebView _devicePicker]): New.
     17        (-[WebView _showPlaybackTargetPicker:hasVideo:]): New.
     18        (-[WebView _startingMonitoringPlaybackTargets]): New.
     19        (-[WebView _stopMonitoringPlaybackTargets]): New.
     20
     21        * WebView/WebMediaPlaybackTargetPicker.h:
     22        * WebView/WebMediaPlaybackTargetPicker.mm:
     23        (WebMediaPlaybackTargetPicker::create): New.
     24        (WebMediaPlaybackTargetPicker::WebMediaPlaybackTargetPicker): New.
     25        (WebMediaPlaybackTargetPicker::showPlaybackTargetPicker): New.
     26        (WebMediaPlaybackTargetPicker::startingMonitoringPlaybackTargets): New.
     27        (WebMediaPlaybackTargetPicker::stopMonitoringPlaybackTargets): New.
     28        (WebMediaPlaybackTargetPicker::didChoosePlaybackTarget): New.
     29        (WebMediaPlaybackTargetPicker::externalOutputDeviceAvailableDidChange): New.
     30        (WebMediaPlaybackTargetPicker::invalidate): New.
     31        (WebMediaPlaybackTargetPicker::targetPicker): New.
     32
     33        * WebView/WebViewData.h:
     34        (WebMediaPlaybackTargetPicker::~WebMediaPlaybackTargetPicker):
     35        * WebView/WebViewData.mm:
     36        * WebView/WebViewInternal.h:
     37
    1382015-03-19  Andy Estes  <aestes@apple.com>
    239
  • trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h

    r178575 r181838  
    214214#endif
    215215
     216#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     217    virtual void showPlaybackTargetPicker(const WebCore::IntPoint&, bool /* hasVideo */) override;
     218    virtual void startingMonitoringPlaybackTargets() override;
     219    virtual void stopMonitoringPlaybackTargets() override;
     220#endif
     221
    216222private:
    217223    WebView *m_webView;
  • trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm

    r179409 r181838  
    10351035
    10361036#endif
     1037
     1038#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     1039void WebChromeClient::showPlaybackTargetPicker(const WebCore::IntPoint& location, bool hasVideo)
     1040{
     1041    [m_webView _showPlaybackTargetPicker:location hasVideo:hasVideo];
     1042}
     1043
     1044void WebChromeClient::startingMonitoringPlaybackTargets()
     1045{
     1046    [m_webView _startingMonitoringPlaybackTargets];
     1047}
     1048
     1049void WebChromeClient::stopMonitoringPlaybackTargets()
     1050{
     1051    [m_webView _stopMonitoringPlaybackTargets];
     1052}
     1053#endif
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r181753 r181838  
    292292#endif
    293293
     294#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     295#import "WebMediaPlaybackTargetPicker.h"
     296#endif
     297
    294298#if PLATFORM(MAC)
    295299SOFT_LINK_CONSTANT_MAY_FAIL(Lookup, LUNotificationPopoverWillClose, NSString *)
     
    17811785    [self _closePluginDatabases];
    17821786
     1787#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     1788    if (_private->m_playbackTargetPicker) {
     1789        _private->m_playbackTargetPicker->invalidate();
     1790        _private->m_playbackTargetPicker = nullptr;
     1791    }
     1792#endif
     1793
    17831794#ifndef NDEBUG
    17841795    // Need this to make leak messages accurate.
     
    86418652#endif // PLATFORM(MAC)
    86428653
     8654#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     8655- (WebMediaPlaybackTargetPicker *) _devicePicker
     8656{
     8657    if (!_private->m_playbackTargetPicker)
     8658        _private->m_playbackTargetPicker = WebMediaPlaybackTargetPicker::create(*_private->page);
     8659
     8660    return _private->m_playbackTargetPicker.get();
     8661}
     8662
     8663- (void)_showPlaybackTargetPicker:(const WebCore::IntPoint&)location hasVideo:(BOOL)hasVideo
     8664{
     8665    if (!_private->page)
     8666        return;
     8667
     8668    NSRect rectInWindowCoordinates = [self convertRect:[self _convertRectFromRootView:CGRectMake(location.x(), location.y(), 0, 0)] toView:nil];
     8669    NSRect rectInScreenCoordinates = [self.window convertRectToScreen:rectInWindowCoordinates];
     8670    [self _devicePicker]->showPlaybackTargetPicker(rectInScreenCoordinates, hasVideo);
     8671}
     8672
     8673- (void)_startingMonitoringPlaybackTargets
     8674{
     8675    if (!_private->page)
     8676        return;
     8677
     8678    [self _devicePicker]->startingMonitoringPlaybackTargets();
     8679}
     8680
     8681- (void)_stopMonitoringPlaybackTargets
     8682{
     8683    if (!_private->page)
     8684        return;
     8685
     8686    [self _devicePicker]->stopMonitoringPlaybackTargets();
     8687}
     8688#endif
     8689
    86438690@end
    86448691
  • trunk/Source/WebKit/mac/WebView/WebViewData.h

    r178797 r181838  
    8181#endif
    8282
     83#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     84class WebMediaPlaybackTargetPicker;
     85#endif
     86
    8387extern BOOL applicationIsTerminating;
    8488extern int pluginDatabaseClientCount;
     
    304308
    305309    BOOL _didPerformFirstNavigation;
     310
     311#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     312    std::unique_ptr<WebMediaPlaybackTargetPicker> m_playbackTargetPicker;
     313#endif
    306314}
    307315@end
  • trunk/Source/WebKit/mac/WebView/WebViewData.mm

    r177131 r181838  
    4545#if PLATFORM(IOS)
    4646#import "WebGeolocationProviderIOS.h"
     47#endif
     48
     49#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
     50#import "WebMediaPlaybackTargetPicker.h"
    4751#endif
    4852
  • trunk/Source/WebKit/mac/WebView/WebViewInternal.h

    r178797 r181838  
    6161
    6262struct DictionaryPopupInfo;
     63class WebMediaPlaybackTargetPicker;
    6364class WebSelectionServiceController;
    6465#endif
     
    269270#endif
    270271
    271 @end
     272#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) && defined(__cplusplus)
     273- (WebMediaPlaybackTargetPicker *) _devicePicker;
     274- (void)_showPlaybackTargetPicker:(const WebCore::IntPoint&)location hasVideo:(BOOL)hasVideo;
     275- (void)_startingMonitoringPlaybackTargets;
     276- (void)_stopMonitoringPlaybackTargets;
     277#endif
     278
     279@end
  • trunk/Source/WebKit2/ChangeLog

    r181837 r181838  
     12015-03-22  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
     4        https://bugs.webkit.org/show_bug.cgi?id=142940
     5
     6        Reviewed by Sam Weinig.
     7
     8        * WebProcess/WebPage/mac/WebPageMac.mm:
     9        (WebKit::WebPage::playbackTargetSelected): Argument to didChoosePlaybackTarget is now const.
     10
    1112015-03-22  Anders Carlsson  <andersca@apple.com>
    212
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm

    r181660 r181838  
    12081208void WebPage::playbackTargetSelected(const WebCore::MediaPlaybackTarget& playbackTarget) const
    12091209{
    1210     MediaPlaybackTarget nonConstTarget(playbackTarget.devicePickerContext());
    1211     m_page->didChoosePlaybackTarget(nonConstTarget);
     1210    m_page->didChoosePlaybackTarget(playbackTarget);
    12121211}
    12131212
Note: See TracChangeset for help on using the changeset viewer.