According to the agreement with the IMA team, we will
no longer hide their UI during ads. Instead we will
incorporate their elements into our layout.
(Some of the elements they expose are legally required
or business critical for partners for certain types of
ads).
This change replaces our skip button with the IMA one
and tweaks our layout to make it fit better.
We are keeping our ad counter and the 'Ad X of Y'
element.
Our skip button will stay in the library, and we will
use it for other (non IMA) ad integrations.
Change-Id: I648c6c65a34607685a409a264c2a03d74cc4d461
The Cast receiver does not ever change the controls between our UI and
the native controls, but the demo app does. So in the demo app, we
never noticed that they do not seem to show up by default any more.
This fixes the UI library to show its own control by default, which in
turn fixes the Cast receiver app and any other app which did not use
setEnabledShakaControls().
Change-Id: I7889f1a7ec612bc7a260f5433316104d64ad4a26
When set the configuration to true, using keyboard to control playback
will be enabled, such as seek forward/backward, jump to the
beginning/end, play/pause by press the space key, etc.
Closes#2489
Change-Id: I0e46bd5853d47855aae6e6dedcc7de8798bf4298
This removes periods from the internal manifest structure and cleans
up code and tests accordingly. This leaves us unable to play
multi-period DASH & offline streams until the main period-flattening
algorithm is completed in shaka.util.Periods.
Three test cases have been disabled for the moment.
Multi-period playback will be restored in a smaller, more focused
follow-up commit, with disabled tests re-enabled.
Issue #1339 (flatten periods)
Issue #1698 (rapid period transitions issue)
Issue #856 (audio change causes bitrate change)
Closes#892 (refactor StreamingEngine)
Change-Id: I0cbf3b56bfdb51add15229df323b902f0b2e643a
After leaving tab navigation, we would wind up with an extra callback
fired on keydown. This drops the duplicate.
Change-Id: I4e7bc0c433e5648759788a9c1a70267844c2e3f1
In addition to dismissing the overflow menu when the video is clicked,
dismiss when any part of the window is clicked. This is no different
from our event listener on the window for key events, so it should not
negatively impact applications.
Fixes: 131843503
Change-Id: Icc5f16f25d74ee5de88f5a928074c4f995a8dea6
When destroying the UI, it destroys the CastProxy & Player. Then the
Player destroys the AdManager. The AdManager then triggers events
that the UI elements listen to. Those events cause the UI elements to
invoke the destroyed CastProxy.
Therefore it is important to destroy the UI elements before the
CastProxy and Player.
This was discovered while working on an unrelated issue, by observing
errors logs from automated UI tests. The logs contained exceptions
with stack traces.
Change-Id: I6c1d070255bb138967d5e733c0c7ec8dd16350b6
Without this, it may not show the correct language.
This bug was discovered while updating our locale-based easter egg.
If you like reading commit messages, and you like easter eggs, maybe
go hunt on our appspot demo. ;-)
Change-Id: Ie01143a7d419fb51438e763e00fe299424549c9a
These are not compiled into the library by default, but can be with
the --locales option to either build/build.py or build/all.py. They
can also be lazy-loaded on-demand, as in our demo app.
There are still some missing translations for Finnish ("fi"), Hebrew
("iw"), and Indonesian ("id").
This also corrects the list of tier 1 default languages in the build
scripts.
Change-Id: I992d7bebbb4e04d55b7992ecaee1d85bb6c1c5da
This configuration, which is true by default, lets a user optionally
disable the "go fullscreen on double-click" functionality.
This allows a developer to fully disable fullscreen mode, if they so
wish, or to retain the fullscreen button but disable other methods of
entering fullscreen.
Issue #2459
Change-Id: I196602fc9843e0fd799c78703de60f864e906841
this.video_.classList is undefined once video_ becomes a proxy object.
UI-related things (CSS, tab indexes, sizing) should always be done on
this.localVideo_ instead.
Closes#2451
Change-Id: Id6b007f3bf089bdf8fd532e2832f7b909c9fdf97
This change creates mocks and fakes for ad testing and adds
tests for the ad container and skip button. Skip button
tests found a bug - this CL also fixes it.
Issue #2367.
Change-Id: I36cb293f9611fbc8592bdc32e156f17a7a78e010
If set, this new config field will show any unbuffered region at the
start of the seek bar. This matches the v2.5 default behavior. If
unset (the v2.6 default), this will paint any unbuffered region at the
start of the seek bar as simply "played" content (matching Chrome's
native seek bar).
Closes#2424
Change-Id: I528169982ce493b0dbf5a8a1bb46e9e096f422d6
We did not stop the AdCounter element's timer when it was released
before. This meant that changing the controls while an ad was playing
would cause errors.
This adds an override for release to AdCounter, that does that.
Change-Id: I07e4f9c09c466d8130f31a35ceae70df622f3da2
Instead of having the "factories" use "new" to construct them, now they
will be plain functions.
Closes#1521
Change-Id: Ia6151ad679a78a5c6db128d43094c82add0af348
This also fixes a bug where the UI source.json file was invalid since
it had a trailing comma.
The JSON files were sorted with this Python:
with open(path, 'r') as f:
obj = json.load(f)
with open(path, 'w') as f:
f.write(json.dumps(obj, indent=2, sort_keys=True,
ensure_ascii=False).replace(' \n', '\n'))
Change-Id: I846dfbbc88254030147193fad057bed024997bcd
Some of the files still used the old long license. This increased the
size of the compiled bundle since it had both versions.
Change-Id: Iec137f71547f91369a563145f870eb26ddc96a96
- Drop unused classes
- Drop shaka-displayed in favor of shaka-hidden
- Move shaka-hidden to general.less and fix specificity issue
Change-Id: I9c91da637023607cccd6e7602d9b9ef30994dd82
This works around google/material-design-icons#958 by switching from
the default "solid" style to the "rounded" icon style.
Change-Id: Iea29ed3732d252bd2d089c802c478a97cbda163d
Please note that this CL doesn't add the new control
to the default layout, so it won't show up in our
demo page.
Issue #2362
Change-Id: Ibecf6a7174de7d8eca9049f0b46ae179a03b9c01
Different ads have been added to three assets.
Demo search CSS has been adjusted a bit for better
experience.
Feature name has been changed from "AD" to "ADS" to
reflect the fact that a single asset can have more
than one ad.
Issue #2222:
Change-Id: I12a63b813fb4bac79362f1689b485a824f5a9682
The check icon with selected audio language was not showing because
there might be multiple tracks with the same language and role, and we
only add a button with the first track of this [language, role]
combination to the list, which may not be the selected track.
Closes#2353
Change-Id: Ic95c8f42bf185a6edbde6cb4dd83e7640d0bfa3c
To match Chrome native controls, the default controls for desktop will
now contain the small play/pause button, but default controls for
mobile will now contain the large play/pause button. Mobile controls
will also not contain the volume button.
This removes several CSS-based versions of these things in preference
for configuration.
Apps can still override the defaults, no matter the platform. Apps
can also make their own mobile-based config choices in JS by checking
video.ui.isMobile() or change styles in CSS using ".shaka-mobile".
Change-Id: I4fb8391f7f3727c7086cd3bca2b1d5c93bd9e856
This option will be used in our cast receiver to delay fading the
controls for a few seconds when playback begins.
Change-Id: Ia44c2eb6cd4fc9c40f07b0336556a87762f2ee14
This is now based solely on container attributes and CSS, as it used
to be, removing the need for a list of controls to hide in JavaScript.
This also does away with the "shaka-fade-out-on-mouse-out" CSS class.
Change-Id: Ic2f77c5b2f0691023279d9c99cfe3519f4b26cdd
This was broken during recent ads work, when we refactored how
controls are shown/hidden in CSS. When we transitioned from
showing/hiding the container to showing/hiding individual controls,
the override behavior for casting was lost. This restores it.
Change-Id: I81df8e4d3ff14ded0fe431f5f1b66fa821610e02