Revision 14f1aecaee987281fd960ba0818c49dbd11f20fe authored by Yoshifumi Inoue on 22 March 2018, 04:00:01 UTC, committed by Blink WPT Bot on 22 March 2018, 04:10:17 UTC
This patch change |Range::intersectsNode()| to follow the spec[1]. [1] https://dom.spec.whatwg.org/#dom-range-intersectsnode Bug: 822510 Change-Id: Ifd504443355da12482b759701cddd62e2a90d7a6 Reviewed-on: https://chromium-review.googlesource.com/970044 Reviewed-by: Kent Tamura <tkent@chromium.org> Commit-Queue: Yoshifumi Inoue <yosin@chromium.org> Cr-Commit-Position: refs/heads/master@{#544971}
1 parent f5b48cf
mediasource-sourcebuffer-mode.html
<!DOCTYPE html>
<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
<html>
<head>
<meta charset="utf-8">
<title>SourceBuffer.mode test cases.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="mediasource-util.js"></script>
</head>
<body>
<div id="log"></div>
<script>
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
assert_equals(sourceBuffer.mode, 'segments', 'default append mode should be \'segments\'');
test.done();
}, 'Test initial value of SourceBuffer.mode is "segments"');
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
sourceBuffer.mode = 'sequence';
assert_equals(sourceBuffer.mode, 'sequence', 'mode after setting it to \'sequence\'');
// Setting a mode that is not in AppendMode IDL enum should be ignored and not cause exception.
sourceBuffer.mode = 'invalidmode';
sourceBuffer.mode = null;
sourceBuffer.mode = '';
sourceBuffer.mode = 'Segments';
assert_equals(sourceBuffer.mode, 'sequence', 'mode unchanged by attempts to set invalid modes');
sourceBuffer.mode = 'segments';
assert_equals(sourceBuffer.mode, 'segments', 'mode after setting it to \'segments\'');
test.done();
}, 'Test setting SourceBuffer.mode');
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
mediaSource.removeSourceBuffer(sourceBuffer);
assert_throws('InvalidStateError',
function() { sourceBuffer.mode = 'segments'; },
'Setting valid sourceBuffer.mode on removed SourceBuffer should throw InvalidStateError.');
test.done();
}, 'Test setting a removed SourceBuffer\'s mode');
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
sourceBuffer.appendBuffer(mediaData);
assert_true(sourceBuffer.updating, 'updating attribute is true');
assert_throws('InvalidStateError',
function() { sourceBuffer.mode = 'segments'; },
'Setting valid sourceBuffer.mode on updating SourceBuffer threw InvalidStateError.');
test.done();
}, 'Test setting SourceBuffer.mode while still updating');
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
test.expectEvent(sourceBuffer, 'updateend', 'Append ended.');
sourceBuffer.appendBuffer(mediaData);
test.waitForExpectedEvents(function()
{
assert_false(sourceBuffer.updating, 'updating attribute is false');
test.expectEvent(mediaSource, 'sourceended', 'MediaSource sourceended event');
mediaSource.endOfStream();
assert_equals(mediaSource.readyState, 'ended', 'MediaSource readyState is \'ended\'');
});
test.waitForExpectedEvents(function()
{
assert_equals(mediaSource.readyState, 'ended', 'MediaSource readyState is \'ended\'');
test.expectEvent(mediaSource, 'sourceopen', 'MediaSource sourceopen event');
sourceBuffer.mode = 'segments';
assert_equals(mediaSource.readyState, 'open', 'MediaSource readyState is \'open\'');
});
test.waitForExpectedEvents(function()
{
assert_equals(mediaSource.readyState, 'open', 'MediaSource readyState is \'open\'');
test.done();
});
}, 'Test setting SourceBuffer.mode triggers parent MediaSource \'ended\' to \'open\' transition.');
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
var fullMediaSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]);
var truncateAt = Math.floor(segmentInfo.media[0].size * 0.5); // Pick first 50% of segment bytes.
var partialMediaSegment = fullMediaSegment.subarray(0, truncateAt);
var mediaSegmentRemainder = fullMediaSegment.subarray(truncateAt);
// Append init segment.
test.expectEvent(sourceBuffer, 'updateend', 'Init segment append ended.');
sourceBuffer.appendBuffer(initSegment);
test.waitForExpectedEvents(function()
{
assert_false(sourceBuffer.updating, 'updating attribute is false');
assert_equals(sourceBuffer.mode, 'segments');
sourceBuffer.mode = 'segments'; // No exception should occur.
assert_equals(sourceBuffer.timestampOffset, 0.0);
sourceBuffer.timestampOffset = 10.123456789; // No exception should occur.
assert_equals(sourceBuffer.timestampOffset, 10.123456789); // Super-precise offsets should round-trip.
// Append first part of media segment.
test.expectEvent(sourceBuffer, 'updateend', 'Partial media segment append ended.');
sourceBuffer.appendBuffer(partialMediaSegment);
});
test.waitForExpectedEvents(function()
{
assert_false(sourceBuffer.updating, 'updating attribute is false');
assert_equals(sourceBuffer.mode, 'segments');
assert_throws('InvalidStateError',
function() { sourceBuffer.mode = 'segments'; },
'Setting valid sourceBuffer.mode while still parsing media segment threw InvalidStateError.');
assert_equals(sourceBuffer.timestampOffset, 10.123456789);
assert_throws('InvalidStateError',
function() { sourceBuffer.timestampOffset = 20.0; },
'Setting valid sourceBuffer.timestampOffset while still parsing media segment threw InvalidStateError.');
// Append remainder of media segment.
test.expectEvent(sourceBuffer, 'updateend', 'Append ended of remainder of media segment.');
sourceBuffer.appendBuffer(mediaSegmentRemainder);
});
test.waitForExpectedEvents(function()
{
assert_false(sourceBuffer.updating, 'updating attribute is false');
assert_equals(sourceBuffer.mode, 'segments');
sourceBuffer.mode = 'segments'; // No exception should occur.
assert_equals(sourceBuffer.timestampOffset, 10.123456789);
sourceBuffer.timestampOffset = 20.0; // No exception should occur.
test.done();
});
}, 'Test setting SourceBuffer.mode and SourceBuffer.timestampOffset while parsing media segment.');
</script>
</body>
</html>
Computing file changes ...