Title: [216162] trunk
Revision
216162
Author
ryanhad...@apple.com
Date
2017-05-03 18:00:27 -0700 (Wed, 03 May 2017)

Log Message

Unreviewed, rolling out r216160 and r216161.
https://bugs.webkit.org/show_bug.cgi?id=171640

These changes broke the iOS build. (Requested by mlewis13 on
#webkit).

Reverted changesets:

"[MediaStream] Allow host application to enable/disable media
capture"
https://bugs.webkit.org/show_bug.cgi?id=171292
http://trac.webkit.org/changeset/216160

"[MediaStream] Allow host application to enable/disable media
capture"
https://bugs.webkit.org/show_bug.cgi?id=171292
http://trac.webkit.org/changeset/216161

Patch by Commit Queue <commit-qu...@webkit.org> on 2017-05-03

Modified Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (216161 => 216162)


--- trunk/Source/WebCore/ChangeLog	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/ChangeLog	2017-05-04 01:00:27 UTC (rev 216162)
@@ -1,3 +1,23 @@
+2017-05-03  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r216160 and r216161.
+        https://bugs.webkit.org/show_bug.cgi?id=171640
+
+        These changes broke the iOS build. (Requested by mlewis13 on
+        #webkit).
+
+        Reverted changesets:
+
+        "[MediaStream] Allow host application to enable/disable media
+        capture"
+        https://bugs.webkit.org/show_bug.cgi?id=171292
+        http://trac.webkit.org/changeset/216160
+
+        "[MediaStream] Allow host application to enable/disable media
+        capture"
+        https://bugs.webkit.org/show_bug.cgi?id=171292
+        http://trac.webkit.org/changeset/216161
+
 2017-05-03  Eric Carlson  <eric.carl...@apple.com>
 
         [MediaStream] Allow host application to enable/disable media capture

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (216161 => 216162)


--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -314,12 +314,6 @@
     m_private->stopProducingData();
 }
 
-void MediaStream::endStream()
-{
-    for (auto& track : m_trackSet.values())
-        track->stopTrack(MediaStreamTrack::StopMode::PostEvent);
-}
-
 void MediaStream::pageMutedStateDidChange()
 {
     if (!m_isActive)

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.h (216161 => 216162)


--- trunk/Source/WebCore/Modules/mediastream/MediaStream.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -91,8 +91,6 @@
     void startProducingData();
     void stopProducingData();
 
-    void endStream();
-
     // EventTarget
     EventTargetInterface eventTargetInterface() const final { return MediaStreamEventTargetInterfaceType; }
     ScriptExecutionContext* scriptExecutionContext() const final { return ContextDestructionObserver::scriptExecutionContext(); }
@@ -108,8 +106,6 @@
 
     void addTrackFromPlatform(Ref<MediaStreamTrack>&&);
 
-    Document* document() const;
-
 protected:
     MediaStream(ScriptExecutionContext&, const MediaStreamTrackVector&);
     MediaStream(ScriptExecutionContext&, Ref<MediaStreamPrivate>&&);
@@ -162,6 +158,8 @@
     void setIsActive(bool);
     void statusDidChange();
 
+    Document* document() const;
+
     MediaStreamTrackVector trackVectorForType(RealtimeMediaSource::Type) const;
 
     Ref<MediaStreamPrivate> m_private;

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp (216161 => 216162)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -62,6 +62,10 @@
     return m_mediaStreams.get(url);
 }
 
+MediaStreamRegistry::MediaStreamRegistry()
+{
+}
+
 MediaStream* MediaStreamRegistry::lookUp(const URL& url) const
 {
     return static_cast<MediaStream*>(lookup(url.string()));
@@ -80,16 +84,21 @@
 
 void MediaStreamRegistry::unregisterStream(MediaStream& stream)
 {
-    auto& allStreams = mediaStreams();
+    Vector<MediaStream*>& allStreams = mediaStreams();
     size_t pos = allStreams.find(&stream);
     if (pos != notFound)
         allStreams.remove(pos);
 }
 
-void MediaStreamRegistry::forEach(std::function<void(MediaStream&)> callback) const
+MediaStream* MediaStreamRegistry::lookUp(const MediaStreamPrivate& privateStream) const
 {
-    for (auto& stream : mediaStreams())
-        callback(*stream);
+    Vector<MediaStream*>& allStreams = mediaStreams();
+    for (auto& stream : allStreams) {
+        if (&stream->privateStream() == &privateStream)
+            return stream;
+    }
+
+    return nullptr;
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h (216161 => 216162)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -54,11 +54,10 @@
     void unregisterStream(MediaStream&);
 
     MediaStream* lookUp(const URL&) const;
+    MediaStream* lookUp(const MediaStreamPrivate&) const;
 
-    void forEach(std::function<void(MediaStream&)>) const;
-
 private:
-    MediaStreamRegistry() = default;
+    MediaStreamRegistry();
     HashMap<String, RefPtr<MediaStream>> m_mediaStreams;
 };
 

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (216161 => 216162)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -113,7 +113,7 @@
     return MediaStreamTrack::create(*scriptExecutionContext(), m_private->clone());
 }
 
-void MediaStreamTrack::stopTrack(StopMode mode)
+void MediaStreamTrack::stopTrack()
 {
     // NOTE: this method is called when the "stop" method is called from JS, using the "ImplementedAs" IDL attribute.
     // This is done because ActiveDOMObject requires a "stop" method.
@@ -121,13 +121,8 @@
     if (ended())
         return;
 
-    // An 'ended' event is not posted if m_ended is true when trackEnded is called, so set it now if we are
-    // not supposed to post the event.
-    if (mode == StopMode::Silently)
-        m_ended = true;
-
+    m_ended = true;
     m_private->endTrack();
-    m_ended = true;
 }
 
 MediaStreamTrack::TrackSettings MediaStreamTrack::getSettings() const
@@ -308,7 +303,7 @@
     
 void MediaStreamTrack::trackMutedChanged(MediaStreamTrackPrivate&)
 {
-    if (scriptExecutionContext()->activeDOMObjectsAreSuspended() || scriptExecutionContext()->activeDOMObjectsAreStopped() || m_ended)
+    if (scriptExecutionContext()->activeDOMObjectsAreSuspended() || scriptExecutionContext()->activeDOMObjectsAreStopped())
         return;
 
     AtomicString eventType = muted() ? eventNames().muteEvent : eventNames().unmuteEvent;

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (216161 => 216162)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -71,10 +71,8 @@
     bool ended() const;
 
     Ref<MediaStreamTrack> clone();
+    void stopTrack();
 
-    enum class StopMode { Silently, PostEvent };
-    void stopTrack(StopMode = StopMode::Silently);
-
     bool isCaptureTrack() const;
 
     struct TrackSettings {

Modified: trunk/Source/WebCore/dom/Document.cpp (216161 => 216162)


--- trunk/Source/WebCore/dom/Document.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/dom/Document.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -271,11 +271,6 @@
 #include "XSLTProcessor.h"
 #endif
 
-#if ENABLE(MEDIA_STREAM)
-#include "MediaStream.h"
-#include "MediaStreamRegistry.h"
-#endif
-
 using namespace WTF;
 using namespace Unicode;
 
@@ -6977,14 +6972,4 @@
     m_orientationNotifier.orientationChanged(orientation);
 }
 
-#if ENABLE(MEDIA_STREAM)
-void Document::stopMediaCapture()
-{
-    MediaStreamRegistry::shared().forEach([this](MediaStream& stream) {
-        if (stream.document() == this)
-            stream.endStream();
-    });
-}
-#endif
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/Document.h (216161 => 216162)


--- trunk/Source/WebCore/dom/Document.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/dom/Document.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -1277,7 +1277,6 @@
     bool hasHadActiveMediaStreamTrack() const { return m_hasHadActiveMediaStreamTrack; }
     void setDeviceIDHashSalt(const String& salt) { m_idHashSalt = salt; }
     String deviceIDHashSalt() const { return m_idHashSalt; }
-    void stopMediaCapture();
 #endif
 
 // FIXME: Find a better place for this functionality.

Modified: trunk/Source/WebCore/page/Page.cpp (216161 => 216162)


--- trunk/Source/WebCore/page/Page.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/page/Page.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -1532,18 +1532,6 @@
     }
 }
 
