This is part of adding a new conformance rule to add additional type
safety. This will disallow using properties of unknown types or using
unknown properties.
The first parts will be fixing errors caused by the new rule. These
are backwards compatible, so can be applied before the rule is enabled.
Once all the errors and bugs are fixed, the rule will be enabled.
Change-Id: Ic37437a1ad2305bc50a814cdcc562e74703222ac
This changes the order of the things tested in the offline tests,
cleans them up a little, adds comments, and extends the playback
time by 5 additional seconds to deflake the tests.
Closes#903
Change-Id: I9c0656882cf31e3f61c67946b7867d3ef25ba953
The new isPersistentLicense option was not documented in #878.
This adds docs and renames it to usePersistentLicense.
Closes#873
Change-Id: I59ed32c98660ad7c155392a1708eab98f63131c3
Based on app configuration, we could store protected content offline
without a persistent license. The offline content would then require
a network connection, but only briefly for licensing. This makes
sense in a lot of commuter or airplane WiFi scenarios.
Closes#873
This adds a severity field to Error objects. This can be used to
detect whether an error is recoverable. All the same errors are still
reported so the field can be ignored.
There are two possible values:
* RECOVERABLE means that the Player will try to recover from the error
* CRITICAL means the Player will be unable to continue and must call
load() again
Closes#564
Change-Id: Ie2c5468340c13e7a288b99690ab65b7ecc0a6b29
This adds a method on Player to get the license expiration times for
the current EME sessions. This also adds the expiration times to the
stored content structure for offline content. This will update the
stored expiration while playing content (e.g. license duration changes
when playback starts).
Closes#727
Change-Id: I18770a79413423695bbb2ed5f31f6b19038a33d2
These tests will no longer be lumped into the same group as "external"
asset tests. This will allow us more control over test coverage in
different scenarios in our lab.
Change-Id: I0b0f2ae5ed6e74fdf87ad4ecf94ce41d94763537
This implements the workaround for a race in IndexedDB on IE/Edge.
If we don't get an 'upgradeneeded' event when we expect it, we will
close the connection and retry.
b/35993864
Change-Id: I78d1c18e4798c098167a1a6a184623780002a34f
StreamingEngine continues to buffer until the amount buffered is
greater than or equal to the goal. Playhead's watchdog checked that
the amount buffered was strictly greater than the goal, leading to a
race in which we could get stuck buffering forever.
The race was between buffering and the first watchdog timer callback.
If data gets buffered before the first callback fires, the watchdog
will see that bufferedAhead is greater than threshold, and it will
not enter a buffering state.
If the callback fires before anything is buffered, it sees
bufferedAhead == 0 and enters a buffering state. If the config is
such that bufferingGoal and rebufferingGoal are the same, then
Playhead is stuck in buffering. StreamingEngine won't buffer more
until something plays, and Playhead won't leave the buffering state
until something more is buffered.
This turned out to be the root cause of failures in one of our
quarantined tests. While debugging this test, I noticed that
video.playbackRate was 0, which we set while buffering. This led me
to investigate buffering logic in Playhead, where I noticed that
bufferedAhead was exactly rebufferingGoal in the instances where the
test failed.
In 100 test runs, the test failed 9 times. No other tests had to be
run to trigger the failure, so this one test was run in a for loop.
Once I understood the cause of the race, I found that I could trigger
the failure in 100 out of 100 tests by changing startWatchdogTimer_()
to onWatchdogTimer_() in the Playhead constructor. This ensures that
the timer callback fires synchronously, before anything can be
buffered.
With the underlying bug fixed, the test has now been removed from
quarantine.
Change-Id: Ief5c11b2211045a32dc0a9f711b17a4ec1bf55af
This hides 6 tests behind the --quarantined flag. Without this flag,
these tests will be skipped. This allows us to get consistent results
from the build bot while we work to fix these tests.
Change-Id: I6cf3921228da1831f71a89cd5802ea48c66752bd
Tests that use a remote license server should be behind the --external
flag. This introduces a new shim that makes it easy to mark tests as
external. This also lays the groundwork to hide tests behind other
flags.
Change-Id: I035de24e02035e732c515522378247c692e74b7c
All tests now have the same timeout value. This should simplify the
process of addressing timeouts on Safari.
Change-Id: I3b455bd639758007ec8b2b86ef236c56e919c15a
This allows integration tests to test Player and offline with "real"
manifests and segments that are generated using ManifestGenerator and
StreamGenerator. The networking scheme can also be used with an
unmodified Player.
b/29883614
Change-Id: I77aa5385ecaaac43ba713687befa2f064654375a
Based on several rounds of experiments, the timing on these tests was
determined to be too strict. Extending delays and timeouts on these
tests reduces flakiness across browsers and platforms.
Change-Id: Ie36c86f3afcb615991454d098e690199ca063f96