summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormert <mert.tumer@collabora.com>2020-06-24 19:39:32 +0300
committerAndras Timar <andras.timar@collabora.com>2020-06-26 11:33:39 +0200
commitf1038a66a3b699c20601502beb088c823057a0ed (patch)
tree4de5e606b24f3a8ab261d353be19ab1b4c7fbde2
parentBump package version to 4.2.5-1 (diff)
downloadonline-f1038a66a3b699c20601502beb088c823057a0ed.tar.gz
online-f1038a66a3b699c20601502beb088c823057a0ed.zip
Fix url errors on backgroundImage in css files for proxy
Current replacing url strings method works fine, however, it does not cover all the rules for cases like when @media or @import are used. They have a subset of their own rules which must be covered as well. Change-Id: Ib10f7cc361aea5cd3b855f64e3a64566a6c51a12 Signed-off-by: mert <mert.tumer@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97060 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--loleaflet/js/global.js35
1 files changed, 23 insertions, 12 deletions
diff --git a/loleaflet/js/global.js b/loleaflet/js/global.js
index 6a0bd23dfd..5e0007d43a 100644
--- a/loleaflet/js/global.js
+++ b/loleaflet/js/global.js
@@ -571,20 +571,16 @@
{
// re-write relative URLs in CSS - somewhat grim.
window.addEventListener('load', function() {
- var sheets = document.styleSheets;
- for (var i = 0; i < sheets.length; ++i) {
- var relBases = sheets[i].href.split('/');
- relBases.pop(); // bin last - css name.
- var replaceBase = 'url("' + relBases.join('/') + '/images/';
+ var replaceUrls = function(rules, replaceBase) {
+ if (!rules)
+ return;
- var rules;
- try {
- rules = sheets[i].cssRules || sheets[i].rules;
- } catch (err) {
- console.log('Missing CSS from ' + sheets[i].href);
- continue;
- }
for (var r = 0; r < rules.length; ++r) {
+ // check subset of rules like @media or @import
+ if (rules[r] && rules[r].type != 1) {
+ replaceUrls(rules[r].cssRules || rules[r].rules, replaceBase);
+ continue;
+ }
if (!rules[r] || !rules[r].style)
continue;
var img = rules[r].style.backgroundImage;
@@ -596,6 +592,21 @@
img.replace('url("images/', replaceBase);
}
}
+ };
+ var sheets = document.styleSheets;
+ for (var i = 0; i < sheets.length; ++i) {
+ var relBases = sheets[i].href.split('/');
+ relBases.pop(); // bin last - css name.
+ var replaceBase = 'url("' + relBases.join('/') + '/images/';
+
+ var rules;
+ try {
+ rules = sheets[i].cssRules || sheets[i].rules;
+ } catch (err) {
+ console.log('Missing CSS from ' + sheets[i].href);
+ continue;
+ }
+ replaceUrls(rules, replaceBase);
}
}, false);
}