-void Page::stopMediaCapture()
-{
-#if ENABLE(MEDIA_STREAM)
-    for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
-        if (!frame->document())
-            continue;
-
-        frame->document()->stopMediaCapture();
-    }
-#endif
-}
-
 #if ENABLE(MEDIA_SESSION)
 void Page::handleMediaEvent(MediaEventType eventType)
 {

Modified: trunk/Source/WebCore/page/Page.h (216161 => 216162)


--- trunk/Source/WebCore/page/Page.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/page/Page.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -530,7 +530,6 @@
     bool isAudioMuted() const { return m_mutedState & MediaProducer::AudioIsMuted; }
     bool isMediaCaptureMuted() const { return m_mutedState & MediaProducer::CaptureDevicesAreMuted; };
     WEBCORE_EXPORT void setMuted(MediaProducer::MutedStateFlags);
-    WEBCORE_EXPORT void stopMediaCapture();
 
 #if ENABLE(MEDIA_SESSION)
     WEBCORE_EXPORT void handleMediaEvent(MediaEventType);

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm (216161 => 216162)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2017-05-04 01:00:27 UTC (rev 216162)
@@ -580,21 +580,21 @@
 
 MediaPlayerPrivateMediaStreamAVFObjC::DisplayMode MediaPlayerPrivateMediaStreamAVFObjC::currentDisplayMode() const
 {
-    if (m_intrinsicSize.isEmpty() || !metaDataAvailable() || !m_sampleBufferDisplayLayer)
+    if (m_ended || m_intrinsicSize.isEmpty() || !metaDataAvailable() || !m_sampleBufferDisplayLayer)
         return None;
 
     if (auto* track = m_mediaStreamPrivate->activeVideoTrack()) {
-        if (!track->enabled() || track->muted() || track->ended())
+        if (!track->enabled() || track->muted())
             return PaintItBlack;
     }
 
-    if (playing() && !m_ended) {
+    if (playing()) {
         if (!m_mediaStreamPrivate->isProducingData())
             return PausedImage;
         return LivePreview;
     }
 
-    if (m_playbackState == PlaybackState::None || m_ended)
+    if (m_playbackState == PlaybackState::None)
         return PaintItBlack;
 
     return PausedImage;
@@ -768,10 +768,8 @@
 
         if (ended != m_ended) {
             m_ended = ended;
-            if (m_player) {
+            if (m_player)
                 m_player->timeChanged();
-                m_player->characteristicChanged();
-            }
         }
     });
 }

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h (216161 => 216162)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -95,8 +95,6 @@
     void stopProducingData();
     bool isProducingData() const;
 
