From 3e7ca51946a8e00d33c9b3151df95385eadc49a9 Mon Sep 17 00:00:00 2001 From: Jaifroid Date: Thu, 15 Aug 2019 12:33:04 +0100 Subject: [PATCH] Improve cookie detection Still not perfect: doesn't test for session-only cookies... Former-commit-id: e15897f2c8868e75b1f69f6c5542353515441261 [formerly 4ac21dd677fd3d9aa301be2396afe3277ab29807] Former-commit-id: 96a6fc0b37e7d13fd4860dd268e6d891ab87463a --- www/js/init.js | 8 +++++++- www/js/lib/cookies.js | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/www/js/init.js b/www/js/init.js index 5432bc45..210ace59 100644 --- a/www/js/init.js +++ b/www/js/init.js @@ -190,8 +190,13 @@ function getCookie(name) { function checkCookies() { // Test for cookie support var storeType = 'cookie'; - document.cookie = "kiwixCookie=working"; + document.cookie = 'kiwixCookie=working;expires=Fri, 31 Dec 9999 23:59:59 GMT'; var kiwixCookie = /kiwixCookie=working/i.test(document.cookie); + if (kiwixCookie) { + document.cookie = 'kiwixCookie=broken;expires=Fri, 31 Dec 9999 23:59:59 GMT'; + kiwixCookie = !/kiwixCookie=working/i.test(document.cookie); + } + document.cookie = 'kiwixCookie=;expires=Thu, 01 Jan 1970 00:00:00 GMT'; if (!kiwixCookie) { // Cookies appear to be blocked, so test for localStorage support var result = false; @@ -202,6 +207,7 @@ function checkCookies() { } if (result) storeType = 'local_storage'; } + console.log('Test1: storeType: ' + storeType); return storeType; } diff --git a/www/js/lib/cookies.js b/www/js/lib/cookies.js index 67652460..d3ad81b7 100644 --- a/www/js/lib/cookies.js +++ b/www/js/lib/cookies.js @@ -23,8 +23,13 @@ define([], function() { // Test for cookie support var storeType = 'cookie'; -document.cookie = "kiwixCookie=working"; +document.cookie = 'kiwixCookie=working;expires=Fri, 31 Dec 9999 23:59:59 GMT'; var kiwixCookie = /kiwixCookie=working/i.test(document.cookie); +if (kiwixCookie) { + document.cookie = 'kiwixCookie=broken;expires=Fri, 31 Dec 9999 23:59:59 GMT'; + kiwixCookie = !/kiwixCookie=working/i.test(document.cookie); +} +document.cookie = 'kiwixCookie=;expires=Thu, 01 Jan 1970 00:00:00 GMT'; if (!kiwixCookie) { // Cookies appear to be blocked, so test for localStorage support var result = false; @@ -35,6 +40,7 @@ if (!kiwixCookie) { } if (result) storeType = 'local_storage'; } +console.log('Test2: storeType: ' + storeType); var docCookies = { getItem: function (sKey) {