Commit Graph

1330 Commits

Author SHA1 Message Date
Jacob Trimble cfb3e1d24c Changed Stream info to only have one key ID.
b/26982075

Change-Id: I462796ba34bbde8b4e3b0020a39e2474679daee7
2016-02-12 23:32:59 +00:00
Jacob Trimble 8e21f46159 Fix ContentProtection parsing for non-IOP manifests.
This fixes the ContentProtection parsing to support non-IOP-compliant
manifests.  This enables the unit tests for it, as well as adding
several more.

b/26982075

Change-Id: I0da2dbaa24ea2a6acf657b97f0a2e2d24ee3a16d
2016-02-12 21:48:19 +00:00
Joey Parrish 4aea4d0d5f Fix $Time$ rounding errors in SegmentTemplate
Sometimes the calculated $Time$ value is not an integer due to
floating-point rounding errors, but the $Time$ value filled into the
template must be an integer.

Change-Id: I5e61ac5143222620e8b5e1dfeb1847241c6a6876
2016-02-12 10:31:46 -08:00
Joey Parrish db714c8364 Do not require sourceURL in Initialization
It is the more common case for SegmentBase if the init segment comes
from the same URL as the media segments.

Change-Id: Ia9993471c892e103929729e2d496e0bc2f836b88
2016-02-12 18:16:51 +00:00
Jacob Trimble bfa42a8d1e Fix argument bug in Dash parser.
This also changes from using Node types to using Element types.  This
is more correct since the code only deals with XML elements and not
with other Node types (e.g. text content nodes).

Change-Id: I0e8c7bf2adc1800a494e575b16661e8c69a7deb0
2016-02-11 15:14:52 -08:00
Joey Parrish 79f714056d Add additional ContentProtection specs
These are disabled initially, but cover non-IOP-compliant manifests.

b/26982075

Change-Id: Ibb6bc16f68b7d740b46037911373102b439dadcd
2016-02-11 22:02:44 +00:00
Joey Parrish 9fd997909a Fail fast if browser not supported
Rather than fail hundreds of tests, if we can detect that the browser
is not supported by the library, simply fail and cancel the rest of
the tests.

Change-Id: I4a4f1c04a389b690f0f58025f8b8bca4e94c6a29
2016-02-11 21:21:06 +00:00
Joey Parrish 97129b2310 Use StreamingEngine configure() to take in config
Change-Id: Ica651d25a353d84c44e8072c611b386c1c846b87
2016-02-10 11:42:54 -08:00
Joey Parrish 493438cce5 Infer a missing URI scheme
Uses location to determine what the scheme should be if unspecified.
This is important because it allows us to use URIs that work for
either HTTP or HTTPS hosted apps without mixed content warnings.

Some special sauce was needed to make it testable, since we generally
can't mock location in tests.

Change-Id: I294ac532f1bba80977597e11addd7f585d1e9b79
2016-02-10 19:00:23 +00:00
Joey Parrish 6d57a9181b Improve jasmine/karma formatting of util.Error
Add extra info to util.Error in non-compiled builds so that we have
meaningful stack traces in test failures.

Change-Id: I351d2f65ef764947f8318372a47eeb6f014d7b16
2016-02-09 14:44:59 -08:00
Joey Parrish 17fdcc61b9 Do not assume an initial duration of 0
This brings the MediaSourceEngine integration tests more in line with
reality.

Change-Id: I2a9446071e937e58c3878250aa1ece2c8a750b93
2016-02-09 11:28:36 -08:00
Joey Parrish 489ebfa941 Fix handling of configuration callbacks
Nullable callbacks can't be handled generically, since types won't
match the template.  typeof(null) != typeof(function(){})

- Make customScheme non-nullable.
- Check number of parameters in callbacks.
- Add a test that covers customScheme setting and validation.

Change-Id: I58eb88fc667bfa8ab13a679f1b1eed0c894e3755
2016-02-03 11:16:59 -08:00
Joey Parrish 2226269674 Add configure() to manifest parser
This simplifies the parser constructor and allows config updates after
playback has begun.

Change-Id: I43d53f2e074c1696a1f042961f399514b1afe5d6
2016-02-03 11:10:46 -08:00
Joey Parrish a6a150848e Player configuration
Change-Id: I43298c6bb86399fc10fbd5c201fed0902e0850fa
2016-02-02 18:41:19 -08:00
Jacob Trimble 47a99253b0 Polyfills now register as plugins.
Change-Id: I498bda84d92f2c733f120e1b1c5a0ccae305ba15
2016-02-02 12:11:49 -08:00
Jacob Trimble a7bd6991ba Add ContentProtection parsing to DASH parser.
Now, the DASH parser correctly parses ContentProtection elements
and creates the needed DRM info.