-    void endStream();
-
     bool hasVideo() const;
     bool hasAudio() const;
     bool muted() const;

Modified: trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm (216161 => 216162)


--- trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm	2017-05-04 01:00:27 UTC (rev 216162)
@@ -181,14 +181,11 @@
 
 void AVMediaCaptureSource::stopProducingData()
 {
-    if (!m_session)
+    if (!m_session || ![m_session isRunning])
         return;
 
     [m_objcObserver removeNotificationObservers];
-
-    if ([m_session isRunning])
-        [m_session stopRunning];
-
+    [m_session stopRunning];
 #if PLATFORM(IOS)
     m_session = nullptr;
 #endif

Modified: trunk/Source/WebKit2/ChangeLog (216161 => 216162)


--- trunk/Source/WebKit2/ChangeLog	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/ChangeLog	2017-05-04 01:00:27 UTC (rev 216162)
@@ -1,3 +1,23 @@
+2017-05-03  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r216160 and r216161.
+        https://bugs.webkit.org/show_bug.cgi?id=171640
+
+        These changes broke the iOS build. (Requested by mlewis13 on
+        #webkit).
+
+        Reverted changesets:
+
+        "[MediaStream] Allow host application to enable/disable media
+        capture"
+        https://bugs.webkit.org/show_bug.cgi?id=171292
+        http://trac.webkit.org/changeset/216160
+
+        "[MediaStream] Allow host application to enable/disable media
+        capture"
+        https://bugs.webkit.org/show_bug.cgi?id=171292
+        http://trac.webkit.org/changeset/216161
+
 2017-05-03  Eric Carlson  <eric.carl...@apple.com>
 
         [MediaStream] Allow host application to enable/disable media capture

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -2677,16 +2677,6 @@
     toImpl(page)->setMuted(muted);
 }
 
-void WKPageSetMediaCaptureEnabled(WKPageRef page, bool enabled)
-{
-    toImpl(page)->setMediaCaptureEnabled(enabled);
-}
-
-bool WKPageGetMediaCaptureEnabled(WKPageRef page)
-{
-    return toImpl(page)->mediaCaptureEnabled();
-}
-
 void WKPageDidAllowPointerLock(WKPageRef page)
 {
 #if ENABLE(POINTER_LOCK)

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -127,8 +127,6 @@
 WK_EXPORT void WKPageSetMuted(WKPageRef page, WKMediaMutedState muted);
 
 WK_EXPORT void WKPageClearUserMediaState(WKPageRef page);
-WK_EXPORT void WKPageSetMediaCaptureEnabled(WKPageRef page, bool enabled);
-WK_EXPORT bool WKPageGetMediaCaptureEnabled(WKPageRef page);
 
 WK_EXPORT void WKPageDidAllowPointerLock(WKPageRef page);
 WK_EXPORT void WKPageDidDenyPointerLock(WKPageRef page);

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2017-05-04 01:00:27 UTC (rev 216162)
@@ -4473,16 +4473,6 @@
     _page->setMuted(WebCore::MediaProducer::CaptureDevicesAreMuted);
 }
 
-- (void)_setMediaCaptureEnabled:(BOOL)enabled
-{
-    _page->setMediaCaptureEnabled(enabled);
-}
-
-- (BOOL)_mediaCaptureEnabled
-{
-    return _page->mediaCaptureEnabled();
-}
-
 - (void)_setPageMuted:(_WKMediaMutedState)mutedState
 {
     WebCore::MediaProducer::MutedStateFlags coreState = WebCore::MediaProducer::NoneMuted;

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -292,11 +292,9 @@
 @property (nonatomic, setter=_setFullscreenDelegate:) id<_WKFullscreenDelegate> _fullscreenDelegate WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 @property (nonatomic, readonly) BOOL _isInFullscreen WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 
-- (void)_muteMediaCapture WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+- (void)_muteMediaCapture;
 - (void)_setPageMuted:(_WKMediaMutedState)mutedState WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
 
-@property (nonatomic, setter=_setMediaCaptureEnabled:) BOOL _mediaCaptureEnabled WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
-
 @end
 
 #if !TARGET_OS_IPHONE

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm	2017-05-04 01:00:27 UTC (rev 216162)
@@ -115,11 +115,11 @@
 #endif
     m_delegateMethods.webViewActionsForElementDefaultActions = [delegate respondsToSelector:@selector(_webView:actionsForElement:defaultActions:)];
     m_delegateMethods.webViewDidNotHandleTapAsClickAtPoint = [delegate respondsToSelector:@selector(_webView:didNotHandleTapAsClickAtPoint:)];
-    m_delegateMethods.presentingViewControllerForWebView = [delegate respondsToSelector:@selector(_presentingViewControllerForWebView:)];
-#endif
     m_delegateMethods.webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler = [delegate respondsToSelector:@selector(_webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:)];
     m_delegateMethods.webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler = [delegate respondsToSelector:@selector(_webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:)];
     m_delegateMethods.webViewMediaCaptureStateDidChange = [delegate respondsToSelector:@selector(_webView:mediaCaptureStateDidChange:)];
+    m_delegateMethods.presentingViewControllerForWebView = [delegate respondsToSelector:@selector(_presentingViewControllerForWebView:)];
+#endif
     m_delegateMethods.dataDetectionContextForWebView = [delegate respondsToSelector:@selector(_dataDetectionContextForWebView:)];
     m_delegateMethods.webViewImageOrMediaDocumentSizeChanged = [delegate respondsToSelector:@selector(_webView:imageOrMediaDocumentSizeChanged:)];
 

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -96,7 +96,6 @@
 
 UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy(WebPageProxy& page)
     : m_page(page)
-    , m_rejectionTimer(*this, &UserMediaPermissionRequestManagerProxy::rejectionTimerFired)
 {
 #if ENABLE(MEDIA_STREAM)
     UserMediaProcessManager::singleton().addUserMediaPermissionRequestManagerProxy(*this);
@@ -108,10 +107,10 @@
 #if ENABLE(MEDIA_STREAM)
     UserMediaProcessManager::singleton().removeUserMediaPermissionRequestManagerProxy(*this);
 #endif
-    invalidatePendingRequests();
+    invalidateRequests();
 }
 
-void UserMediaPermissionRequestManagerProxy::invalidatePendingRequests()
+void UserMediaPermissionRequestManagerProxy::invalidateRequests()
 {
     for (auto& request : m_pendingUserMediaRequests.values())
         request->invalidate();
@@ -124,15 +123,9 @@
     m_frameStates.clear();
 }
 
-void UserMediaPermissionRequestManagerProxy::stopCapture()
-{
-    invalidatePendingRequests();
-    m_page.process().send(Messages::WebPage::StopMediaCapture(), m_page.pageID());
-}
-
 void UserMediaPermissionRequestManagerProxy::clearCachedState()
 {
-    invalidatePendingRequests();
+    invalidateRequests();
 }
 
 Ref<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, uint64_t frameID, const String& userMediaDocumentOriginIdentifier, const String& topLevelDocumentOriginIdentifier, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs)
@@ -230,23 +223,6 @@
 #endif
 }
 
