diff --git a/www/common/LessLoader.js b/www/common/LessLoader.js index 04fa68714..8846000f0 100644 --- a/www/common/LessLoader.js +++ b/www/common/LessLoader.js @@ -134,10 +134,15 @@ define([ }; module.exports.load = function (url /*:string*/, cb /*:()=>void*/) { + var btime = +new Date(); + var done = function () { + console.log("Compiling [" + url + "] took " + (+new Date() - btime) + "ms"); + cb(); + }; cacheGet(url, function (css) { if (css) { inject(css, url); - return void cb(); + return void done(); } console.log('CACHE MISS ' + url); ((/\.less([\?\#].*)?$/.test(url)) ? loadLess : loadCSS)(url, function (err, css) { @@ -145,7 +150,7 @@ define([ var output = fixAllURLs(css, url); cachePut(url, output); inject(output, url); - cb(); + done(); }); }); }; diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index dee66d69f..8ce75583c 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -1034,6 +1034,20 @@ define([ LOADING_DRIVE: common.loading.onDriveEvent.fire }; + common.hasCSSVariables = function () { + if (window.CSS && window.CSS.supports && window.CSS.supports('--a', 0)) { return true; } + // Safari lol y u always b returnin false ? + var color = 'rgb(255, 198, 0)'; + var el = document.createElement('span'); + el.style.setProperty('--color', color); + el.style.setProperty('background', 'var(--color)'); + document.body.appendChild(el); + var styles = getComputedStyle(el); + var doesSupport = (styles.backgroundColor === color); + document.body.removeChild(el); + return doesSupport; + }; + common.ready = (function () { var env = {}; var initialized = false; @@ -1070,9 +1084,12 @@ define([ if (typeof(Worker) === "undefined") { Feedback.send('NO_WEBWORKER'); } - if (typeof(ServiceWorker) === "undefined") { + if (!('serviceWorker' in navigator)) { Feedback.send('NO_SERVICEWORKER'); } + if (!common.hasCSSVariables()) { + Feedback.send('NO_CSS_VARIABLES'); + } Feedback.reportScreenDimensions(); Feedback.reportLanguage(); @@ -1144,6 +1161,7 @@ define([ var msgEv = Util.mkEvent(); var postMsg, worker; var noWorker = AppConfig.disableWorkers || false; + var noSharedWorker = false; if (localStorage.CryptPad_noWorkers) { noWorker = localStorage.CryptPad_noWorkers === '1'; console.error('WebWorker/SharedWorker state forced to ' + !noWorker); @@ -1164,8 +1182,16 @@ define([ } }; } + if (typeof(SharedWorker) !== "undefined") { + try { + new SharedWorker(''); + } catch (e) { + noSharedWorker = true; + console.log('Disabling SharedWorker because of privacy settings.'); + } + } }).nThen(function (waitFor2) { - if (!noWorker && typeof(SharedWorker) !== "undefined") { + if (!noWorker && !noSharedWorker && typeof(SharedWorker) !== "undefined") { worker = new SharedWorker('/common/outer/sharedworker.js?' + urlArgs); worker.onerror = function (e) { console.error(e.message); @@ -1184,7 +1210,7 @@ define([ window.addEventListener('beforeunload', function () { postMsg('CLOSE'); }); - } else if (false && !noWorker && 'serviceWorker' in navigator) { + } else if (false && !noWorker && !noSharedWorker && 'serviceWorker' in navigator) { var initializing = true; var stopWaiting = waitFor2(); // Call this function when we're ready