diff --git a/README.md b/README.md
index 2dce4d1..4b7e161 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,7 @@ Get the latest release from the [Safari Extension Gallery](https://safari-extens
* [Plex](http://www.plex.tv)
* [The Onion](http://www.theonion.com)
* [Twitch](http://www.twitch.tv)
+* [Udemy](http://www.udemy.com)
* [Vevo](http://www.vevo.com)
* [Vice](http://www.vice.com)
* [Vid.me](http://www.vid.me)
diff --git a/out/PiPer.safariextz b/out/PiPer.safariextz
index 7b39411..e6a954f 100644
Binary files a/out/PiPer.safariextz and b/out/PiPer.safariextz differ
diff --git a/src/Info.plist b/src/Info.plist
index 89d911d..e747cc0 100644
--- a/src/Info.plist
+++ b/src/Info.plist
@@ -76,6 +76,8 @@
*.theonion.com
twitch.tv
*.twitch.tv
+ udemy.com
+ *.udemy.com
vevo.com
*.vevo.com
vice.com
diff --git a/src/scripts/main.js b/src/scripts/main.js
index 8c4ad8a..8002e80 100644
--- a/src/scripts/main.js
+++ b/src/scripts/main.js
@@ -499,6 +499,28 @@ const resources = {
return e && e.querySelector('video');
},
},
+
+ 'udemy': {
+ buttonClassName: 'vjs-control vjs-button',
+ buttonDidAppear: function() {
+ document.querySelector('.vjs-fullscreen-control').addEventListener('click', function() {
+ const video = /** @type {?HTMLVideoElement} */ (currentResource.videoElement());
+ if (video) video.webkitSetPresentationMode('inline');
+ });
+ },
+ buttonParent: function() {
+ return document.querySelector('.vjs-control-bar');
+ },
+ buttonScale: 0.7,
+ buttonStyle: 'order:7',
+ captionElement: function() {
+ const e = currentResource.videoElement();
+ return /** @type {?Element} */ (e && e.parentNode.querySelector('.vjs-text-track-display'));
+ },
+ videoElement: function() {
+ return document.querySelector('video.vjs-tech');
+ },
+ },
'vevo': {
buttonClassName: 'player-control',
diff --git a/update.plist b/update.plist
index 274cb62..0aa3c77 100644
--- a/update.plist
+++ b/update.plist
@@ -10,7 +10,7 @@
CFBundleShortVersionString
0.2.0
CFBundleVersion
- 47
+ 48
Developer Identifier
BQ6Q24MF9X
URL