diff --git a/build/conformance.textproto b/build/conformance.textproto index 3657d6c34..fc791eb5d 100644 --- a/build/conformance.textproto +++ b/build/conformance.textproto @@ -140,7 +140,6 @@ requirement: { 'handle sub-arrays' whitelist_regexp: 'lib/util/buffer_utils.js' whitelist_regexp: 'lib/util/object_utils.js' - whitelist_regexp: 'lib/util/uint8array_utils.js' whitelist_regexp: 'test/' } diff --git a/lib/hls/hls_parser.js b/lib/hls/hls_parser.js index 810a2f1e2..56a37b6a1 100644 --- a/lib/hls/hls_parser.js +++ b/lib/hls/hls_parser.js @@ -37,7 +37,6 @@ goog.require('shaka.net.DataUriPlugin'); goog.require('shaka.net.NetworkingEngine'); goog.require('shaka.text.TextEngine'); goog.require('shaka.util.ArrayUtils'); -goog.require('shaka.util.BufferUtils'); goog.require('shaka.util.DataViewReader'); goog.require('shaka.util.Error'); goog.require('shaka.util.Functional'); @@ -1736,8 +1735,7 @@ shaka.hls.HlsParser = class { */ getStartTimeFromTsSegment_(data) { const reader = new shaka.util.DataViewReader( - shaka.util.BufferUtils.toDataView(data), - shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + data, shaka.util.DataViewReader.Endianness.BIG_ENDIAN); const fail = () => { throw new shaka.util.Error( diff --git a/lib/media/webm_segment_index_parser.js b/lib/media/webm_segment_index_parser.js index 759b49b67..ce8d84965 100644 --- a/lib/media/webm_segment_index_parser.js +++ b/lib/media/webm_segment_index_parser.js @@ -21,7 +21,6 @@ goog.require('goog.asserts'); goog.require('shaka.log'); goog.require('shaka.media.InitSegmentReference'); goog.require('shaka.media.SegmentReference'); -goog.require('shaka.util.BufferUtils'); goog.require('shaka.util.EbmlElement'); goog.require('shaka.util.EbmlParser'); goog.require('shaka.util.Error'); @@ -46,8 +45,7 @@ shaka.media.WebmSegmentIndexParser = class { scaledPresentationTimeOffset) { const tuple = shaka.media.WebmSegmentIndexParser.parseWebmContainer_(initData); - const parser = new shaka.util.EbmlParser( - shaka.util.BufferUtils.toDataView(cuesData)); + const parser = new shaka.util.EbmlParser(cuesData); const cuesElement = parser.parseElement(); if (cuesElement.id != shaka.media.WebmSegmentIndexParser.CUES_ID) { shaka.log.error('Not a Cues element.'); @@ -75,8 +73,7 @@ shaka.media.WebmSegmentIndexParser = class { * @private */ static parseWebmContainer_(initData) { - const parser = new shaka.util.EbmlParser( - shaka.util.BufferUtils.toDataView(initData)); + const parser = new shaka.util.EbmlParser(initData); // Check that the WebM container data starts with the EBML header, but // skip its contents. diff --git a/lib/text/mp4_vtt_parser.js b/lib/text/mp4_vtt_parser.js index 3fd017625..c10d1aebc 100644 --- a/lib/text/mp4_vtt_parser.js +++ b/lib/text/mp4_vtt_parser.js @@ -22,7 +22,6 @@ goog.require('shaka.log'); goog.require('shaka.text.Cue'); goog.require('shaka.text.TextEngine'); goog.require('shaka.text.VttTextParser'); -goog.require('shaka.util.BufferUtils'); goog.require('shaka.util.DataViewReader'); goog.require('shaka.util.Error'); goog.require('shaka.util.Functional'); @@ -214,8 +213,7 @@ shaka.text.Mp4VttParser = class { /** @type {!shaka.util.DataViewReader} */ const reader = new shaka.util.DataViewReader( - shaka.util.BufferUtils.toDataView(rawPayload), - shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + rawPayload, shaka.util.DataViewReader.Endianness.BIG_ENDIAN); for (const presentation of presentations) { // If one presentation corresponds to multiple payloads, it is assumed diff --git a/lib/util/buffer_utils.js b/lib/util/buffer_utils.js index 44c9d0b59..523b74ee3 100644 --- a/lib/util/buffer_utils.js +++ b/lib/util/buffer_utils.js @@ -22,7 +22,7 @@ goog.require('shaka.util.Iterables'); /** * @summary A set of BufferSource utility functions. - * @exportDoc + * @exportInterface */ shaka.util.BufferUtils = class { /** diff --git a/lib/util/data_view_reader.js b/lib/util/data_view_reader.js index 3dbba1f57..beb207fae 100644 --- a/lib/util/data_view_reader.js +++ b/lib/util/data_view_reader.js @@ -29,12 +29,12 @@ goog.require('shaka.util.StringUtils'); */ shaka.util.DataViewReader = class { /** - * @param {!DataView} dataView The DataView. + * @param {BufferSource} data * @param {shaka.util.DataViewReader.Endianness} endianness The endianness. */ - constructor(dataView, endianness) { + constructor(data, endianness) { /** @private {!DataView} */ - this.dataView_ = dataView; + this.dataView_ = shaka.util.BufferUtils.toDataView(data); /** @private {boolean} */ this.littleEndian_ = diff --git a/lib/util/ebml_parser.js b/lib/util/ebml_parser.js index 4bfbf3af5..b307f8c47 100644 --- a/lib/util/ebml_parser.js +++ b/lib/util/ebml_parser.js @@ -31,16 +31,15 @@ goog.require('shaka.util.Iterables'); */ shaka.util.EbmlParser = class { /** - * @param {!DataView} dataView The EBML data. + * @param {BufferSource} data */ - constructor(dataView) { + constructor(data) { /** @private {!DataView} */ - this.dataView_ = dataView; + this.dataView_ = shaka.util.BufferUtils.toDataView(data); /** @private {!shaka.util.DataViewReader} */ this.reader_ = new shaka.util.DataViewReader( - dataView, - shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + this.dataView_, shaka.util.DataViewReader.Endianness.BIG_ENDIAN); } diff --git a/lib/util/mp4_parser.js b/lib/util/mp4_parser.js index e615ff9e0..a67cfefa0 100644 --- a/lib/util/mp4_parser.js +++ b/lib/util/mp4_parser.js @@ -19,7 +19,6 @@ goog.provide('shaka.util.Mp4Parser'); goog.require('goog.asserts'); goog.require('shaka.log'); -goog.require('shaka.util.BufferUtils'); goog.require('shaka.util.DataViewReader'); goog.require('shaka.util.Iterables'); @@ -94,8 +93,7 @@ shaka.util.Mp4Parser = class { */ parse(data, partialOkay) { const reader = new shaka.util.DataViewReader( - shaka.util.BufferUtils.toDataView(data), - shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + data, shaka.util.DataViewReader.Endianness.BIG_ENDIAN); this.done_ = false; while (reader.hasMoreData() && !this.done_) { @@ -156,8 +154,7 @@ shaka.util.Mp4Parser = class { (payloadSize > 0) ? reader.readBytes(payloadSize) : new Uint8Array(0); const payloadReader = new shaka.util.DataViewReader( - shaka.util.BufferUtils.toDataView(payload), - shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + payload, shaka.util.DataViewReader.Endianness.BIG_ENDIAN); /** @type {shaka.extern.ParsedBox} */ const box = { diff --git a/test/util/data_view_reader_unit.js b/test/util/data_view_reader_unit.js index d7522d310..0dcae8bf6 100644 --- a/test/util/data_view_reader_unit.js +++ b/test/util/data_view_reader_unit.js @@ -38,17 +38,13 @@ describe('DataViewReader', () => { beforeEach(() => { bigEndianReader = new shaka.util.DataViewReader( - new DataView(data.buffer), - shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + data, shaka.util.DataViewReader.Endianness.BIG_ENDIAN); bigEndianReader2 = new shaka.util.DataViewReader( - new DataView(data2.buffer), - shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + data2, shaka.util.DataViewReader.Endianness.BIG_ENDIAN); littleEndianReader = new shaka.util.DataViewReader( - new DataView(data.buffer), - shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN); + data, shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN); littleEndianReader2 = new shaka.util.DataViewReader( - new DataView(data2.buffer), - shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN); + data2, shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN); }); it('reads a uint8 in big endian', () => { diff --git a/test/util/ebml_parser_unit.js b/test/util/ebml_parser_unit.js index 4e2a8cddf..a10090ddd 100644 --- a/test/util/ebml_parser_unit.js +++ b/test/util/ebml_parser_unit.js @@ -23,7 +23,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // Set size to 4 bytes. // Set the data to [0x01, 0x02, 0x03, 0x04]. const data = new Uint8Array([0x81, 0x84, 0x01, 0x02, 0x03, 0x04]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const elem = parser.parseElement(); expect(elem.id).toBe(0x81); @@ -43,9 +43,10 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // Set ID to 0x2. // Set size to 4 bytes. // Set the data to [0x09, 0x08, 0x07, 0x06]. - const data = new Uint8Array([0x81, 0x84, 0x01, 0x02, 0x03, 0x04, 0x82, 0x84, - 0x09, 0x08, 0x07, 0x06]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const data = new Uint8Array([ + 0x81, 0x84, 0x01, 0x02, 0x03, 0x04, 0x82, 0x84, 0x09, 0x08, 0x07, 0x06, + ]); + const parser = new shaka.util.EbmlParser(data); const elem1 = parser.parseElement(); expect(elem1.id).toBe(0x81); @@ -70,7 +71,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // The size should be 5 bytes. // Set the data to [0xaa, 0xbb, 0xcc, 0xdd, 0xee]. const data = new Uint8Array([0x81, 0xff, 0xaa, 0xbb, 0xcc, 0xdd, 0xee]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const element = parser.parseElement(); expect(element).toBeTruthy(); @@ -84,7 +85,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // Extract the variable sized integer from |data|. Note that since // |data| contains exactly one variable sized integer, |vint| should be // identical to |data|. - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x41); @@ -95,7 +96,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // 14-bit: 01|10 0001, 0001 1001 const data = new Uint8Array([0x61, 0x19]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x2119); @@ -106,7 +107,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // 21-bit: 001|1 0001, 0010 0001, 0001 0011 const data = new Uint8Array([0x31, 0x21, 0x13]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x112113); @@ -117,7 +118,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // 28-bit: 0001 | 1000, 0001 0001, 0001 0001, 0001 0101 const data = new Uint8Array([0x18, 0x11, 0x11, 0x15]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x8111115); @@ -128,7 +129,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // 35-bit: 0000 1|100, 0001 0001, 0001 0001, 0001 0001, 0001 1001 const data = new Uint8Array([0x0c, 0x11, 0x11, 0x11, 0x19]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x411111119); @@ -140,7 +141,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // 0001 1000 const data = new Uint8Array([0x06, 0x12, 0x11, 0x11, 0x11, 0x18]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x21211111118); @@ -152,7 +153,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // 0001 0001, 1001 0001 const data = new Uint8Array([0x03, 0x12, 0x11, 0x11, 0x11, 0x11, 0x91]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x1121111111191); @@ -165,7 +166,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { const data = new Uint8Array([0x01, 0x12, 0x14, 0x18, 0x11, 0x11, 0x19, 0x31]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const vint = parser.parseVint_(); expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x12141811111931); @@ -184,7 +185,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // 0001 0001 const data = new Uint8Array( [0x00, 0x81, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); parser.parseVint_(); }).toThrow(expected); }); @@ -223,7 +224,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { it('detects the end of input while reading a vint', () => { // 14-bit: 01|10 0001, 0001 0001 const data = new Uint8Array([0x61]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const expected = Util.jasmineError(new shaka.util.Error( shaka.util.Error.Severity.CRITICAL, @@ -237,7 +238,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // Set size to 4 bytes. // Set the data to [0x01, 0x02, 0x03, 0x04]. const data = new Uint8Array([0x81, 0x84, 0x01, 0x02, 0x03, 0x04]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const elem = parser.parseElement(); expect(elem.id).toBe(0x81); @@ -250,7 +251,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // Set the data to [0x01, 0x02, 0x03, ..., 0x09]. const data = new Uint8Array( [0x81, 0x89, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const elem = parser.parseElement(); expect(elem.id).toBe(0x81); @@ -268,7 +269,7 @@ describe('EbmlParser', /** @suppress {accessControls} */ () => { // Set the data to [0x2f, 0xff, 0xff, ..., 0xff]. const data = new Uint8Array( [0x81, 0x88, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]); - const parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + const parser = new shaka.util.EbmlParser(data); const elem = parser.parseElement(); expect(elem.id).toBe(0x81);