-void UserMediaPermissionRequestManagerProxy::rejectionTimerFired()
-{
-    uint64_t userMediaID = m_pendingRejections[0];
-    m_pendingRejections.remove(0);
-
-    denyRequest(userMediaID, UserMediaPermissionRequestProxy::UserMediaAccessDenialReason::PermissionDenied, emptyString());
-    if (!m_pendingRejections.isEmpty())
-        scheduleNextRejection();
-}
-
-void UserMediaPermissionRequestManagerProxy::scheduleNextRejection()
-{
-    const double mimimumDelayBeforeReplying = .25;
-    if (!m_rejectionTimer.isActive())
-        m_rejectionTimer.startOneShot(Seconds(mimimumDelayBeforeReplying + randomNumber()));
-}
-
 void UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String userMediaDocumentOriginIdentifier, String topLevelDocumentOriginIdentifier, const WebCore::MediaConstraintsData& audioConstraintsData, const WebCore::MediaConstraintsData& videoConstraintsData)
 {
 #if ENABLE(MEDIA_STREAM)
@@ -296,12 +272,6 @@
 
     };
 
-    if (!UserMediaProcessManager::singleton().captureEnabled()) {
-        m_pendingRejections.append(userMediaID);
-        scheduleNextRejection();
-        return;
-    }
-
     auto audioConstraints = MediaConstraintsImpl::create(MediaConstraintsData(audioConstraintsData));
     auto videoConstraints = MediaConstraintsImpl::create(MediaConstraintsData(videoConstraintsData));
 

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -17,15 +17,14 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#pragma once
+#ifndef UserMediaPermissionRequestManagerProxy_h
+#define UserMediaPermissionRequestManagerProxy_h
 
 #include "UserMediaPermissionCheckProxy.h"
 #include "UserMediaPermissionRequestProxy.h"
 #include <WebCore/SecurityOrigin.h>
