Changeset 195592 in webkit


Ignore:
Timestamp:
Jan 26, 2016 9:17:49 AM (8 years ago)
Author:
eric.carlson@apple.com
Message:

LayoutTest media/airplay-target-availability.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=153100
<rdar://problem/24346796>

Reviewed by Daniel Bates.

Source/WebCore:

No new tests, media/airplay-target-availability.html was updated

  • Modules/mediasession/WebMediaSessionManager.cpp:

(WebCore::WebMediaSessionManager::clientStateDidChange): Schedule a configuration scan if

any of the config flags have changed.

(WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring): Update logging.

LayoutTests:

  • media/airplay-target-availability-expected.txt:
  • media/airplay-target-availability.html:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r195590 r195592  
     12016-01-26  Eric Carlson  <eric.carlson@apple.com>
     2
     3        LayoutTest media/airplay-target-availability.html is flaky
     4        https://bugs.webkit.org/show_bug.cgi?id=153100
     5        <rdar://problem/24346796>
     6
     7        Reviewed by Daniel Bates.
     8
     9        * media/airplay-target-availability-expected.txt:
     10        * media/airplay-target-availability.html:
     11
    1122016-01-26  Daniel Bates  <dabates@apple.com>
    213
  • trunk/LayoutTests/media/airplay-target-availability-expected.txt

    r194681 r195592  
    33Test that 'webkitplaybacktargetavailabilitychanged' event is sent when at least one video element has playable media.
    44
     5EVENT( webkitplaybacktargetavailabilitychanged )
     6EXPECTED (event.availability == 'not-available') OK
    57
    6 EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'not-available'
     8** simulate device becoming available
     9EVENT( webkitplaybacktargetavailabilitychanged )
    710
    8 
    9 EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'not-available'
    10 
    11 ** setting src on video that does not have event listener
    12 
    13 EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'available'
     11** set src on video that does not have event listener
     12EVENT( webkitplaybacktargetavailabilitychanged )
     13EXPECTED (event.availability == 'available') OK
    1414
    1515END OF TEST
  • trunk/LayoutTests/media/airplay-target-availability.html

    r194672 r195592  
    11<html>
    22    <head>
    3         <script src="media-file.js"></script>
    4         <script src="video-test.js"></script>
     3        <script src='media-file.js'></script>
     4        <script src='video-test.js'></script>
    55        <script>
    66            var video1;
     
    1414                if (window.internals)
    1515                    internals.setMockMediaPlaybackTargetPickerEnabled(true);
    16 
    17                 video1.addEventListener('webkitplaybacktargetavailabilitychanged', targetAvailabilityChanged);
    18                 setTimeout(setSource, 200);
     16               
     17                video1.addEventListener('webkitplaybacktargetavailabilitychanged', noSource, true);
    1918            }
    2019           
    21             function targetAvailabilityChanged(event)
     20            function noSource(event)
    2221            {
    23                 consoleWrite(`<br>EVENT: '${event.type}', event.availability = '${event.availability}'<br>`);
     22                video1.removeEventListener('webkitplaybacktargetavailabilitychanged', noSource, true);
    2423
    25                 if (event.availability != "available")
     24                consoleWrite(`EVENT( ${event.type} )`);
     25                testExpected('event.availability', 'not-available');
     26
     27                video1.addEventListener('webkitplaybacktargetavailabilitychanged', haveTarget, true);
     28
     29                consoleWrite('<br>** simulate device becoming available');
     30                if (window.internals)
     31                    internals.setMockMediaPlaybackTargetPickerState('Sleepy TV', 'DeviceAvailable');
     32            }
     33               
     34            function haveTarget(event)
     35            {
     36                // setMockMediaPlaybackTargetPickerState happens asynchronously in WK2 and a
     37                // 'webkitplaybacktargetavailabilitychanged' is always sent when an event listener
     38                // is added, so we may get a "not available" event first.
     39                if (event.availability == 'not-available')
    2640                    return;
    2741
    28                 if (event.availability == "available" && video2.src == "") {
    29                     failTest("Event sent before any video is a candidate for airplay");
    30                     return;
    31                 }
    32                
     42                video1.removeEventListener('webkitplaybacktargetavailabilitychanged', haveTarget, true);
     43                consoleWrite(`EVENT( ${event.type} )`);
     44
     45                consoleWrite('<br>** set src on video that does not have event listener');
     46
     47                video2.src = findMediaFile('video', 'content/test');
     48                video1.addEventListener('webkitplaybacktargetavailabilitychanged', withSource, true);
     49            }
     50
     51            function withSource(event)
     52            {
     53                consoleWrite(`EVENT( ${event.type} )`);
     54                testExpected('event.availability', 'available');
     55                consoleWrite('');
    3356                endTest();
    34             }
    35            
    36             function setSource()
    37             {
    38                 consoleWrite('** setting src on video that does not have event listener');
    39                 if (window.internals)
    40                     internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable");
    41                 video2.src = findMediaFile('video', 'content/test');
    4257            }
    4358
     
    4560    </head>
    4661
    47     <body onload="start()">
     62    <body onload='start()'>
    4863        <video controls></video>
    4964        <br>
  • trunk/Source/WebCore/ChangeLog

    r195591 r195592  
     12016-01-26  Eric Carlson  <eric.carlson@apple.com>
     2
     3        LayoutTest media/airplay-target-availability.html is flaky
     4        https://bugs.webkit.org/show_bug.cgi?id=153100
     5        <rdar://problem/24346796>
     6
     7        Reviewed by Daniel Bates.
     8
     9        No new tests, media/airplay-target-availability.html was updated
     10
     11        * Modules/mediasession/WebMediaSessionManager.cpp:
     12        (WebCore::WebMediaSessionManager::clientStateDidChange): Schedule a configuration scan if
     13          any of the config flags have changed.
     14        (WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring): Update logging.
     15
    1162016-01-25  Carlos Garcia Campos  <cgarcia@igalia.com>
    217
  • trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp

    r194672 r195592  
    216216
    217217    MediaProducer::MediaStateFlags updateConfigurationFlags = MediaProducer::RequiresPlaybackTargetMonitoring | MediaProducer::HasPlaybackTargetAvailabilityListener | MediaProducer::HasAudioOrVideo;
    218     if (!flagsAreSet(oldFlags, updateConfigurationFlags) && flagsAreSet(newFlags, updateConfigurationFlags))
     218    if ((oldFlags & updateConfigurationFlags) != (newFlags & updateConfigurationFlags))
    219219        scheduleDelayedTask(TargetMonitoringConfigurationTask);
    220220
     
    359359    }
    360360
    361     LOG(Media, "WebMediaSessionManager::configurePlaybackTargetMonitoring - monitoringRequired = %i", (int)monitoringRequired);
     361    LOG(Media, "WebMediaSessionManager::configurePlaybackTargetMonitoring - monitoringRequired = %i", static_cast<int>(monitoringRequired || (hasAvailabilityListener && haveClientWithMedia)));
    362362
    363363    if (monitoringRequired || (hasAvailabilityListener && haveClientWithMedia))
Note: See TracChangeset for help on using the changeset viewer.