MOBILE-3645 ios: Fix embedded iframes cookies in iOS

main
Dani Palou 2021-03-17 14:25:28 +01:00
parent 45a23eff88
commit 2014d28b90
1 changed files with 15 additions and 6 deletions

View File

@ -482,6 +482,7 @@ export class CoreFormatTextDirective implements OnChanges {
const stopClicksElements = Array.from(div.querySelectorAll('button,input,select,textarea'));
const frames = Array.from(div.querySelectorAll(CoreIframeUtilsProvider.FRAME_TAGS.join(',').replace(/iframe,?/, '')));
const svgImages = Array.from(div.querySelectorAll('image'));
const promises: Promise<void>[] = [];
// Walk through the content to find the links and add our directive to it.
// Important: We need to look for links first because in 'img' we add new links without core-link.
@ -520,7 +521,7 @@ export class CoreFormatTextDirective implements OnChanges {
});
iframes.forEach((iframe) => {
this.treatIframe(iframe, site, canTreatVimeo);
promises.push(this.treatIframe(iframe, site, canTreatVimeo));
});
svgImages.forEach((image) => {
@ -570,8 +571,10 @@ export class CoreFormatTextDirective implements OnChanges {
}));
// Automatically reject the promise after 5 seconds to prevent blocking the user forever.
await CoreUtils.ignoreErrors(CoreUtils.timeoutPromise(promise, 5000));
promises.push(CoreUtils.ignoreErrors(CoreUtils.timeoutPromise(promise, 5000)));
}
await Promise.all(promises);
}
/**
@ -679,6 +682,7 @@ export class CoreFormatTextDirective implements OnChanges {
if (currentSite?.containsUrl(src)) {
// URL points to current site, try to use auto-login.
const finalUrl = await currentSite.getAutoLoginUrl(src, false);
await CoreIframeUtils.fixIframeCookies(finalUrl);
iframe.src = finalUrl;
CoreIframeUtils.treatFrame(iframe, false);
@ -686,6 +690,8 @@ export class CoreFormatTextDirective implements OnChanges {
return;
}
await CoreIframeUtils.fixIframeCookies(src);
if (site && src && canTreatVimeo) {
// Check if it's a Vimeo video. If it is, use the wsplayer script instead to make restricted videos work.
const matches = iframe.src.match(/https?:\/\/player\.vimeo\.com\/video\/([0-9]+)/);
@ -694,8 +700,8 @@ export class CoreFormatTextDirective implements OnChanges {
matches[1] + '&token=' + site.getToken();
// Width and height are mandatory, we need to calculate them.
let width;
let height;
let width: string | number;
let height: string | number;
if (iframe.width) {
width = iframe.width;
@ -719,13 +725,16 @@ export class CoreFormatTextDirective implements OnChanges {
if (site && !site.isVersionGreaterEqualThan('3.7')) {
newUrl += '&width=' + width + '&height=' + height;
}
await CoreIframeUtils.fixIframeCookies(src);
iframe.src = newUrl;
if (!iframe.width) {
iframe.width = width;
iframe.width = String(width);
}
if (!iframe.height) {
iframe.height = height;
iframe.height = String(height);
}
// Do the iframe responsive.