From 8173085fc82b0d3a7c54f0b2e8b18fdac6667fb8 Mon Sep 17 00:00:00 2001 From: Theodore Abshire Date: Wed, 25 Sep 2019 13:54:17 -0700 Subject: [PATCH] Fix strange compiler problem in HLS parser. Previously, the Closure compiler was causing a strange problem in non-debug compiled builds in the HLS parser: when we make an alias for shaka.net.NetworkingEngine.RequestType, if we access RequestType.SEGMENT the value is undefined. However, if we store shaka.net.NetworkingEngine.RequestType.SEGMENT in a variable, it works. Looking at the compiled code, when shaka.net.NetworkingEngine.RequestType is defined, SEGMENT seems to be treated as some special case, which might explain this odd behavior. Fixes #2156 Change-Id: I272dbc8b8db08ef8f9067c535c25890adae32440 --- lib/hls/hls_parser.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/hls/hls_parser.js b/lib/hls/hls_parser.js index e44774aba1..80dc3fd01d 100644 --- a/lib/hls/hls_parser.js +++ b/lib/hls/hls_parser.js @@ -1498,7 +1498,7 @@ shaka.hls.HlsParser = class { * @private */ async fetchPartialSegment_(reference, fullOnly) { - const RequestType = shaka.net.NetworkingEngine.RequestType; + const requestType = shaka.net.NetworkingEngine.RequestType.SEGMENT; // Create two requests: // 1. A partial request meant to fetch the smallest part of the segment @@ -1519,7 +1519,7 @@ shaka.hls.HlsParser = class { this.config_.retryParameters); if (fullOnly) { - return this.makeNetworkRequest_(fullRequest, RequestType.SEGMENT); + return this.makeNetworkRequest_(fullRequest, requestType); } // TODO(vaage): The need to do fall back requests is not likely to be unique @@ -1531,7 +1531,7 @@ shaka.hls.HlsParser = class { try { const response = await this.makeNetworkRequest_( - partialRequest, RequestType.SEGMENT); + partialRequest, requestType); return response; } catch (e) { @@ -1552,8 +1552,7 @@ shaka.hls.HlsParser = class { 'support Range requests and CORS preflights.', partialRequest.uris[0]); - const response = await this.makeNetworkRequest_( - fullRequest, RequestType.SEGMENT); + const response = await this.makeNetworkRequest_(fullRequest, requestType); return response; } @@ -1939,7 +1938,7 @@ shaka.hls.HlsParser = class { async guessMimeType_(contentType, codecs, playlist) { const HlsParser = shaka.hls.HlsParser; const ContentType = shaka.util.ManifestParserUtils.ContentType; - const RequestType = shaka.net.NetworkingEngine.RequestType; + const requestType = shaka.net.NetworkingEngine.RequestType.SEGMENT; goog.asserts.assert(playlist.segments.length, 'Playlist should have segments!'); @@ -1974,7 +1973,7 @@ shaka.hls.HlsParser = class { headRequest.method = 'HEAD'; const response = await this.makeNetworkRequest_( - headRequest, RequestType.SEGMENT); + headRequest, requestType); const contentMimeType = response.headers['content-type']; @@ -2035,12 +2034,12 @@ shaka.hls.HlsParser = class { * @private */ requestManifest_(absoluteUri) { - const RequestType = shaka.net.NetworkingEngine.RequestType; + const requestType = shaka.net.NetworkingEngine.RequestType.MANIFEST; const request = shaka.net.NetworkingEngine.makeRequest( [absoluteUri], this.config_.retryParameters); - return this.makeNetworkRequest_(request, RequestType.MANIFEST); + return this.makeNetworkRequest_(request, requestType); } /**