-#include <WebCore/Timer.h>
 #include <WebCore/UserMediaRequest.h>
 #include <wtf/HashMap.h>
-#include <wtf/Seconds.h>
 
 namespace WebCore {
 class CaptureDevice;
@@ -58,7 +57,7 @@
 
     WebPageProxy& page() const { return m_page; }
 
-    void invalidatePendingRequests();
+    void invalidateRequests();
 
     void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String userMediaDocumentOriginIdentifier, String topLevelDocumentOriginIdentifier, const WebCore::MediaConstraintsData& audioConstraintsData, const WebCore::MediaConstraintsData& videoConstraintsData);
 
@@ -70,9 +69,6 @@
 
     void didCompleteUserMediaPermissionCheck(uint64_t, const String&, bool allow);
 
-    void stopCapture();
-    void scheduleNextRejection();
-    void rejectionTimerFired();
     void clearCachedState();
 
     void startedCaptureSession();
@@ -89,10 +85,8 @@
     HashMap<uint64_t, std::unique_ptr<FrameAuthorizationState>> m_frameStates;
 
     WebPageProxy& m_page;
-
-    WebCore::Timer m_rejectionTimer;
-    Vector<uint64_t> m_pendingRejections;
 };
 
 } // namespace WebKit
 
+#endif // UserMediaPermissionRequestManagerProxy_h

Modified: trunk/Source/WebKit2/UIProcess/UserMediaProcessManager.cpp (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/UserMediaProcessManager.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/UserMediaProcessManager.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -115,12 +115,8 @@
     for (auto& state : stateMap()) {
         for (auto& manager : state.value->managers()) {
 
-            if (&manager->page() == &pageStartingCapture) {
-#if PLATFORM(IOS)
-                manager->page().stopCapture();
-#endif
+            if (&manager->page() == &pageStartingCapture)
                 continue;
-            }
 
             manager->page().setMuted(WebCore::MediaProducer::CaptureDevicesAreMuted);
         }
@@ -234,22 +230,6 @@
 #endif
 }
 
-void UserMediaProcessManager::setCaptureEnabled(bool enabled)
-{
-    if (enabled == m_captureEnabled)
-        return;
-
-    m_captureEnabled = enabled;
-
-    if (enabled)
-        return;
-
-    for (auto& state : stateMap()) {
-        for (auto& manager : state.value->managers())
-            manager->stopCapture();
-    }
-}
-
 } // namespace WebKit
 
 #endif

Modified: trunk/Source/WebKit2/UIProcess/UserMediaProcessManager.h (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/UserMediaProcessManager.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/UserMediaProcessManager.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -39,12 +39,6 @@
 
     void startedCaptureSession(UserMediaPermissionRequestManagerProxy&);
     void endedCaptureSession(UserMediaPermissionRequestManagerProxy&);
-
-    void setCaptureEnabled(bool);
-    bool captureEnabled() const { return m_captureEnabled; }
-
-private:
-    bool m_captureEnabled { true };
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -4206,18 +4206,6 @@
     activityStateDidChange(ActivityState::IsAudible | ActivityState::IsCapturingMedia);
 }
 
-void WebPageProxy::setMediaCaptureEnabled(bool enabled)
-{
-    m_mediaCaptureEnabled = enabled;
-
-    if (!isValid())
-        return;
-
-#if ENABLE(MEDIA_STREAM)
-    UserMediaProcessManager::singleton().setCaptureEnabled(enabled);
-#endif
-}
-
 #if ENABLE(MEDIA_SESSION)
 void WebPageProxy::handleMediaEvent(MediaEventType eventType)
 {

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (216161 => 216162)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -979,9 +979,6 @@
     void setMuted(WebCore::MediaProducer::MutedStateFlags);
     void setMayStartMediaWhenInWindow(bool);
     bool mayStartMediaWhenInWindow() const { return m_mayStartMediaWhenInWindow; }
-    void setMediaCaptureEnabled(bool);
-    bool mediaCaptureEnabled() const { return m_mediaCaptureEnabled; }
-
         
 #if ENABLE(MEDIA_SESSION)
     bool hasMediaSessionWithActiveMediaElements() const { return m_hasMediaSessionWithActiveMediaElements; }
@@ -1938,7 +1935,6 @@
     float m_mediaVolume;
     WebCore::MediaProducer::MutedStateFlags m_mutedState { WebCore::MediaProducer::NoneMuted };
     bool m_mayStartMediaWhenInWindow;
-    bool m_mediaCaptureEnabled { true };
 
     bool m_waitingForDidUpdateActivityState;
 

Modified: trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp (216161 => 216162)


--- trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -56,15 +56,6 @@
         sandboxExtension.value->revoke();
 }
 
