},
/**
- * Get an automatically generated random ID (stored in a session cookie)
+ * Get an automatically generated random ID (persisted in sessionStorage)
*
- * This ID is ephemeral for everyone, staying in their browser only until they close
- * their browser.
+ * This ID is ephemeral for everyone, staying in their browser only until they
+ * close their browsing session.
*
* @return {string} Random session ID
*/
sessionId: function () {
- var sessionId = mw.cookie.get( 'mwuser-sessionId' );
- if ( sessionId === null ) {
+ var sessionId = mw.storage.session.get( 'mwuser-sessionId' );
+ if ( !sessionId ) {
sessionId = mw.user.generateRandomSessionId();
- mw.cookie.set( 'mwuser-sessionId', sessionId, { expires: null } );
+ mw.storage.session.set( 'mwuser-sessionId', sessionId );
}
return sessionId;
},
result2 = mw.user.generateRandomSessionId();
assert.notEqual( result, result2, 'different when called multiple times' );
+ } );
+ QUnit.test( 'sessionId', function ( assert ) {
+ var result = mw.user.sessionId(),
+ result2 = mw.user.sessionId();
+ assert.equal( typeof result, 'string', 'type' );
+ assert.equal( $.trim( result ), result, 'no leading or trailing whitespace' );
+ assert.equal( result2, result, 'retained' );
} );
}( mediaWiki, jQuery ) );