| Differences between
and this patch
- Source/WebCore/ChangeLog +15 lines
Lines 1-3 Source/WebCore/ChangeLog_sec1
1
2014-05-08  Kiran  <kiran.guduru@samsung.com>
2
3
        [MediaStream] MediaStream.addTrack Should not check for active state.
4
        https://bugs.webkit.org/show_bug.cgi?id=132558
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        MediaStream.addTrack method is checking for active state of a
9
        MediaStream, but it should not check for active state while adding a Track.
10
11
        Test: fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html
12
13
        * Modules/mediastream/MediaStream.cpp:
14
        (WebCore::MediaStream::addTrack):
15
1
2014-05-07  Ion Rosca  <rosca@adobe.com>
16
2014-05-07  Ion Rosca  <rosca@adobe.com>
2
17
3
        [CSS Blending] Blending doesn't work if the parent stacking context is not a self painting layer
18
        [CSS Blending] Blending doesn't work if the parent stacking context is not a self painting layer
- Source/WebCore/Modules/mediastream/MediaStream.cpp -5 lines
Lines 143-153 void MediaStream::cloneMediaStreamTrackV Source/WebCore/Modules/mediastream/MediaStream.cpp_sec1
143
143
144
void MediaStream::addTrack(PassRefPtr<MediaStreamTrack> prpTrack, ExceptionCode& ec)
144
void MediaStream::addTrack(PassRefPtr<MediaStreamTrack> prpTrack, ExceptionCode& ec)
145
{
145
{
146
    if (!active()) {
147
        ec = INVALID_STATE_ERR;
148
        return;
149
    }
150
151
    if (!prpTrack) {
146
    if (!prpTrack) {
152
        ec = TYPE_MISMATCH_ERR;
147
        ec = TYPE_MISMATCH_ERR;
153
        return;
148
        return;
- LayoutTests/ChangeLog +18 lines
Lines 1-3 LayoutTests/ChangeLog_sec1
1
2014-05-08  Kiran  <kiran.guduru@samsung.com>
2
3
        [MediaStream] MediaStream.addTrack Should not check for active state.
4
        Nhttps://bugs.webkit.org/show_bug.cgi?id=132558.
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        MediaStream.addTrack method is checking for active state of a
9
        MediaStream, but it should not check for active state while adding a Track
10
11
        Removed check not to add tracks to ended stream:relative which forced tests to avoid this bug. 
12
        * fast/mediastream/MediaStream-add-remove-tracks-expected.txt:
13
        * fast/mediastream/MediaStream-add-remove-tracks.html:
14
15
        New tests:
16
        * fast/mediastream/MediaStream-add-tracks-to-inactive-stream-expected.txt: Added.
17
        * fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html: Added.
18
1
2014-05-07  Ion Rosca  <rosca@adobe.com>
19
2014-05-07  Ion Rosca  <rosca@adobe.com>
2
20
3
        [CSS Blending] Blending doesn't work if the parent stacking context is not a self painting layer
21
        [CSS Blending] Blending doesn't work if the parent stacking context is not a self painting layer
- LayoutTests/fast/mediastream/MediaStream-add-remove-tracks-expected.txt -2 / +1 lines
Lines 48-55 PASS stream1.getVideoTracks().length is LayoutTests/fast/mediastream/MediaStream-add-remove-tracks-expected.txt_sec1
48
PASS stream2.getAudioTracks().length is 0
48
PASS stream2.getAudioTracks().length is 0
49
PASS stream2.getVideoTracks().length is 0
49
PASS stream2.getVideoTracks().length is 0
50
50
51
*** it should be impossible to add a track after the stream has ended
51
*** it should be impossible to remove a track after the stream has ended
52
PASS stream2.addTrack(audioTrack) threw exception Error: InvalidStateError: DOM Exception 11.
53
PASS stream2.removeTrack(audioTrack) threw exception Error: InvalidStateError: DOM Exception 11.
52
PASS stream2.removeTrack(audioTrack) threw exception Error: InvalidStateError: DOM Exception 11.
54
Stream2 is inactive.
53
Stream2 is inactive.
55
PASS successfullyParsed is true
54
PASS successfullyParsed is true
- LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html -2 / +1 lines
Lines 130-137 LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html_sec1
130
                shouldBe('stream2.getAudioTracks().length', '0');
130
                shouldBe('stream2.getAudioTracks().length', '0');
131
                shouldBe('stream2.getVideoTracks().length', '0');
131
                shouldBe('stream2.getVideoTracks().length', '0');
132
132
133
                debug("<br>*** it should be impossible to add a track after the stream has ended");
133
                debug("<br>*** it should be impossible to remove a track after the stream has ended");
134
                shouldThrow('stream2.addTrack(audioTrack)', '"Error: InvalidStateError: DOM Exception 11"');
135
                shouldThrow('stream2.removeTrack(audioTrack)', '"Error: InvalidStateError: DOM Exception 11"');
134
                shouldThrow('stream2.removeTrack(audioTrack)', '"Error: InvalidStateError: DOM Exception 11"');
136
            }
135
            }
137
136
- LayoutTests/fast/mediastream/MediaStream-add-tracks-to-inactive-stream-expected.txt +13 lines
Line 0 LayoutTests/fast/mediastream/MediaStream-add-tracks-to-inactive-stream-expected.txt_sec1
1
Test adding tracks to inactive MediaStream.
2
3
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
4
5
6
MediaStream without tracks created.
7
PASS stream2.getAudioTracks().length is 0
8
Adding tracks to inactive stream
9
PASS stream2.getAudioTracks().length is 1
10
PASS successfullyParsed is true
11
12
TEST COMPLETE
13
- LayoutTests/fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html +79 lines
Line 0 LayoutTests/fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html_sec1
1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2
<html>
3
    <head>
4
        <script src="../../resources/js-test-pre.js"></script>
5
    </head>
6
    <body>
7
        <p id="description"></p>
8
        <div id="console"></div>
9
        <script>
10
            description("Test adding tracks to inactive MediaStream.");
11
12
            var stream1;
13
            var stream2;
14
            var audioTrack;
15
            var videoTrack;
16
17
            function error() {
18
                testFailed('Stream generation failed.');
19
                finishJSTest();
20
            }
21
22
            function getUserMedia(dictionary, callback) {
23
                try {
24
                    navigator.webkitGetUserMedia(dictionary, callback, error);
25
                } catch (e) {
26
                    testFailed('webkitGetUserMedia threw exception :' + e);
27
                    finishJSTest();
28
                }
29
            }
30
31
            function tryAddTrack(stream, track) {
32
                try {
33
                    stream.addTrack(track);
34
                } catch (exception) {
35
                    testFailed("addTrack threw an exception.");
36
                    finishJSTest();
37
                }
38
            }
39
40
            function shouldNotFire() {
41
                testFailed("\"addtrack\" or \"removetrack\" events should not fire as a result of local addTrack() or removeTrack() operations.");
42
            }
43
44
            function shouldFireActive() {
45
                debug("Stream2 is active.");
46
                finishJSTest();
47
            }
48
49
            function shouldFireInActive() {
50
                debug("Stream2 is inactive.");
51
                finishJSTest();
52
            }
53
54
            function createStreamAndAddTRacks() {
55
                stream2 = new webkitMediaStream();
56
                debug("MediaStream without tracks created.");
57
                stream2.onactive = shouldFireActive;
58
                stream2.oninactive = shouldFireInActive;
59
                shouldBe('stream2.getAudioTracks().length', '0');
60
                audioTrack = stream1.getAudioTracks()[0];
61
                debug("Adding tracks to inactive stream");
62
                tryAddTrack(stream2, audioTrack);
63
                shouldBe('stream2.getAudioTracks().length', '1');
64
                finishJSTest();
65
            }
66
67
            function gotStream1(s) {
68
                stream1 = s;
69
                createStreamAndAddTRacks();
70
            }
71
72
            getUserMedia({audio:true, video:true}, gotStream1);
73
74
            window.jsTestIsAsync = true;
75
            window.successfullyParsed = true;
76
        </script>
77
        <script src="../../resources/js-test-post.js"></script>
78
    </body>
79
</html>

Return to Bug 132558