-void UserMediaPermissionRequestManager::cancelPendingRequests()
-{
-    for (auto& request : m_idToUserMediaRequestMap.values())
-        cancelUserMediaRequest(*request);
-
-    for (auto& request : m_idToMediaDevicesEnumerationRequestMap.values())
-        cancelMediaDevicesEnumeration(*request);
-}
-
 void UserMediaPermissionRequestManager::startUserMediaRequest(UserMediaRequest& request)
 {
     Document* document = request.document();
@@ -113,8 +104,6 @@
     uint64_t requestID = m_userMediaRequestToIDMap.take(&request);
     if (!requestID)
         return;
-
-    request.deny(UserMediaRequest::OtherFailure, emptyString());
     m_idToUserMediaRequestMap.remove(requestID);
     removeMediaRequestFromMaps(request);
 }
@@ -201,7 +190,6 @@
     uint64_t requestID = m_mediaDevicesEnumerationRequestToIDMap.take(&request);
     if (!requestID)
         return;
-    request.setDeviceInfo(Vector<CaptureDevice>(), emptyString(), false);
     m_idToMediaDevicesEnumerationRequestMap.remove(requestID);
 }
 

Modified: trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h (216161 => 216162)


--- trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -55,8 +55,6 @@
     void grantUserMediaDeviceSandboxExtensions(const MediaDeviceSandboxExtensions&);
     void revokeUserMediaDeviceSandboxExtensions(const Vector<String>&);
 
-    void cancelPendingRequests();
-
 private:
     void sendUserMediaRequest(WebCore::UserMediaRequest&);
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (216161 => 216162)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2017-05-04 01:00:27 UTC (rev 216162)
@@ -4556,14 +4556,6 @@
     m_page->setMuted(state);
 }
 
-void WebPage::stopMediaCapture()
-{
-#if ENABLE(MEDIA_STREAM)
-    m_userMediaPermissionRequestManager.cancelPendingRequests();
-    m_page->stopMediaCapture();
-#endif
-}
-
 #if ENABLE(MEDIA_SESSION)
 void WebPage::handleMediaEvent(uint32_t eventType)
 {

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (216161 => 216162)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2017-05-04 01:00:27 UTC (rev 216162)
@@ -765,7 +765,6 @@
     void setMediaVolume(float);
     void setMuted(WebCore::MediaProducer::MutedStateFlags);
     void setMayStartMediaWhenInWindow(bool);
-    void stopMediaCapture();
 
 #if ENABLE(MEDIA_SESSION)
     void handleMediaEvent(uint32_t /* WebCore::MediaEventType */);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (216161 => 216162)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2017-05-04 01:00:27 UTC (rev 216162)
@@ -338,7 +338,6 @@
     SetMediaVolume(float volume)
     SetMuted(WebCore::MediaProducer::MutedStateFlags muted)
     SetMayStartMediaWhenInWindow(bool mayStartMedia)
-    StopMediaCapture()
 
 #if ENABLE(MEDIA_SESSION)
     HandleMediaEvent(uint32_t eventType)

Modified: trunk/Tools/ChangeLog (216161 => 216162)


--- trunk/Tools/ChangeLog	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Tools/ChangeLog	2017-05-04 01:00:27 UTC (rev 216162)
@@ -1,3 +1,23 @@
+2017-05-03  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r216160 and r216161.
+        https://bugs.webkit.org/show_bug.cgi?id=171640
+
+        These changes broke the iOS build. (Requested by mlewis13 on
+        #webkit).
+
+        Reverted changesets:
+
+        "[MediaStream] Allow host application to enable/disable media
+        capture"
+        https://bugs.webkit.org/show_bug.cgi?id=171292
+        http://trac.webkit.org/changeset/216160
+
+        "[MediaStream] Allow host application to enable/disable media
+        capture"
+        https://bugs.webkit.org/show_bug.cgi?id=171292
+        http://trac.webkit.org/changeset/216161
+
 2017-05-03  Eric Carlson  <eric.carl...@apple.com>
 
         [MediaStream] Allow host application to enable/disable media capture

Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (216161 => 216162)


--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2017-05-04 01:00:27 UTC (rev 216162)
@@ -25,8 +25,6 @@
 		07492B3B1DF8B14C00633DE1 /* EnumerateMediaDevices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07492B3A1DF8AE2D00633DE1 /* EnumerateMediaDevices.cpp */; };
 		07492B3C1DF8B86600633DE1 /* enumerateMediaDevices.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 07492B391DF8ADA400633DE1 /* enumerateMediaDevices.html */; };
 		074994421EA5034B000DA44E /* getUserMedia.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 4A410F4D19AF7BEF002EBAB5 /* getUserMedia.html */; };
-		0799C3491EBA2D7B003B7532 /* UserMediaDisabled.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07EDEFAC1EB9400C00D43292 /* UserMediaDisabled.mm */; };
-		0799C34B1EBA3301003B7532 /* disableGetUserMedia.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 0799C34A1EBA32F4003B7532 /* disableGetUserMedia.html */; };
 		07C046CA1E4262A8007201E7 /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C046C91E42573E007201E7 /* CARingBuffer.cpp */; };
 		0F139E771A423A5B00F590F5 /* WeakObjCPtr.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F139E751A423A5300F590F5 /* WeakObjCPtr.mm */; };
 		0F139E781A423A6B00F590F5 /* PlatformUtilitiesCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F139E721A423A2B00F590F5 /* PlatformUtilitiesCocoa.mm */; };
