Changeset 236536 in webkit


Ignore:
Timestamp:
Sep 26, 2018 6:42:24 PM (6 years ago)
Author:
commit-queue@webkit.org
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_wu@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:
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r236533 r236536  
     12018-09-26  YUHAN WU  <yuhan_wu@apple.com>
     2
     3        Video track clone cannot preserve original property
     4        https://bugs.webkit.org/show_bug.cgi?id=189872
     5        <rdar://problem/44706579>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        * web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt:
     10
    1112018-09-26  Alex Christensen  <achristensen@webkit.org>
    212
  • trunk/LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint-expected.txt

    r236478 r236536  
    55PASS Accepts valid video contentHints
    66PASS Video tracks ignore invalid/audio contentHints
    7 FAIL Cloned video tracks have separate contentHints assert_equals: expected "motion" but got ""
     7PASS Cloned video tracks have separate contentHints
    88PASS Cloned audio tracks have separate contentHints
    99
  • trunk/Source/WebCore/ChangeLog

    r236533 r236536  
     12018-09-26  YUHAN WU  <yuhan_wu@apple.com>
     2
     3        Video track clone cannot preserve original property
     4        https://bugs.webkit.org/show_bug.cgi?id=189872
     5        <rdar://problem/44706579>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        Fix the issue that the cloned track created by canvas.captureStream().getVideoTracks() cannot keep some attributes, such as enabled.
     10        Updated a testcase expected result:
     11        LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html
     12
     13        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
     14        (WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
     15        (WebCore::CanvasCaptureMediaStreamTrack::create):
     16        (WebCore::CanvasCaptureMediaStreamTrack::clone):
     17        * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
     18        * Modules/mediastream/MediaStreamTrack.h:
     19
    1202018-09-26  Alex Christensen  <achristensen@webkit.org>
    221
  • trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp

    r235670 r236536  
    4343    : MediaStreamTrack(context, MediaStreamTrackPrivate::create(source.copyRef()))
    4444    , m_canvas(WTFMove(canvas))
    45     , m_source(WTFMove(source))
     45{
     46}
     47
     48CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(ScriptExecutionContext& context, Ref<HTMLCanvasElement>&& canvas, Ref<MediaStreamTrackPrivate>&& privateTrack)
     49    : MediaStreamTrack(context, WTFMove(privateTrack))
     50    , m_canvas(WTFMove(canvas))
    4651{
    4752}
     
    175180    if (!scriptExecutionContext())
    176181        return nullptr;
    177 
    178     return CanvasCaptureMediaStreamTrack::create(*scriptExecutionContext(), m_canvas.copyRef(), m_source->frameRequestRate());
     182   
     183    return adoptRef(*new CanvasCaptureMediaStreamTrack(*scriptExecutionContext(), m_canvas.copyRef(), m_private->clone()));
    179184}
    180185
  • trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h

    r236015 r236536  
    4343
    4444    HTMLCanvasElement& canvas() { return m_canvas.get(); }
    45     void requestFrame() { m_source->requestFrame(); }
     45    void requestFrame() { static_cast<Source&>(source()).requestFrame(); }
    4646
    4747    RefPtr<MediaStreamTrack> clone() final;
     
    8282
    8383    CanvasCaptureMediaStreamTrack(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, Ref<Source>&&);
     84    CanvasCaptureMediaStreamTrack(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, Ref<MediaStreamTrackPrivate>&&);
    8485
    8586    bool isCanvas() const final { return true; }
    8687
    8788    Ref<HTMLCanvasElement> m_canvas;
    88     Ref<Source> m_source;
    8989};
    9090
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h

    r236478 r236536  
    150150
    151151    ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); }
    152 
     152       
     153    Ref<MediaStreamTrackPrivate> m_private;
     154       
    153155private:
    154156    explicit MediaStreamTrack(MediaStreamTrack&);
     
    176178
    177179    Vector<Observer*> m_observers;
    178     Ref<MediaStreamTrackPrivate> m_private;
     180   
    179181
    180182    MediaTrackConstraints m_constraints;
Note: See TracChangeset for help on using the changeset viewer.