Title: [236536] trunk
Revision
236536
Author
commit-qu...@webkit.org
Date
2018-09-26 18:42:24 -0700 (Wed, 26 Sep 2018)

Log Message

Video track clone cannot preserve original property
https://bugs.webkit.org/show_bug.cgi?id=189872
<rdar://problem/44706579>

Patch by YUHAN WU <yuhan...@apple.com> on 2018-09-26
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt:

Source/WebCore:

Fix the issue that the cloned track created by canvas.captureStream().getVideoTracks() cannot keep some attributes, such as enabled.
Updated a testcase expected result:
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html

* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
(WebCore::CanvasCaptureMediaStreamTrack::create):
(WebCore::CanvasCaptureMediaStreamTrack::clone):
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.h:

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (236535 => 236536)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2018-09-27 01:24:45 UTC (rev 236535)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2018-09-27 01:42:24 UTC (rev 236536)
@@ -1,3 +1,13 @@
+2018-09-26  YUHAN WU  <yuhan...@apple.com>
+
+        Video track clone cannot preserve original property
+        https://bugs.webkit.org/show_bug.cgi?id=189872
+        <rdar://problem/44706579>
+
+        Reviewed by Youenn Fablet.
+
+        * web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt:
+
 2018-09-26  Alex Christensen  <achristen...@webkit.org>
 
         Unreviewed, rolling out r236524.

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt (236535 => 236536)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt	2018-09-27 01:24:45 UTC (rev 236535)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt	2018-09-27 01:42:24 UTC (rev 236536)
@@ -4,6 +4,6 @@
 PASS Audio tracks ignore invalid/video contentHints 
 PASS Accepts valid video contentHints 
 PASS Video tracks ignore invalid/audio contentHints 
-FAIL Cloned video tracks have separate contentHints assert_equals: expected "motion" but got ""
+PASS Cloned video tracks have separate contentHints 
 PASS Cloned audio tracks have separate contentHints 
 

Modified: trunk/Source/WebCore/ChangeLog (236535 => 236536)


--- trunk/Source/WebCore/ChangeLog	2018-09-27 01:24:45 UTC (rev 236535)
+++ trunk/Source/WebCore/ChangeLog	2018-09-27 01:42:24 UTC (rev 236536)
@@ -1,3 +1,22 @@
+2018-09-26  YUHAN WU  <yuhan...@apple.com>
+
+        Video track clone cannot preserve original property
+        https://bugs.webkit.org/show_bug.cgi?id=189872
+        <rdar://problem/44706579>
+
+        Reviewed by Youenn Fablet.
+
+        Fix the issue that the cloned track created by canvas.captureStream().getVideoTracks() cannot keep some attributes, such as enabled.
+        Updated a testcase expected result:
+        LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html
+
+        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
+        (WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
+        (WebCore::CanvasCaptureMediaStreamTrack::create):
+        (WebCore::CanvasCaptureMediaStreamTrack::clone):
+        * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
+        * Modules/mediastream/MediaStreamTrack.h:
+
 2018-09-26  Alex Christensen  <achristen...@webkit.org>
 
         Unreviewed, rolling out r236524.

Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp (236535 => 236536)


--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp	2018-09-27 01:24:45 UTC (rev 236535)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp	2018-09-27 01:42:24 UTC (rev 236536)
@@ -42,10 +42,15 @@
 CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(ScriptExecutionContext& context, Ref<HTMLCanvasElement>&& canvas, Ref<CanvasCaptureMediaStreamTrack::Source>&& source)
     : MediaStreamTrack(context, MediaStreamTrackPrivate::create(source.copyRef()))
     , m_canvas(WTFMove(canvas))
-    , m_source(WTFMove(source))
 {
 }
 
+CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(ScriptExecutionContext& context, Ref<HTMLCanvasElement>&& canvas, Ref<MediaStreamTrackPrivate>&& privateTrack)
+    : MediaStreamTrack(context, WTFMove(privateTrack))
+    , m_canvas(WTFMove(canvas))
+{
+}
+
 Ref<CanvasCaptureMediaStreamTrack::Source> CanvasCaptureMediaStreamTrack::Source::create(HTMLCanvasElement& canvas, std::optional<double>&& frameRequestRate)
 {
     auto source = adoptRef(*new Source(canvas, WTFMove(frameRequestRate)));
@@ -174,8 +179,8 @@
 {
     if (!scriptExecutionContext())
         return nullptr;
-
-    return CanvasCaptureMediaStreamTrack::create(*scriptExecutionContext(), m_canvas.copyRef(), m_source->frameRequestRate());
+    
+    return adoptRef(*new CanvasCaptureMediaStreamTrack(*scriptExecutionContext(), m_canvas.copyRef(), m_private->clone()));
 }
 
 }

Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h (236535 => 236536)


--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h	2018-09-27 01:24:45 UTC (rev 236535)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h	2018-09-27 01:42:24 UTC (rev 236536)
@@ -42,7 +42,7 @@
     static Ref<CanvasCaptureMediaStreamTrack> create(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, std::optional<double>&& frameRequestRate);
 
     HTMLCanvasElement& canvas() { return m_canvas.get(); }
-    void requestFrame() { m_source->requestFrame(); }
+    void requestFrame() { static_cast<Source&>(source()).requestFrame(); }
 
     RefPtr<MediaStreamTrack> clone() final;
 
@@ -81,11 +81,11 @@
     };
 
     CanvasCaptureMediaStreamTrack(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, Ref<Source>&&);
+    CanvasCaptureMediaStreamTrack(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, Ref<MediaStreamTrackPrivate>&&);
 
     bool isCanvas() const final { return true; }
 
     Ref<HTMLCanvasElement> m_canvas;
-    Ref<Source> m_source;
 };
 
 }

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (236535 => 236536)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2018-09-27 01:24:45 UTC (rev 236535)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2018-09-27 01:42:24 UTC (rev 236536)
@@ -149,7 +149,9 @@
     MediaStreamTrack(ScriptExecutionContext&, Ref<MediaStreamTrackPrivate>&&);
 
     ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); }
-
+        
+    Ref<MediaStreamTrackPrivate> m_private;
+        
 private:
     explicit MediaStreamTrack(MediaStreamTrack&);
 
@@ -175,7 +177,7 @@
     void trackEnabledChanged(MediaStreamTrackPrivate&) final;
 
     Vector<Observer*> m_observers;
-    Ref<MediaStreamTrackPrivate> m_private;
+    
 
     MediaTrackConstraints m_constraints;
     std::optional<DOMPromiseDeferred<void>> m_promise;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to