Changeset 252337 in webkit


Ignore:
Timestamp:
Nov 11, 2019 1:41:09 PM (4 years ago)
Author:
youenn@apple.com
Message:

Make MediaStream/MediaStreamTrack page cache friendly
https://bugs.webkit.org/show_bug.cgi?id=204030

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/navigation/page-cache-mediastream.html

  • Modules/mediastream/MediaStream.cpp:

Remove the unnneeded opt-out of page cache in case of MediaStream.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::suspend):
In case of a capture track, end it at suspend time but fire ended event at resume time.

  • Modules/mediastream/MediaStreamTrack.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations: Disabled test for WK1.
  • http/tests/navigation/page-cache-mediastream-expected.txt: Added.
  • http/tests/navigation/page-cache-mediastream.html: Added.
Location:
trunk
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r252336 r252337  
     12019-11-11  Youenn Fablet  <youenn@apple.com>
     2
     3        Make MediaStream/MediaStreamTrack page cache friendly
     4        https://bugs.webkit.org/show_bug.cgi?id=204030
     5
     6        Reviewed by Chris Dumez.
     7
     8        * platform/mac-wk1/TestExpectations: Disabled test for WK1.
     9        * http/tests/navigation/page-cache-mediastream-expected.txt: Added.
     10        * http/tests/navigation/page-cache-mediastream.html: Added.
     11
    1122019-11-11  Matt Lewis  <jlewis3@apple.com>
    213
  • trunk/LayoutTests/platform/mac-wk1/TestExpectations

    r252146 r252337  
    6161inspector/page/overrideSetting-MockCaptureDevicesEnabled.html [ Skip ]
    6262http/tests/navigation/page-cache-getUserMedia-pending-promise.html [ Skip ]
     63http/tests/navigation/page-cache-mediastream.html [ Skip ]
    6364
    6465# Datalist is unsupported in WK1
  • trunk/Source/WebCore/ChangeLog

    r252336 r252337  
     12019-11-11  Youenn Fablet  <youenn@apple.com>
     2
     3        Make MediaStream/MediaStreamTrack page cache friendly
     4        https://bugs.webkit.org/show_bug.cgi?id=204030
     5
     6        Reviewed by Chris Dumez.
     7
     8        Test: http/tests/navigation/page-cache-mediastream.html
     9
     10        * Modules/mediastream/MediaStream.cpp:
     11        Remove the unnneeded opt-out of page cache in case of MediaStream.
     12        * Modules/mediastream/MediaStream.h:
     13        * Modules/mediastream/MediaStreamTrack.cpp:
     14        (WebCore::MediaStreamTrack::suspend):
     15        In case of a capture track, end it at suspend time  but fire ended event at resume time.
     16        * Modules/mediastream/MediaStreamTrack.h:
     17
    1182019-11-11  Matt Lewis  <jlewis3@apple.com>
    219
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp

    r251244 r252337  
    401401}
    402402
    403 // FIXME: This should never prevent entering the back/forward cache.
    404 bool MediaStream::shouldPreventEnteringBackForwardCache_DEPRECATED() const
    405 {
    406     return hasPendingActivity();
    407 }
    408 
    409403bool MediaStream::hasPendingActivity() const
    410404{
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.h

    r251244 r252337  
    147147    void stop() final;
    148148    const char* activeDOMObjectName() const final;
    149     bool shouldPreventEnteringBackForwardCache_DEPRECATED() const final;
    150149
    151150    void updateActiveState();
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

    r251244 r252337  
    557557}
    558558
    559 // FIXME: This should never prevent entering the back/forward cache.
    560 bool MediaStreamTrack::shouldPreventEnteringBackForwardCache_DEPRECATED() const
    561 {
    562     return hasPendingActivity();
     559void MediaStreamTrack::suspend(ReasonForSuspension reason)
     560{
     561    if (reason != ReasonForSuspension::BackForwardCache)
     562        return;
     563
     564    // We only end capture tracks, other tracks (capture canvas, remote tracks) can still continue working.
     565    if (m_ended || !isCaptureTrack())
     566        return;
     567
     568    stopTrack();
     569
     570    queueTaskToDispatchEvent(*this, TaskSource::Networking, Event::create(eventNames().endedEvent, Event::CanBubble::No, Event::IsCancelable::No));
    563571}
    564572
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h

    r251244 r252337  
    178178    void stop() final;
    179179    const char* activeDOMObjectName() const final;
    180     bool shouldPreventEnteringBackForwardCache_DEPRECATED() const final;
     180    void suspend(ReasonForSuspension) final;
    181181
    182182    // EventTarget
Note: See TracChangeset for help on using the changeset viewer.