Title: [208663] trunk/Source/WebCore
Revision
208663
Author
[email protected]
Date
2016-11-12 20:52:31 -0800 (Sat, 12 Nov 2016)

Log Message

Remove some use of ExceptionCode in MediaStream
https://bugs.webkit.org/show_bug.cgi?id=164690

Reviewed by Sam Weinig.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::MediaDevices): Take a Document&.
(WebCore::MediaDevices::create): Ditto.
(WebCore::MediaDevices::~MediaDevices): Deleted.
(WebCore::MediaDevices::getUserMedia): Check document for null and
pass a reference to UserMediaRequest::start. Removed unused ExceptionCode
argument to UserMediaRequest::start, since the only exception was for
a null document.
(WebCore::MediaDevices::enumerateDevices): Check document for null and
pass a reference to MediaDevicesRequest::create. Removed exception
handling entirely because MediaDevicesRequest::create was not ever
raising an exception before.
* Modules/mediastream/MediaDevices.h: Updated for above changes.
* Modules/mediastream/MediaDevices.idl: Removed MayThrowException from
enumerateDevices, because it never throws an exception.

* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::MediaDevicesRequest): Take a Document&.
Removed unused ExceptionCode& argument.
(WebCore::MediaDevicesRequest::create): Ditto.
* Modules/mediastream/MediaDevicesRequest.h: Updated for above changes.

* Modules/mediastream/NavigatorMediaDevices.cpp:
(WebCore::NavigatorMediaDevices::mediaDevices): Pass a reference.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::start): Use ExceptionOr.
(WebCore::UserMediaRequest::UserMediaRequest): Take a Document& and
a UserMediaController&.
* Modules/mediastream/UserMediaRequest.h: Updated for above changes.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (208662 => 208663)