@@ -689,7 +687,6 @@
 			files = (
 				55226A2F1EBA44B900C36AD0 /* large-red-square-image.html in Copy Resources */,
 				5797FE331EB15AB100B2F4A0 /* navigation-client-default-crypto.html in Copy Resources */,
-				0799C34B1EBA3301003B7532 /* disableGetUserMedia.html in Copy Resources */,
 				074994421EA5034B000DA44E /* getUserMedia.html in Copy Resources */,
 				C9BF06EF1E9C132500595E3E /* autoplay-muted-with-controls.html in Copy Resources */,
 				F4DEF6ED1E9B4DB60048EF61 /* image-in-link-and-input.html in Copy Resources */,
@@ -882,9 +879,7 @@
 		07492B391DF8ADA400633DE1 /* enumerateMediaDevices.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = enumerateMediaDevices.html; sourceTree = "<group>"; };
 		07492B3A1DF8AE2D00633DE1 /* EnumerateMediaDevices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnumerateMediaDevices.cpp; sourceTree = "<group>"; };
 		0766DD1F1A5AD5200023E3BB /* PendingAPIRequestURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PendingAPIRequestURL.cpp; sourceTree = "<group>"; };
-		0799C34A1EBA32F4003B7532 /* disableGetUserMedia.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = disableGetUserMedia.html; sourceTree = "<group>"; };
 		07C046C91E42573E007201E7 /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = "<group>"; };
-		07EDEFAC1EB9400C00D43292 /* UserMediaDisabled.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UserMediaDisabled.mm; sourceTree = "<group>"; };
 		0BCD833414857CE400EA2003 /* HashMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HashMap.cpp; sourceTree = "<group>"; };
 		0BCD85691485C98B00EA2003 /* SetForScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetForScope.cpp; sourceTree = "<group>"; };
 		0F139E721A423A2B00F590F5 /* PlatformUtilitiesCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlatformUtilitiesCocoa.mm; path = cocoa/PlatformUtilitiesCocoa.mm; sourceTree = "<group>"; };
@@ -1676,7 +1671,6 @@
 			children = (
 				A16F66B81C40E9E100BD4D24 /* Resources */,
 				7CEFA9641AC0B9E200B910FD /* _WKUserContentExtensionStore.mm */,
-				07EDEFAC1EB9400C00D43292 /* UserMediaDisabled.mm */,
 				37E7DD631EA06FF2009B396D /* AdditionalReadAccessAllowedURLs.mm */,
 				37E7DD661EA071F3009B396D /* AdditionalReadAccessAllowedURLsPlugin.mm */,
 				37E7DD651EA0715B009B396D /* AdditionalReadAccessAllowedURLsProtocol.h */,
@@ -1902,7 +1896,6 @@
 				2EFF06C61D886A560004BB30 /* change-video-source-on-end.html */,
 				A16F66B91C40EA2000BD4D24 /* ContentFiltering.html */,
 				5C2936941D5BFD1900DEAB1E /* CookieMessage.html */,
-				0799C34A1EBA32F4003B7532 /* disableGetUserMedia.html */,
 				837A35F01D9A1E6400663C57 /* DownloadRequestBlobURL.html */,
 				5714ECB81CA8B58800051AC8 /* DownloadRequestOriginalURL.html */,
 				5714ECBC1CA8C21800051AC8 /* DownloadRequestOriginalURL2.html */,
@@ -3086,7 +3079,6 @@
 				D34E08761E4E42E1005FF14A /* WKWebViewGetContents.mm in Sources */,
 				315231CA1EB3B3C700A22A16 /* GPUCommandQueue.mm in Sources */,
 				F4FA91811E61849B007B8C1D /* WKWebViewSelectionTests.mm in Sources */,
-				0799C3491EBA2D7B003B7532 /* UserMediaDisabled.mm in Sources */,
 				93F56DA91E5F919D003EDE84 /* WKWebViewSnapshot.mm in Sources */,
 				9984FACC1CFFAF60008D198C /* WKWebViewTextInput.mm in Sources */,
 				764322D71B61CCC30024F801 /* WordBoundaryTypingAttributes.mm in Sources */,

Deleted: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserMediaDisabled.mm (216161 => 216162)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserMediaDisabled.mm	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserMediaDisabled.mm	2017-05-04 01:00:27 UTC (rev 216162)
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2016 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. AND ITS CONTRIBUTORS ``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 ITS 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 "config.h"
-
-#import "PlatformUtilities.h"
-#import "Test.h"
-#import "TestWKWebView.h"
-
-#import <WebKit/WKPreferencesPrivate.h>
-#import <WebKit/WKUserContentControllerPrivate.h>
-#import <WebKit/WKWebViewConfigurationPrivate.h>
-#import <WebKit/WKWebViewPrivate.h>
-#import <WebKit/WebKit.h>
-#import <WebKit/_WKProcessPoolConfiguration.h>
-#import <wtf/RetainPtr.h>
-
-#if WK_API_ENABLED
-
-static bool refuseRequest = false;
-static bool wasPrompted = false;
-
-static bool receivedScriptMessage = false;
-static RetainPtr<WKScriptMessage> lastScriptMessage;
-
-@interface UserMediaMessageHandler : NSObject <WKScriptMessageHandler>
-@end
-
-@implementation UserMediaMessageHandler
-
-- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
-{
-    lastScriptMessage = message;
-    receivedScriptMessage = true;
-}
-@end
-
-@interface UserMediaUIDelegate : NSObject <WKUIDelegate>
-@end
-
-@implementation UserMediaUIDelegate
-
-- (void)_webView:(WKWebView *)webView requestUserMediaAuthorizationForDevices:(NSUInteger)devices url:(NSURL *)url mainFrameURL:(NSURL *)mainFrameURL decisionHandler:(void (^)(BOOL))decisionHandler
-{
-    wasPrompted = true;
-
-    if (refuseRequest) {
-        decisionHandler(NO);
-        return;
-    }
-
-    BOOL needsMicrophoneAuthorized = devices & _WKCaptureDeviceMicrophone;
-    BOOL needsCameraAuthorized = devices & _WKCaptureDeviceCamera;
-    if (!needsMicrophoneAuthorized && !needsCameraAuthorized) {
-        decisionHandler(NO);
-        return;
-    }
-
-    decisionHandler(YES);
-}
-
-- (void)_webView:(WKWebView *)webView checkUserMediaPermissionForURL:(NSURL *)url mainFrameURL:(NSURL *)mainFrameURL frameIdentifier:(NSUInteger)frameIdentifier decisionHandler:(void (^)(NSString *, BOOL))decisionHandler
-{
-    if (refuseRequest) {
-        decisionHandler(nil, NO);
-        return;
-    }
-}
-@end
-
-class MediaCaptureDisabledTest : public testing::Test {
-public:
-    virtual void SetUp()
-    {
-        m_configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
-
-        RetainPtr<UserMediaMessageHandler> handler = adoptNS([[UserMediaMessageHandler alloc] init]);
-        [[m_configuration userContentController] addScriptMessageHandler:handler.get() name:@"testHandler"];
-
-        m_webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:m_configuration.get()]);
-
-        auto preferences = [m_webView configuration].preferences;
-        preferences._mediaDevicesEnabled = YES;
-        preferences._mockCaptureDevicesEnabled = YES;
-        preferences._mediaCaptureRequiresSecureConnection = NO;
-
-        m_uiDelegate = adoptNS([[UserMediaUIDelegate alloc] init]);
-        [m_webView setUIDelegate:m_uiDelegate.get()];
-    }
-
-    void loadTestAndWaitForMessage(const char* message)
-    {
-        wasPrompted = false;
-        receivedScriptMessage = false;
-        [m_webView loadTestPageNamed:@"disableGetUserMedia"];
-        TestWebKitAPI::Util::run(&receivedScriptMessage);
-        EXPECT_STREQ([(NSString *)[lastScriptMessage body] UTF8String], message);
-    }
-
-    RetainPtr<WKWebViewConfiguration> m_configuration;
-    RetainPtr<UserMediaUIDelegate> m_uiDelegate;
-    RetainPtr<TestWKWebView> m_webView;
-};
-
-TEST_F(MediaCaptureDisabledTest, EnableAndDisable)
-{
-    EXPECT_TRUE(m_webView.get()._mediaCaptureEnabled);
-    loadTestAndWaitForMessage("allowed");
-    EXPECT_TRUE(wasPrompted);
-
-    m_webView.get()._mediaCaptureEnabled = NO;
-    EXPECT_FALSE(m_webView.get()._mediaCaptureEnabled);
-    loadTestAndWaitForMessage("denied");
-    EXPECT_FALSE(wasPrompted);
-
-    m_webView.get()._mediaCaptureEnabled = YES;
-    EXPECT_TRUE(m_webView.get()._mediaCaptureEnabled);
-    loadTestAndWaitForMessage("allowed");
-    EXPECT_TRUE(wasPrompted);
-}
-#endif

Deleted: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/disableGetUserMedia.html (216161 => 216162)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/disableGetUserMedia.html	2017-05-04 00:27:17 UTC (rev 216161)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/disableGetUserMedia.html	2017-05-04 01:00:27 UTC (rev 216162)
@@ -1,16 +0,0 @@
-<script>
-    function gotUserMedia(mediaStream)
-    {
-        window.webkit.messageHandlers.testHandler.postMessage('gUM allowed');
-    }
-
-    function userMediaError(error)
-    {
-        window.webkit.messageHandlers.testHandler.postMessage('gUM denied');
-    }
-
-    var constraints = { audio: false, video: true};
-    navigator.mediaDevices.getUserMedia(constraints)
-        .then(gotUserMedia).
-        catch(userMediaError);
-</script>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to