- the media router extension which handles chromecast is only enabled
on official Chrome builds so enable it on chromium as well
- our multicast implementation is a legacy one so patch it around
to make it work and use SO_REUSEADDR and SO_REUSEPORT on the socket
to make other clients able to bind to the same port and address so
that everything will work smoothly together and chromium will not
"block" the multicast ports
- enable a good amount of features that are used in the javascript extension
code that were only enabled for linux and used by the media router
extension
Everything works from youtube casting, desktop casting to browser tab casting.
The only thing that does not work is the actual initial setup of the chromecast
device because that requires connecting to the device's wifi network and the browser
cannot do that on OpenBSD so another device has to be used for that, but I guess
everyone has a smartphone nowadays :)
Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
This is required because a lot of big service vendors are misusing the User-Agent
to discriminate non-mainstream OS users. A good example is Google and Microsoft
not allowing non-mainstream OS users to use features that are NOT OS dependant,
like Google Maps full-mode or Skype web.
All of the browsers have a proper way of checking what they support so relying
on the User-Agent string is completely stupid because what works on Linux, will
99% work on other operating systems as well, since the browser supports it.
(e.g. 3d acceleration)
Instead of completely saying that we are Linux, it is enough to append Linux to
the User-Agent platform string, so people relying on the User-Agent for filtering,
statistics can still filter for OpenBSD.
Everyone can thank these service vendors for fiddling with the User-Agent in a way
that they weren't supposed to.
discussed with deraadt@
chromedriver is chrome's implementation of the WebDriver protocol, allowing
automation of chrome by an external program. This is often used by
automated testing software.
Help and OK robert@
stub implementation which caused the timezone watcher constructor and destructor
to act weird and cause a use after free abort
also patch the timezone watcher to only watch /etc/localtime as we are not
using glibc (thank god) and there are no other files to watch for timezone
change
tested with 1500 consecutive startup of chromium without getting the random
use after free
- use the proper compiler and linker in ${WRKDIR}/bin
- casting to nullptr where required (diff from espie@)
- link the character_data_generator with c++abi twice until a linker
bug is figured out