Change-Id: I41c4f24e983895f670fae948343400153525545c
2016-02-02 17:10:25 +00:00
Joey Parrish f643674250 Fix Safari test failures
Safari adds extra properties 'line', 'column', and 'sourceURL' to
thrown objects, including our own home-grown Error object.  Ignore
these extra properties in tests.

Change-Id: I2c84aae8d64fad7dd6cc8c7e287da70bff0efb59
2016-01-29 12:27:23 -08:00
Joey Parrish 18678f2492 Fix IE11 test failures
This fixes small incompatibilities for IE11:
 - XML parser sometimes fails by throwing rather than returning null
 - bug in Promise polyfill prevented use of Promise.all([null, p])
 - IE11 does not have ArrayBuffer.prototype.slice, used by integration
   tests to clone a buffer in StreamGenerator

Change-Id: I9ace6bd17cd60272f85ce388342ca456f14d04c9
2016-01-29 09:18:07 -08:00
Timothy Drews f8b7b01fb0 Implement byte limits and segment eviction.
* StreamingEngine now limits buffers to a specified byte limit
  and evicts old segments as it appends new ones.

Change-Id: Id3e65bc45e782bf9d1214a6b52df0b92892606cb
2016-01-28 14:23:32 -08:00
Jacob Trimble 39c29ba237 Now runs the compiler over test code.
When the check script is run, it will run the compiler over the test
code also, it does not keep the output.  This allows type checking of
the test code.  This change also fixes several bugs that were
discovered.

Change-Id: I35ffc80e8785e1afd9e6252db915645c5b48b5d4
2016-01-28 12:21:40 -08:00
Joey Parrish b904aef203 DRM-related DASH tests
Change-Id: I137f7130a31c94d114cecbc02f081c3ebe5fd94c
2016-01-25 13:55:03 -08:00
Jacob Trimble 78e0b96cb4 Add support for UTCTiming elements in DASH.
Closes #205
Closes #241

Change-Id: Ieb870466bc6c38ee4a4e4919afcf15164cf8e981
2016-01-25 13:22:02 -08:00
Joey Parrish 82e5654636 No optional args in NetworkingEngine.makeRequest
The optional arguments in this convenience function really only help
in the tests.  To avoid some component in the library accidentally
making a request with default retry parameters instead of those
configured by the user, I'm making the retry parameters required.

The optional argument for method is only used once.  To avoid the
temptation to add more positional arguments for other seldom-used
fields, I'm dropping the method argument completely.

Change-Id: Ib0afb5766f68c5505f11372e3b004fc8eaca1223
2016-01-25 12:12:06 -08:00
Jacob Trimble 79b92394ab Added fake networking engine for testing.
Change-Id: I1b69e9b7e7f022ab71e13d3bde919cf3a56c17e5
2016-01-25 11:29:28 -08:00
Jacob Trimble 3cc1a43b8d Added some networking utility functions.
This adds some utility functions to NetworkingEngine for common
actions.  This also cleans up the related unit tests.

Change-Id: I1105b77b6dac3637d566c1a4e2f77004ad705e8b
2016-01-25 09:27:38 -08:00
Jacob Trimble 926083e032 Namespaced test utility functions.
Now all the utility functions that are in test/util belong to
namespaces (shaka.test.Util and shaka.test.Dash).

Change-Id: I0bcb359616b02d58c63b1054425003e5a5646aaf
2016-01-21 12:01:54 -08:00
Timothy Drews d92e485040 Refactor fake event loop.
Moves fake event loop and instantaneous event processing
functions to test utilities.

Change-Id: I07a55f06b3ef7b2ae50f227971597724da4d50ff
2016-01-20 11:45:15 -08:00
Jacob Trimble 7cd09c266a Removed goog.require from test code.
This removed any goog.require from the test code to make it simpler.
Now, shaka-player.uncompiled is required to be loaded before any
tests.  This fixes some dependency problems.

This also moves the utility test code to test/util.

Change-Id: I8991a61fc59c9c03e0143bb0883fd6d166af86c2
2016-01-16 01:19:28 +00:00
Joey Parrish 0b886325ab All response headers should be lowercase
This makes it possible for the few parts of the code which will use
headers to do so without relying on assumptions about case.

Change-Id: I3b1ca57a3d789d18d51b4ee94f0791daf301993f
2016-01-15 15:12:21 -08:00
Joey Parrish 24aab447f8 Rename spec/ to test/
Also renames *_spec.js to *_unit.js

Change-Id: I00602daa555cc1014e2a2a68201bb137d36ebada
2016-01-15 22:57:02 +00:00