Diff
Modified: trunk/Source/WebCore/ChangeLog (181837 => 181838)
--- trunk/Source/WebCore/ChangeLog 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/ChangeLog 2015-03-23 01:08:42 UTC (rev 181838)
@@ -1,3 +1,27 @@
+2015-03-22 Eric Carlson <[email protected]>
+
+ [Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
+ https://bugs.webkit.org/show_bug.cgi?id=142940
+
+ Reviewed by Sam Weinig.
+
+ * 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.
+
2015-03-22 Anders Carlsson <[email protected]>
_WKWebsiteDataStore should clear WebSQL databases
Modified: trunk/Source/WebCore/dom/Document.cpp (181837 => 181838)
--- trunk/Source/WebCore/dom/Document.cpp 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/dom/Document.cpp 2015-03-23 01:08:42 UTC (rev 181838)
@@ -6517,7 +6517,7 @@
client->externalOutputDeviceAvailableDidChange(available);
}
-void Document::didChoosePlaybackTarget(MediaPlaybackTarget& device)
+void Document::didChoosePlaybackTarget(const MediaPlaybackTarget& device)
{
MediaPlaybackTargetPickerClient* clientThatRequestedPicker = nullptr;
Modified: trunk/Source/WebCore/dom/Document.h (181837 => 181838)
--- trunk/Source/WebCore/dom/Document.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/dom/Document.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -1223,7 +1223,7 @@
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
void showPlaybackTargetPicker(const HTMLMediaElement&);
- void didChoosePlaybackTarget(MediaPlaybackTarget&);
+ void didChoosePlaybackTarget(const MediaPlaybackTarget&);
void addPlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&);
void removePlaybackTargetPickerClient(MediaPlaybackTargetPickerClient&);
bool requiresPlaybackTargetRouteMonitoring();
Modified: trunk/Source/WebCore/html/HTMLMediaSession.cpp (181837 => 181838)
--- trunk/Source/WebCore/html/HTMLMediaSession.cpp 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/html/HTMLMediaSession.cpp 2015-03-23 01:08:42 UTC (rev 181838)
@@ -275,7 +275,7 @@
#endif
}
-void HTMLMediaSession::didChoosePlaybackTarget(MediaPlaybackTarget& device)
+void HTMLMediaSession::didChoosePlaybackTarget(const MediaPlaybackTarget& device)
{
m_haveRequestedPlaybackTargetPicker = false;
client().setWirelessPlaybackTarget(device);
Modified: trunk/Source/WebCore/html/HTMLMediaSession.h (181837 => 181838)
--- trunk/Source/WebCore/html/HTMLMediaSession.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/html/HTMLMediaSession.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -98,7 +98,7 @@
void targetAvailabilityChangedTimerFired();
// MediaPlaybackTargetPickerClient
- virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) override;
+ virtual void didChoosePlaybackTarget(const MediaPlaybackTarget&) override;
virtual void externalOutputDeviceAvailableDidChange(bool) const override;
virtual bool requiresPlaybackTargetRouteMonitoring() const override;
virtual bool requestedPlaybackTargetPicker() const override { return m_haveRequestedPlaybackTargetPicker; }
Modified: trunk/Source/WebCore/page/Page.cpp (181837 => 181838)
--- trunk/Source/WebCore/page/Page.cpp 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/page/Page.cpp 2015-03-23 01:08:42 UTC (rev 181838)
@@ -1694,7 +1694,7 @@
#endif
}
-void Page::didChoosePlaybackTarget(MediaPlaybackTarget& target)
+void Page::didChoosePlaybackTarget(const MediaPlaybackTarget& target)
{
Document* documentThatRequestedPicker = nullptr;
Modified: trunk/Source/WebCore/page/Page.h (181837 => 181838)
--- trunk/Source/WebCore/page/Page.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/page/Page.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -430,7 +430,7 @@
MediaPlaybackTarget& playbackTarget() const { return *m_playbackTarget.get(); }
void configurePlaybackTargetMonitoring();
- WEBCORE_EXPORT void didChoosePlaybackTarget(MediaPlaybackTarget&);
+ WEBCORE_EXPORT void didChoosePlaybackTarget(const MediaPlaybackTarget&);
WEBCORE_EXPORT void playbackTargetAvailabilityDidChange(bool);
#endif
Modified: trunk/Source/WebCore/platform/audio/MediaSession.h (181837 => 181838)
--- trunk/Source/WebCore/platform/audio/MediaSession.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/platform/audio/MediaSession.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -119,7 +119,7 @@
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
// MediaPlaybackTargetPickerClient
- virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) override { }
+ virtual void didChoosePlaybackTarget(const MediaPlaybackTarget&) override { }
virtual void externalOutputDeviceAvailableDidChange(bool) const override { }
virtual bool requiresPlaybackTargetRouteMonitoring() const override { return false; }
virtual bool requestedPlaybackTargetPicker() const override { return false; }
Modified: trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPickerClient.h (181837 => 181838)
--- trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPickerClient.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPickerClient.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -38,7 +38,7 @@
public:
virtual ~MediaPlaybackTargetPickerClient() { }
- virtual void didChoosePlaybackTarget(MediaPlaybackTarget&) = 0;
+ virtual void didChoosePlaybackTarget(const MediaPlaybackTarget&) = 0;
virtual void externalOutputDeviceAvailableDidChange(bool) const = 0;
virtual bool requiresPlaybackTargetRouteMonitoring() const = 0;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm (181837 => 181838)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm 2015-03-23 01:08:42 UTC (rev 181838)
@@ -118,7 +118,7 @@
[m_devicePickerMenuController addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName options:NSKeyValueObservingOptionNew context:nil];
[m_devicePickerMenuController addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName options:NSKeyValueObservingOptionNew context:nil];
- if (devicePicker().externalOutputDeviceAvailable)
+ if (m_devicePickerMenuController.get().externalOutputDeviceAvailable)
availableDevicesDidChange();
}
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (181837 => 181838)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2015-03-23 01:08:42 UTC (rev 181838)
@@ -13,6 +13,8 @@
06693DDD0BFBA85200216072 /* WebInspectorClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06693DDB0BFBA85200216072 /* WebInspectorClient.mm */; };
070F549B17F1E42B00169E04 /* WebUserMediaClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F549917F1E42B00169E04 /* WebUserMediaClient.h */; };
070F549C17F1E42B00169E04 /* WebUserMediaClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 070F549A17F1E42B00169E04 /* WebUserMediaClient.mm */; };
+ 072E5F451ABF88750003B164 /* WebMediaPlaybackTargetPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 072E5F431ABF88750003B164 /* WebMediaPlaybackTargetPicker.h */; };
+ 072E5F461ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm in Sources */ = {isa = PBXBuildFile; fileRef = 072E5F441ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm */; };
0AB752370FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */; };
0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */; };
0AEBFF630F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -476,6 +478,8 @@
06693DDB0BFBA85200216072 /* WebInspectorClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspectorClient.mm; sourceTree = "<group>"; };
070F549917F1E42B00169E04 /* WebUserMediaClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUserMediaClient.h; sourceTree = "<group>"; };
070F549A17F1E42B00169E04 /* WebUserMediaClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebUserMediaClient.mm; sourceTree = "<group>"; };
+ 072E5F431ABF88750003B164 /* WebMediaPlaybackTargetPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaPlaybackTargetPicker.h; sourceTree = "<group>"; };
+ 072E5F441ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebMediaPlaybackTargetPicker.mm; sourceTree = "<group>"; };
0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapeContainerCheckContextInfo.h; sourceTree = "<group>"; };
0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckContextInfo.mm; sourceTree = "<group>"; };
0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = WebNetscapeContainerCheckPrivate.h; sourceTree = "<group>"; };
@@ -1336,6 +1340,8 @@
9C7CABBB0190A37C0ECA16EA /* WebView */ = {
isa = PBXGroup;
children = (
+ 072E5F431ABF88750003B164 /* WebMediaPlaybackTargetPicker.h */,
+ 072E5F441ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm */,
F52CA6BD02DF9D0F018635CA /* HTML */,
51E94C0706C02CA300A9B09E /* PDF */,
A10C1D79182030190036883A /* ios */,
@@ -1977,6 +1983,7 @@
DD7CDEE70A23BA9E00069928 /* WebTypesInternal.h in Headers */,
939810750824BF01008DF038 /* WebUIDelegate.h in Headers */,
A10C1D6B1820300E0036883A /* WebFrameIOS.h in Headers */,
+ 072E5F451ABF88750003B164 /* WebMediaPlaybackTargetPicker.h in Headers */,
939810830824BF01008DF038 /* WebUIDelegatePrivate.h in Headers */,
A10C1D3418202FC50036883A /* WebGeolocationCoreLocationProvider.h in Headers */,
939810150824BF01008DF038 /* WebURLsWithTitles.h in Headers */,
@@ -2293,6 +2300,7 @@
5185F62810712B97007AA393 /* WebNavigationData.mm in Sources */,
0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */,
0AEBFF640F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm in Sources */,
+ 072E5F461ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm in Sources */,
1AEA66D50DC6B1FF003D12BF /* WebNetscapePluginEventHandler.mm in Sources */,
A10C1D651820300E0036883A /* WebChromeClientIOS.mm in Sources */,
A10C1D3518202FC50036883A /* WebGeolocationCoreLocationProvider.mm in Sources */,
Modified: trunk/Source/WebKit/mac/ChangeLog (181837 => 181838)
--- trunk/Source/WebKit/mac/ChangeLog 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-03-23 01:08:42 UTC (rev 181838)
@@ -1,3 +1,40 @@
+2015-03-22 Eric Carlson <[email protected]>
+
+ [Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
+ https://bugs.webkit.org/show_bug.cgi?id=142940
+
+ Reviewed by Sam Weinig.
+
+ * 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:
+
2015-03-19 Andy Estes <[email protected]>
[Content Filtering] Add tests for unblock requests
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h (181837 => 181838)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -213,6 +213,12 @@
WebView* webView() { return m_webView; }
#endif
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+ virtual void showPlaybackTargetPicker(const WebCore::IntPoint&, bool /* hasVideo */) override;
+ virtual void startingMonitoringPlaybackTargets() override;
+ virtual void stopMonitoringPlaybackTargets() override;
+#endif
+
private:
WebView *m_webView;
};
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm (181837 => 181838)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm 2015-03-23 01:08:42 UTC (rev 181838)
@@ -1034,3 +1034,20 @@
}
#endif
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+void WebChromeClient::showPlaybackTargetPicker(const WebCore::IntPoint& location, bool hasVideo)
+{
+ [m_webView _showPlaybackTargetPicker:location hasVideo:hasVideo];
+}
+
+void WebChromeClient::startingMonitoringPlaybackTargets()
+{
+ [m_webView _startingMonitoringPlaybackTargets];
+}
+
+void WebChromeClient::stopMonitoringPlaybackTargets()
+{
+ [m_webView _stopMonitoringPlaybackTargets];
+}
+#endif
Added: trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.h (0 => 181838)
--- trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.h (rev 0)
+++ trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+
+#import <WebCore/MediaPlaybackTargetPicker.h>
+
+namespace WebCore {
+class FloatRect;
+class Page;
+}
+
+class WebMediaPlaybackTargetPicker : public WebCore::MediaPlaybackTargetPicker::Client {
+public:
+ static std::unique_ptr<WebMediaPlaybackTargetPicker> create(WebCore::Page&);
+
+ explicit WebMediaPlaybackTargetPicker(WebCore::Page&);
+ virtual ~WebMediaPlaybackTargetPicker() { }
+
+ void showPlaybackTargetPicker(const WebCore::FloatRect&, bool /* hasVideo */);
+ void startingMonitoringPlaybackTargets();
+ void stopMonitoringPlaybackTargets();
+
+ // WebCore::MediaPlaybackTargetPicker::Client
+ virtual void didChoosePlaybackTarget(const WebCore::MediaPlaybackTarget&) override;
+ virtual void externalOutputDeviceAvailableDidChange(bool) override;
+
+ void invalidate();
+
+private:
+ WebCore::MediaPlaybackTargetPicker& targetPicker();
+
+ WebCore::Page* m_page;
+ std::unique_ptr<WebCore::MediaPlaybackTargetPicker> m_targetPicker;
+};
+#endif
Added: trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm (0 => 181838)
--- trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm (rev 0)
+++ trunk/Source/WebKit/mac/WebView/WebMediaPlaybackTargetPicker.mm 2015-03-23 01:08:42 UTC (rev 181838)
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "WebMediaPlaybackTargetPicker.h"
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+
+#import <WebCore/MediaPlaybackTargetPickerMac.h>
+#import <WebCore/Page.h>
+
+std::unique_ptr<WebMediaPlaybackTargetPicker> WebMediaPlaybackTargetPicker::create(WebCore::Page& page)
+{
+ return std::make_unique<WebMediaPlaybackTargetPicker>(page);
+}
+
+WebMediaPlaybackTargetPicker::WebMediaPlaybackTargetPicker(WebCore::Page& page)
+ : m_page(&page)
+{
+}
+
+void WebMediaPlaybackTargetPicker::showPlaybackTargetPicker(const WebCore::FloatRect& rect, bool hasVideo)
+{
+ targetPicker().showPlaybackTargetPicker(WebCore::IntRect(rect), hasVideo);
+}
+
+void WebMediaPlaybackTargetPicker::startingMonitoringPlaybackTargets()
+{
+ targetPicker().startingMonitoringPlaybackTargets();
+}
+
+void WebMediaPlaybackTargetPicker::stopMonitoringPlaybackTargets()
+{
+ targetPicker().stopMonitoringPlaybackTargets();
+}
+
+void WebMediaPlaybackTargetPicker::didChoosePlaybackTarget(const WebCore::MediaPlaybackTarget& target)
+{
+ if (!m_page)
+ return;
+
+ m_page->didChoosePlaybackTarget(target);
+}
+
+void WebMediaPlaybackTargetPicker::externalOutputDeviceAvailableDidChange(bool available)
+{
+ if (!m_page)
+ return;
+
+ m_page->playbackTargetAvailabilityDidChange(available);
+}
+
+void WebMediaPlaybackTargetPicker::invalidate()
+{
+ m_page = nullptr;
+}
+
+WebCore::MediaPlaybackTargetPicker& WebMediaPlaybackTargetPicker::targetPicker()
+{
+ if (!m_targetPicker)
+ m_targetPicker = WebCore::MediaPlaybackTargetPickerMac::create(*this);
+
+ return *m_targetPicker.get();
+}
+
+#endif
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (181837 => 181838)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2015-03-23 01:08:42 UTC (rev 181838)
@@ -291,6 +291,10 @@
#import <WebCore/HIDGamepadProvider.h>
#endif
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+#import "WebMediaPlaybackTargetPicker.h"
+#endif
+
#if PLATFORM(MAC)
SOFT_LINK_CONSTANT_MAY_FAIL(Lookup, LUNotificationPopoverWillClose, NSString *)
SOFT_LINK_CONSTANT_MAY_FAIL(Lookup, LUTermOptionDisableSearchTermIndicator, NSString *)
@@ -1780,6 +1784,13 @@
[self _closePluginDatabases];
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+ if (_private->m_playbackTargetPicker) {
+ _private->m_playbackTargetPicker->invalidate();
+ _private->m_playbackTargetPicker = nullptr;
+ }
+#endif
+
#ifndef NDEBUG
// Need this to make leak messages accurate.
if (applicationIsTerminating) {
@@ -8640,6 +8651,42 @@
}
#endif // PLATFORM(MAC)
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+- (WebMediaPlaybackTargetPicker *) _devicePicker
+{
+ if (!_private->m_playbackTargetPicker)
+ _private->m_playbackTargetPicker = WebMediaPlaybackTargetPicker::create(*_private->page);
+
+ return _private->m_playbackTargetPicker.get();
+}
+
+- (void)_showPlaybackTargetPicker:(const WebCore::IntPoint&)location hasVideo:(BOOL)hasVideo
+{
+ if (!_private->page)
+ return;
+
+ NSRect rectInWindowCoordinates = [self convertRect:[self _convertRectFromRootView:CGRectMake(location.x(), location.y(), 0, 0)] toView:nil];
+ NSRect rectInScreenCoordinates = [self.window convertRectToScreen:rectInWindowCoordinates];
+ [self _devicePicker]->showPlaybackTargetPicker(rectInScreenCoordinates, hasVideo);
+}
+
+- (void)_startingMonitoringPlaybackTargets
+{
+ if (!_private->page)
+ return;
+
+ [self _devicePicker]->startingMonitoringPlaybackTargets();
+}
+
+- (void)_stopMonitoringPlaybackTargets
+{
+ if (!_private->page)
+ return;
+
+ [self _devicePicker]->stopMonitoringPlaybackTargets();
+}
+#endif
+
@end
@implementation WebView (WebViewDeviceOrientation)
Modified: trunk/Source/WebKit/mac/WebView/WebViewData.h (181837 => 181838)
--- trunk/Source/WebKit/mac/WebView/WebViewData.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/mac/WebView/WebViewData.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -80,6 +80,10 @@
@class WebFixedPositionContent;
#endif
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+class WebMediaPlaybackTargetPicker;
+#endif
+
extern BOOL applicationIsTerminating;
extern int pluginDatabaseClientCount;
@@ -303,5 +307,9 @@
RetainPtr<NSData> sourceApplicationAuditData;
BOOL _didPerformFirstNavigation;
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+ std::unique_ptr<WebMediaPlaybackTargetPicker> m_playbackTargetPicker;
+#endif
}
@end
Modified: trunk/Source/WebKit/mac/WebView/WebViewData.mm (181837 => 181838)
--- trunk/Source/WebKit/mac/WebView/WebViewData.mm 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/mac/WebView/WebViewData.mm 2015-03-23 01:08:42 UTC (rev 181838)
@@ -46,6 +46,10 @@
#import "WebGeolocationProviderIOS.h"
#endif
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
+#import "WebMediaPlaybackTargetPicker.h"
+#endif
+
BOOL applicationIsTerminating = NO;
int pluginDatabaseClientCount = 0;
Modified: trunk/Source/WebKit/mac/WebView/WebViewInternal.h (181837 => 181838)
--- trunk/Source/WebKit/mac/WebView/WebViewInternal.h 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit/mac/WebView/WebViewInternal.h 2015-03-23 01:08:42 UTC (rev 181838)
@@ -60,6 +60,7 @@
}
struct DictionaryPopupInfo;
+class WebMediaPlaybackTargetPicker;
class WebSelectionServiceController;
#endif
@@ -268,4 +269,11 @@
#endif
#endif
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS) && defined(__cplusplus)
+- (WebMediaPlaybackTargetPicker *) _devicePicker;
+- (void)_showPlaybackTargetPicker:(const WebCore::IntPoint&)location hasVideo:(BOOL)hasVideo;
+- (void)_startingMonitoringPlaybackTargets;
+- (void)_stopMonitoringPlaybackTargets;
+#endif
+
@end
Modified: trunk/Source/WebKit2/ChangeLog (181837 => 181838)
--- trunk/Source/WebKit2/ChangeLog 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit2/ChangeLog 2015-03-23 01:08:42 UTC (rev 181838)
@@ -1,3 +1,13 @@
+2015-03-22 Eric Carlson <[email protected]>
+
+ [Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
+ https://bugs.webkit.org/show_bug.cgi?id=142940
+
+ Reviewed by Sam Weinig.
+
+ * WebProcess/WebPage/mac/WebPageMac.mm:
+ (WebKit::WebPage::playbackTargetSelected): Argument to didChoosePlaybackTarget is now const.
+
2015-03-22 Anders Carlsson <[email protected]>
_WKWebsiteDataStore should clear WebSQL databases
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm (181837 => 181838)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm 2015-03-22 22:50:23 UTC (rev 181837)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm 2015-03-23 01:08:42 UTC (rev 181838)
@@ -1207,8 +1207,7 @@
#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
void WebPage::playbackTargetSelected(const WebCore::MediaPlaybackTarget& playbackTarget) const
{
- MediaPlaybackTarget nonConstTarget(playbackTarget.devicePickerContext());
- m_page->didChoosePlaybackTarget(nonConstTarget);
+ m_page->didChoosePlaybackTarget(playbackTarget);
}
void WebPage::playbackTargetAvailabilityDidChange(bool changed)