Improve behavior of custom embed w.r.t. https
Instead of silently failing when browser policy blocks HTTP embeds over HTTPS, pre-fill the video div with an error message and attempt to salvage the link with s/http/https/g.
This commit is contained in:
parent
db56a8869d
commit
a3a9fa074e
|
@ -89,6 +89,7 @@ MediaRefresherModule.prototype.refreshGoogleDocs = function (media, cb) {
|
||||||
case "Video not found":
|
case "Video not found":
|
||||||
case "Private video":
|
case "Private video":
|
||||||
case "Google Docs error: Video has exceeded quota":
|
case "Google Docs error: Video has exceeded quota":
|
||||||
|
case "There is currently a bug with Google Drive which prevents playback of videos 1 hour long or longer.":
|
||||||
self.channel.logger.log("[mediarefresher] Google Docs refresh failed: " +
|
self.channel.logger.log("[mediarefresher] Google Docs refresh failed: " +
|
||||||
err);
|
err);
|
||||||
self.channel.activeLock.release();
|
self.channel.activeLock.release();
|
||||||
|
@ -137,6 +138,7 @@ MediaRefresherModule.prototype.initGooglePlus = function (media, cb) {
|
||||||
case "HTTP 302":
|
case "HTTP 302":
|
||||||
case "Video not found":
|
case "Video not found":
|
||||||
case "Private video":
|
case "Private video":
|
||||||
|
case "Unable to retreive duration from Google+. This might be because the video is still processing.":
|
||||||
self.channel.logger.log("[mediarefresher] Google+ refresh failed: " +
|
self.channel.logger.log("[mediarefresher] Google+ refresh failed: " +
|
||||||
err);
|
err);
|
||||||
self.channel.activeLock.release();
|
self.channel.activeLock.release();
|
||||||
|
|
|
@ -863,6 +863,29 @@ var CustomPlayer = function (data) {
|
||||||
removeOld();
|
removeOld();
|
||||||
var div = $("#ytapiplayer");
|
var div = $("#ytapiplayer");
|
||||||
div.attr("id", "");
|
div.attr("id", "");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 2014-12-10
|
||||||
|
*
|
||||||
|
* If a user is connected via HTTPS and the custom link is
|
||||||
|
* HTTP, then the embed fails due to mixed active content
|
||||||
|
* policy. Display a message indicating this.
|
||||||
|
*/
|
||||||
|
if (location.protocol.match(/^https/) &&
|
||||||
|
self.videoId.match(/http:/)) {
|
||||||
|
|
||||||
|
div.html("You are currently connected via HTTPS but " +
|
||||||
|
"the custom embed link uses non-secure HTTP. " +
|
||||||
|
"Your browser may therefore block it from loading. " +
|
||||||
|
"To fix this, either add the custom embed as a secure " +
|
||||||
|
"URL (https://...) if the source supports it, or " +
|
||||||
|
"visit this page over plain HTTP (your websocket will still " +
|
||||||
|
"use secure HTTPS for communication, just the page " +
|
||||||
|
"will load over plain HTTP).");
|
||||||
|
|
||||||
|
// Try to salvage the link
|
||||||
|
self.videoId = self.videoId.replace(/http:/g, "https:");
|
||||||
|
}
|
||||||
div.append(self.videoId);
|
div.append(self.videoId);
|
||||||
|
|
||||||
self.player = div.find("iframe");
|
self.player = div.find("iframe");
|
||||||
|
|
Loading…
Reference in a new issue