From bf5c2634666adf942b14e9ca7634b154774497ee Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Mon, 27 Feb 2017 14:21:14 -0800 Subject: [PATCH] mediawiki.action.edit: Move collapsibleFooter cookies to localStorage The old cookies will become unused and expire automatically. The new localStorage values won't have any expiry as localStorage doesn't support it. We could provide ad-hoc expiry, but it wouldn't be useful. It doesn't save space as it would only evict when visiting the edit page (at which point the value is relevant again). Which means it also doesn't help any privacy perspective (the value will be readable for an undefined time until then, though never shared over the network). If we want it to auto-expire, sessionStorage could be considered. Though that means the value is reset everytime the user restarts their browser. Bug: T110353 Change-Id: Ie9a4612de55e6aaf155a2179643e9b17f331e897 --- .../mediawiki.action.edit.collapsibleFooter.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js b/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js index 011f9c55ef..2506ffea72 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js @@ -2,27 +2,29 @@ var collapsibleLists, handleOne; // Collapsible lists of categories and templates + // If changing or removing a storeKey, ensure there is a strategy for old keys. + // E.g. detect existence via requestIdleCallback and remove. (T121646) collapsibleLists = [ { listSel: '.templatesUsed ul', togglerSel: '.mw-templatesUsedExplanation', - cookieName: 'templates-used-list' + storeKey: 'mwedit-state-templatesUsed' }, { listSel: '.hiddencats ul', togglerSel: '.mw-hiddenCategoriesExplanation', - cookieName: 'hidden-categories-list' + storeKey: 'mwedit-state-hiddenCategories' }, { listSel: '.preview-limit-report-wrapper', togglerSel: '.mw-limitReportExplanation', - cookieName: 'preview-limit-report' + storeKey: 'mwedit-state-limitReport' } ]; - handleOne = function ( $list, $toggler, cookieName ) { + handleOne = function ( $list, $toggler, storeKey ) { // Collapsed by default - var isCollapsed = mw.cookie.get( cookieName ) !== 'expanded'; + var isCollapsed = mw.storage.get( storeKey ) !== 'expanded'; // Style the toggler with an arrow icon and add a tabIndex and a role for accessibility $toggler.addClass( 'mw-editfooter-toggler' ).prop( 'tabIndex', 0 ).attr( 'role', 'button' ); @@ -39,12 +41,12 @@ $list.on( 'beforeExpand.mw-collapsible', function () { $toggler.removeClass( 'mw-icon-arrow-collapsed' ).addClass( 'mw-icon-arrow-expanded' ); - mw.cookie.set( cookieName, 'expanded' ); + mw.storage.set( storeKey, 'expanded' ); } ); $list.on( 'beforeCollapse.mw-collapsible', function () { $toggler.removeClass( 'mw-icon-arrow-expanded' ).addClass( 'mw-icon-arrow-collapsed' ); - mw.cookie.set( cookieName, 'collapsed' ); + mw.storage.set( storeKey, 'collapsed' ); } ); }; @@ -55,7 +57,7 @@ handleOne( $editForm.find( collapsibleLists[ i ].listSel ), $editForm.find( collapsibleLists[ i ].togglerSel ), - collapsibleLists[ i ].cookieName + collapsibleLists[ i ].storeKey ); } } ); -- 2.20.1