--- trunk/Source/WebCore/ChangeLog	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/ChangeLog	2016-11-13 04:52:31 UTC (rev 208663)
@@ -1,3 +1,41 @@
+2016-11-12  Darin Adler  <[email protected]>
+
+        Remove some use of ExceptionCode in MediaStream
+        https://bugs.webkit.org/show_bug.cgi?id=164690
+
+        Reviewed by Sam Weinig.
+
+        * Modules/mediastream/MediaDevices.cpp:
+        (WebCore::MediaDevices::MediaDevices): Take a Document&.
+        (WebCore::MediaDevices::create): Ditto.
+        (WebCore::MediaDevices::~MediaDevices): Deleted.
+        (WebCore::MediaDevices::getUserMedia): Check document for null and
+        pass a reference to UserMediaRequest::start. Removed unused ExceptionCode
+        argument to UserMediaRequest::start, since the only exception was for
+        a null document.
+        (WebCore::MediaDevices::enumerateDevices): Check document for null and
+        pass a reference to MediaDevicesRequest::create. Removed exception
+        handling entirely because MediaDevicesRequest::create was not ever
+        raising an exception before.
+        * Modules/mediastream/MediaDevices.h: Updated for above changes.
+        * Modules/mediastream/MediaDevices.idl: Removed MayThrowException from
+        enumerateDevices, because it never throws an exception.
+
+        * Modules/mediastream/MediaDevicesRequest.cpp:
+        (WebCore::MediaDevicesRequest::MediaDevicesRequest): Take a Document&.
+        Removed unused ExceptionCode& argument.
+        (WebCore::MediaDevicesRequest::create): Ditto.
+        * Modules/mediastream/MediaDevicesRequest.h: Updated for above changes.
+
+        * Modules/mediastream/NavigatorMediaDevices.cpp:
+        (WebCore::NavigatorMediaDevices::mediaDevices): Pass a reference.
+
+        * Modules/mediastream/UserMediaRequest.cpp:
+        (WebCore::UserMediaRequest::start): Use ExceptionOr.
+        (WebCore::UserMediaRequest::UserMediaRequest): Take a Document& and
+        a UserMediaController&.
+        * Modules/mediastream/UserMediaRequest.h: Updated for above changes.
+
 2016-11-12  Simon Fraser  <[email protected]>
 
         [iOS WK2] Share some code with Mac for post-async-scroll state reconciliation

Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevices.cpp (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/MediaDevices.cpp	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevices.cpp	2016-11-13 04:52:31 UTC (rev 208663)
@@ -33,31 +33,24 @@
 
 #if ENABLE(MEDIA_STREAM)
 
-#include "Dictionary.h"
 #include "Document.h"
 #include "MediaDevicesRequest.h"
-#include "MediaStream.h"
 #include "MediaTrackSupportedConstraints.h"
 #include "RealtimeMediaSourceCenter.h"
-#include "UserMediaController.h"
 #include "UserMediaRequest.h"
 
 namespace WebCore {
 
-Ref<MediaDevices> MediaDevices::create(ScriptExecutionContext* context)
+inline MediaDevices::MediaDevices(Document& document)
+    : ContextDestructionObserver(&document)
 {
-    return adoptRef(*new MediaDevices(context));
 }
 
-MediaDevices::MediaDevices(ScriptExecutionContext* context)
-    : ContextDestructionObserver(context)
+Ref<MediaDevices> MediaDevices::create(Document& document)
 {
+    return adoptRef(*new MediaDevices(document));
 }
 
-MediaDevices::~MediaDevices()
-{
-}
-
 Document* MediaDevices::document() const
 {
     return downcast<Document>(scriptExecutionContext());
@@ -65,22 +58,18 @@
 
 ExceptionOr<void> MediaDevices::getUserMedia(Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, Promise&& promise) const
 {
-    ExceptionCode ec = 0;
-    UserMediaRequest::start(document(), WTFMove(audioConstraints), WTFMove(videoConstraints), WTFMove(promise), ec);
-    if (ec)
-        return Exception { ec };
-    return { };
+    auto* document = this->document();
+    if (!document)
+        return Exception { INVALID_STATE_ERR };
+    return UserMediaRequest::start(*document, WTFMove(audioConstraints), WTFMove(videoConstraints), WTFMove(promise));
 }
 
-ExceptionOr<void> MediaDevices::enumerateDevices(EnumerateDevicesPromise&& promise) const
+void MediaDevices::enumerateDevices(EnumerateDevicesPromise&& promise) const
 {
-    ExceptionCode ec = 0;
-    auto request = MediaDevicesRequest::create(document(), WTFMove(promise), ec);
-    if (ec)
-        return Exception { ec };
-    if (request)
-        request->start();
-    return { };
+    auto* document = this->document();
+    if (!document)
+        return;
+    MediaDevicesRequest::create(*document, WTFMove(promise))->start();
 }
 
 RefPtr<MediaTrackSupportedConstraints> MediaDevices::getSupportedConstraints()

Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevices.h (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/MediaDevices.h	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevices.h	2016-11-13 04:52:31 UTC (rev 208663)
@@ -32,15 +32,11 @@
 
 #if ENABLE(MEDIA_STREAM)
 
-#include "ContextDestructionObserver.h"
 #include "JSDOMPromise.h"
 #include "MediaDeviceInfo.h"
-#include "ScriptWrappable.h"
-#include <functional>
 
 namespace WebCore {
 
-class Dictionary;
 class Document;
 class MediaConstraintsImpl;
 class MediaStream;
@@ -48,20 +44,19 @@
 
 class MediaDevices : public ScriptWrappable, public RefCounted<MediaDevices>, public ContextDestructionObserver {
 public:
-    static Ref<MediaDevices> create(ScriptExecutionContext*);
-    virtual ~MediaDevices();
+    static Ref<MediaDevices> create(Document&);
 
     Document* document() const;
 
-    typedef DOMPromise<MediaStream> Promise;
-    typedef DOMPromise<MediaDeviceInfoVector> EnumerateDevicesPromise;
+    using Promise = DOMPromise<MediaStream>;
+    using EnumerateDevicesPromise = DOMPromise<MediaDeviceInfoVector>;
 
     ExceptionOr<void> getUserMedia(Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, Promise&&) const;
-    ExceptionOr<void> enumerateDevices(EnumerateDevicesPromise&&) const;
+    void enumerateDevices(EnumerateDevicesPromise&&) const;
     RefPtr<MediaTrackSupportedConstraints> getSupportedConstraints();
 
 private:
-    explicit MediaDevices(ScriptExecutionContext*);
+    explicit MediaDevices(Document&);
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevices.idl (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/MediaDevices.idl	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevices.idl	2016-11-13 04:52:31 UTC (rev 208663)
@@ -35,5 +35,5 @@
     MediaTrackSupportedConstraints getSupportedConstraints();
 
     [Custom, MayThrowException, PrivateIdentifier, PublicIdentifier] Promise<MediaStream> getUserMedia(Dictionary options);
-    [MayThrowException] Promise<sequence<MediaDeviceInfo>> enumerateDevices();
+    Promise<sequence<MediaDeviceInfo>> enumerateDevices();
 };

Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp	2016-11-13 04:52:31 UTC (rev 208663)
@@ -42,15 +42,15 @@
 
 namespace WebCore {
 
-RefPtr<MediaDevicesRequest> MediaDevicesRequest::create(Document* document, MediaDevices::EnumerateDevicesPromise&& promise, ExceptionCode&)
+inline MediaDevicesRequest::MediaDevicesRequest(Document& document, MediaDevices::EnumerateDevicesPromise&& promise)
+    : ContextDestructionObserver(&document)
+    , m_promise(WTFMove(promise))
 {
-    return adoptRef(*new MediaDevicesRequest(document, WTFMove(promise)));
 }
 
-MediaDevicesRequest::MediaDevicesRequest(ScriptExecutionContext* context, MediaDevices::EnumerateDevicesPromise&& promise)
-    : ContextDestructionObserver(context)
-    , m_promise(WTFMove(promise))
+Ref<MediaDevicesRequest> MediaDevicesRequest::create(Document& document, MediaDevices::EnumerateDevicesPromise&& promise)
 {
+    return adoptRef(*new MediaDevicesRequest(document, WTFMove(promise)));
 }
 
 MediaDevicesRequest::~MediaDevicesRequest()

Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.h (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.h	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.h	2016-11-13 04:52:31 UTC (rev 208663)
@@ -28,10 +28,7 @@
 
 #if ENABLE(MEDIA_STREAM)
 
-#include "ActiveDOMObject.h"
 #include "MediaDevices.h"
-#include <wtf/RefCounted.h>
-#include <wtf/text/WTFString.h>
 
 namespace WebCore {
 
@@ -39,11 +36,9 @@
 class MediaDevicesEnumerationRequest;
 class SecurityOrigin;
 
-typedef int ExceptionCode;
-
 class MediaDevicesRequest : public RefCounted<MediaDevicesRequest>, private ContextDestructionObserver {
 public:
-    static RefPtr<MediaDevicesRequest> create(Document*, MediaDevices::EnumerateDevicesPromise&&, ExceptionCode&);
+    static Ref<MediaDevicesRequest> create(Document&, MediaDevices::EnumerateDevicesPromise&&);
 
     virtual ~MediaDevicesRequest();
 
@@ -52,9 +47,8 @@
     SecurityOrigin* securityOrigin() const;
 
 private:
-    MediaDevicesRequest(ScriptExecutionContext*, MediaDevices::EnumerateDevicesPromise&&);
+    MediaDevicesRequest(Document&, MediaDevices::EnumerateDevicesPromise&&);
 
-    // ContextDestructionObserver
     void contextDestroyed() final;
 
     String hashID(const String&);

Modified: trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.cpp (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.cpp	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.cpp	2016-11-13 04:52:31 UTC (rev 208663)
@@ -29,9 +29,9 @@
  */
 
 #include "config.h"
+#include "NavigatorMediaDevices.h"
 
 #if ENABLE(MEDIA_STREAM)
-#include "NavigatorMediaDevices.h"
 
 #include "Document.h"
 #include "Frame.h"
@@ -68,7 +68,7 @@
 MediaDevices* NavigatorMediaDevices::mediaDevices() const
 {
     if (!m_mediaDevices && frame())
-        m_mediaDevices = MediaDevices::create(frame()->document());
+        m_mediaDevices = MediaDevices::create(*frame()->document());
     return m_mediaDevices.get();
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2016-11-13 04:52:31 UTC (rev 208663)
@@ -32,12 +32,10 @@
  */
 
 #include "config.h"
+#include "UserMediaRequest.h"
 
 #if ENABLE(MEDIA_STREAM)
 
-#include "UserMediaRequest.h"
-
-#include "Document.h"
 #include "DocumentLoader.h"
 #include "ExceptionCode.h"
 #include "Frame.h"
@@ -55,28 +53,26 @@
 
 namespace WebCore {
 
-void UserMediaRequest::start(Document* document, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&& promise, ExceptionCode& ec)
+ExceptionOr<void> UserMediaRequest::start(Document& document, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&& promise)
 {
-    UserMediaController* userMedia = UserMediaController::from(document ? document->page() : nullptr);
-    if (!userMedia) {
-        ec = NOT_SUPPORTED_ERR;
-        return;
-    }
+    auto* userMedia = UserMediaController::from(document.page());
+    if (!userMedia)
+        return Exception { NOT_SUPPORTED_ERR }; // FIXME: Why is it better to return an exception here instead of rejecting the promise as we do just below?
 
     if (!audioConstraints->isValid() && !videoConstraints->isValid()) {
         promise.reject(TypeError);
-        return;
+        return { };
     }
 
-    auto request = adoptRef(*new UserMediaRequest(document, userMedia, WTFMove(audioConstraints), WTFMove(videoConstraints), WTFMove(promise)));
-    request->start();
+    adoptRef(*new UserMediaRequest(document, *userMedia, WTFMove(audioConstraints), WTFMove(videoConstraints), WTFMove(promise)))->start();
+    return { };
 }
 
-UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&& promise)
-    : ContextDestructionObserver(context)
+UserMediaRequest::UserMediaRequest(Document& document, UserMediaController& controller, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&& promise)
+    : ContextDestructionObserver(&document)
     , m_audioConstraints(WTFMove(audioConstraints))
     , m_videoConstraints(WTFMove(videoConstraints))
-    , m_controller(controller)
+    , m_controller(&controller)
     , m_promise(WTFMove(promise))
 {
 }

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (208662 => 208663)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2016-11-13 03:24:27 UTC (rev 208662)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2016-11-13 04:52:31 UTC (rev 208663)
@@ -38,8 +38,6 @@
 #include "Document.h"
 #include "MediaConstraintsImpl.h"
 #include "MediaDevices.h"
-#include <wtf/RefCounted.h>
-#include <wtf/text/WTFString.h>
 
 namespace WebCore {
 
@@ -48,13 +46,11 @@
 class UserMediaController;
 class SecurityOrigin;
 
-typedef int ExceptionCode;
-
 class UserMediaRequest : public RefCounted<UserMediaRequest>, private ContextDestructionObserver {
 public:
-    static void start(Document*, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&&, ExceptionCode&);
+    static ExceptionOr<void> start(Document&, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&&);
 
-    ~UserMediaRequest();
+    virtual ~UserMediaRequest();
 
     void start();
 
@@ -78,9 +74,8 @@
     Document* document() const { return downcast<Document>(scriptExecutionContext()); }
 
 private:
-    UserMediaRequest(ScriptExecutionContext*, UserMediaController*, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&&);
+    UserMediaRequest(Document&, UserMediaController&, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, MediaDevices::Promise&&);
 
-    // ContextDestructionObserver
     void contextDestroyed() final;
     
     Ref<MediaConstraintsImpl> m_audioConstraints;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to